Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по AVRUSB и SERIAL_NUM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Spider
Всем привет!

Использую AVRUSB от obdev для связи своих устрйоств с компом. Пока всё было хорошо, пока было 1 устройство. Теперь у меня 2 одинаковых устройства и как их отличать друг от дурга в системе я не знаю. Точнее пришла мысль различать их по серийному номеру. Для чего в недрах драйвера было обнаружено поле USB_CFG_SERIAL_NUMBER. Следующий шаг был объявить
Код
#define USB_CFG_SERIAL_NUMBER_LEN  4
#define USB_CFG_SERIAL_NUMBER 'D','0','0','1'

И попробовать вставить это дело в USB. Первое что замечено, что устройство установилось как НОВОЕ. Но как теперь добраться до Serial я не знаю. lsusb -v оно есть, но серийника у него нет :\ Что я не так делаю?
GDI
Вот проверил у себя, это часть ответа от стандартного usb-rs232 конвертера
Код
Bus 001 Device 003: ID 0711:0230 Magic Control Technology Corp. MCT-232 Serial Port
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        16
  idVendor           0x0711 Magic Control Technology Corp.
  idProduct          0x0230 MCT-232 Serial Port
  bcdDevice            1.03
  iManufacturer           1 USB-RS232 Interface Converter
  iProduct                2
  iSerial                 3 056527
  bNumConfigurations      1
откуда видно что iSerial имеет длину 3 байта - может в этом у вас проблема?
И еще, вы уверены что правильно задали переменную USB_CFG_SERIAL_NUMBER? Её именно так надо задавать, а не как строку символов в общих кавычках?
galjoen
Цитата(GDI @ Jun 11 2009, 10:56) *
Вот проверил у себя, это часть ответа от стандартного usb-rs232 конвертера
Код
Bus 001 Device 003: ID 0711:0230 Magic Control Technology Corp. MCT-232 Serial Port
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        16
  idVendor           0x0711 Magic Control Technology Corp.
  idProduct          0x0230 MCT-232 Serial Port
  bcdDevice            1.03
  iManufacturer           1 USB-RS232 Interface Converter
  iProduct                2
  iSerial                 3 056527
  bNumConfigurations      1
откуда видно что iSerial имеет длину 3 байта - может в этом у вас проблема?
И еще, вы уверены что правильно задали переменную USB_CFG_SERIAL_NUMBER? Её именно так надо задавать, а не как строку символов в общих кавычках?

iSerial это индекс строкового дескриптора, описывающего серийный номер. В данном случае = 3. Сам серийный номер выдаётся по запросу от хоста GET_DESCRIPTOR с соотв-м индексом и типом=стринг=3 в поле wValue. В данном случае wValue будет = 0x0303. В нулевом байте стринг дескриптора д.б. его длина в байтах. В первом - тип (3=стринг). Дальше в уникодах (по 2 байта на символ) данные. Стандарт - 12 символов 0..F. Пример валидного сериального стринга: 0x1A 0x03 0x30 0x00 0x31 0x00 0x32 0x00 0x33 0x00 0x34 0x00 0x35 0x00 0x36 0x00 0x37 0x00 0x38 0x00 0x39 0x00 0x41 0x00 0x42 0x00 (т.е. 0123456789AB). Видимо так нужно задавать USB_CFG_SERIAL_NUMBER...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.