Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: обмен строками по USB
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
dimon_rub
Есть необходимость обмена строками по USB между STM32F103 и ПК. Поднимается HID устройство. Кто что посоветует. Может кто то сталкивался. Побитовый обмен работает на ура но при объявлении в REPORT более длинного массима скажем 63 байта ничего не получается. Смотрел разную документацию - пишут для лампочек, кнопок. В мыше есть поля смещения по осям. где LOGICAL_MAXIMUM = 255 попытался прописать под мышь с массивом таких данных (63). Ни как.
В общем совсем запутался.
ПОЖАЛУЙСТА укажите куда и что.
СПАСИБО!!!
ataradov
Пример проекта для Atmel SAM D21, но суть та же, по крайней мере дескрипторы можно взять оттуда - https://github.com/ataradov/dgw/tree/master/embedded
uriy
Если вам нужно делать обмен данными то зачем вам HID?
Я делал обмен булками вот по этой статье http://we.easyelectronics.ru/STM32/stm32-i...-dlya-keil.html
Она в двух частях.
Софт под винду писал на C# использовал LibUsbDotNet.
Все сразу заработало. Надо отметить что на C# я пишу "раз в году" и только простенькие программы для конфигурации железок.
ataradov
QUOTE (uriy @ Jan 19 2017, 22:59) *
Если вам нужно делать обмен данными то зачем вам HID?
HID работает без всяких драйверов и INF файлов.
YAM
Код
  0x06, 0x00, 0xFF,       //     Usage Page (Vendor-Defined 1)
  0x09, 0x01,             //     Usage (Vendor-Defined 1)
  0xA1, 0x01,             //     Collection (Application)
  0x15, 0x00,             //         Logical Minimum (0)
  0x26, 0xFF, 0x00,       //         Logical Maximum (255)
  0x75, 0x08,             //         Report Size (8)
  0x95, USB_PACK_MAX,     //         Report Count (69)
  0x09, 0x00,             //         Usage (Undefined)
  0xB2, 0x02, 0x01,       //         Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Buf)
  0xC0                    //     End Collection

У меня например USB_PACK_MAX = 69.
Обмен через GET_REPORT и SET_REPORT и HID_FEATURE.
В дескрипторе конфига конечная точка описана как interrupt с размером пакета 8 байт.
Для обмена на компе используются вызовы из HID.DLL HidD_GetFeature и HidD_SetFeature.
leocat
Цитата(ataradov @ Jan 20 2017, 05:14) *
HID работает без всяких драйверов и INF файлов.

Да. Только если VID, PID неизвестны системе, то каждый раз будет обнаруживаться неизвестное устройство. И под линуксом не очень удобная работа получается...
YAM
Цитата(leocat @ Jan 22 2017, 10:33) *
Да. Только если VID, PID неизвестны системе, то каждый раз будет обнаруживаться неизвестное устройство. И под линуксом не очень удобная работа получается...

С какого бодуна у Вас подобная информация?
ataradov
QUOTE (leocat @ Jan 22 2017, 01:33) *
Да. Только если VID, PID неизвестны системе, то каждый раз будет обнаруживаться неизвестное устройство.
Не будет. Все работает из коробки. Я уже давно использую HID как самый удобный способ обмена информацией со всеми ОС без драйверов и изврата.
mantech
Цитата(leocat @ Jan 22 2017, 10:33) *
Да. Только если VID, PID неизвестны системе, то каждый раз будет обнаруживаться неизвестное устройство. И под линуксом не очень удобная работа получается...

Если устройство неизвестное, то в диспетчере устройств так и будет написано - "HID совместимое устройство".
Если VID и PID не меняются при каждом включении, то ничего переопределяться не будет, только если воткнете в другой порт, но это уже маразм винды, причем не только для HID.
Genadi Zawidowski
Если пропишете непустой серийник, ничего не переопознается (проверено на CDC).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.