реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Управление вольтметром В7-78/1 по USB, Проблемы передачи управляющих команд из/под LIBUSB
Вовка_Бызов
сообщение May 18 2016, 11:50
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Добрый всем день!

Значит так, все по порядку.
В качестве хоста имеем: процессор 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 содержала правильное количество переданных байт.

Но! Никакой реакции со стороны вольтметра.. Увы.
Возможно - надо как-то что-то предварительно конфигурировать. чтобы вольтметр услышал мой голос sm.gif Не знаю. Очень рассчитываю на помощь клуба.

В расстерянности и с уважением...
Go to the top of the page
 
+Quote Post
Tanya
сообщение May 18 2016, 12:30
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(Вовка_Бызов @ May 18 2016, 14:50) *
Добрый всем день!


Можно же попробовать поуправлять, поставив на компьютер VISA (NI).
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение May 18 2016, 12:39
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Цитата(Tanya @ May 18 2016, 15:30) *
Можно же попробовать поуправлять, поставив на компьютер VISA (NI).

Наверное. Думаю - все даже будет работать. И что это даст? USB-сниффера у меня нет...
Go to the top of the page
 
+Quote Post
Jury093
сообщение May 18 2016, 12:47
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(Вовка_Бызов @ May 18 2016, 15:39) *
Наверное. Думаю - все даже будет работать. И что это даст? USB-сниффера у меня нет...

у вас же вроде линукс система - нет ли там чего подходящего?
вот тут копали с таким же но по rs232
http://forum.prist.ru/viewtopic.php?f=6&am...7a&start=15
ну и просто пробежаться по "scpi linux"..
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение May 18 2016, 13:03
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Цитата(Jury093 @ May 18 2016, 15:47) *
у вас же вроде линукс система - нет ли там чего подходящего?
вот тут копали с таким же но по 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
Ушел в процесс изучения...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 17:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016