vovka1960 0 18 мая, 2016 Опубликовано 18 мая, 2016 · Жалоба Добрый всем день! Значит так, все по порядку. В качестве хоста имеем: процессор AR9331 c с подключенным к нему USB-хабом на 4 входа от TI (TUSB2044). На хосте установлена OpenWRT с поддержкой LIBUSB (на ней и пишется управление устройствами USB). С другой стороны - вольтметр В7-78/1 с USB управлением с поддержкой SCPI (текстовый протокол). При подключении к хабу устройство уверенно появляется в списке (наше устройство - 164e:0dad): Bus 001 Device 002: ID 0451:2046 Texas Instruments, Inc. TUSB2046 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 005: ID 164e:0dad Bus 001 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC У устройства - один интерфейс и 3 end-point: root@BlackSwift:/new_project# lsusb -s 001:005 -v Bus 001 Device 005: ID 164e:0dad Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 16 idVendor 0x164e idProduct 0x0dad bcdDevice 1.00 iManufacturer 2 PICOTEST CORP iProduct 3 Voltmeter V7-78/1 iSerial 1 TW00024605 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 39 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x60 (Missing must-be-set bit!) Self Powered Remote Wakeup MaxPower 2mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 254 Application Specific Interface bInterfaceSubClass 3 Test and Measurement bInterfaceProtocol 1 TMC iInterface 4 (error) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0010 1x 16 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 1 Device Status: 0x0001 Self Powered Далее - привожу последовательность (условную, ибо команды разбросаны по классу управления) открытия устройства: libusb_init libusb_set_debug libusb_get_device_list/libusb_open_device_with_vid_pid libusb_set_configuration - добавлено от безысходности в поиске проблем libusb_claim_interface / 0 в качестве подтверждения, что устройство открыто - еще пара команд от безысходности libusb_get_string_descriptor_ascii (dev, 2, manufacturer, 256); libusb_get_string_descriptor_ascii (dev, 3, product, 256); Ну и под конец libusb_bulk_transfer (dev, snd_t->endpoint, buff, buff_size, &actual, 10000); // endpoint - 0x02 Команды передавались разные SYSTEM:BEEPER\n READ?\n DISPLAY:TEXT \'ABCD\'\n В качестве buff_size использовалась длина команды, длина буфера bulk (64), снова - длина команды с добавлением еще одного libusb_bulk_transfer с длиной 0. Все команды (в том числе - и libusb_bulk_transfer) заканчивались без ошибок. Actual содержала правильное количество переданных байт. Но! Никакой реакции со стороны вольтметра.. Увы. Возможно - надо как-то что-то предварительно конфигурировать. чтобы вольтметр услышал мой голос :) Не знаю. Очень рассчитываю на помощь клуба. В расстерянности и с уважением... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 18 мая, 2016 Опубликовано 18 мая, 2016 · Жалоба Добрый всем день! Можно же попробовать поуправлять, поставив на компьютер VISA (NI). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vovka1960 0 18 мая, 2016 Опубликовано 18 мая, 2016 · Жалоба Можно же попробовать поуправлять, поставив на компьютер VISA (NI). Наверное. Думаю - все даже будет работать. И что это даст? USB-сниффера у меня нет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 18 мая, 2016 Опубликовано 18 мая, 2016 · Жалоба Наверное. Думаю - все даже будет работать. И что это даст? USB-сниффера у меня нет... у вас же вроде линукс система - нет ли там чего подходящего? вот тут копали с таким же но по rs232 http://forum.prist.ru/viewtopic.php?f=6&am...7a&start=15 ну и просто пробежаться по "scpi linux".. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vovka1960 0 18 мая, 2016 Опубликовано 18 мая, 2016 · Жалоба у вас же вроде линукс система - нет ли там чего подходящего? вот тут копали с таким же но по rs232 http://forum.prist.ru/viewtopic.php?f=6&am...7a&start=15 ну и просто пробежаться по "scpi linux".. Проблема (как я ее себе вижу) не в приборе или его управляемости. RS-232 пропускает команды в чистом виде. И - наверняка, они будут работать. У меня же - USB. Что там стоит в качестве моста - неизвестно. Вот, кстати, попробую задать вопрос производителям. Если, например, стоит что-то типа EHCI - то там перед началом работы надо мост сконфигурировать.. Кстати - тот же HID (CP210x) требует конфигурирования. Вот и вопрос. Надо что-то сказать пакетом control? Или - все же я что-то не так делаю.. Пока - в раздумье. Щас буду писать письмо авторам вольтметра. Добавлено позжее.. Ага. А вот и информация к раздумью. У вольтметра в качестве USB стоит некий USBTMC. Появилось новое ключевое слово для поиска... Добавлено еще позжее... А вот и первый интересный пример для изучения.. USBTMC & USBLIB Ушел в процесс изучения... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться