Перейти к содержанию
    

Управление вольтметром В7-78/1 по USB

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

 

Значит так, все по порядку.

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

 

Но! Никакой реакции со стороны вольтметра.. Увы.

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

 

В расстерянности и с уважением...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Можно же попробовать поуправлять, поставив на компьютер VISA (NI).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно же попробовать поуправлять, поставив на компьютер VISA (NI).

Наверное. Думаю - все даже будет работать. И что это даст? USB-сниффера у меня нет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверное. Думаю - все даже будет работать. И что это даст? USB-сниффера у меня нет...

у вас же вроде линукс система - нет ли там чего подходящего?

вот тут копали с таким же но по rs232

http://forum.prist.ru/viewtopic.php?f=6&am...7a&start=15

ну и просто пробежаться по "scpi linux"..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у вас же вроде линукс система - нет ли там чего подходящего?

вот тут копали с таким же но по 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

Ушел в процесс изучения...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...