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

 
 
 
Reply to this topicStart new topic
> обмен строками по USB
dimon_rub
сообщение Jan 19 2017, 22:33
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-09-16
Пользователь №: 93 282



Есть необходимость обмена строками по USB между STM32F103 и ПК. Поднимается HID устройство. Кто что посоветует. Может кто то сталкивался. Побитовый обмен работает на ура но при объявлении в REPORT более длинного массима скажем 63 байта ничего не получается. Смотрел разную документацию - пишут для лампочек, кнопок. В мыше есть поля смещения по осям. где LOGICAL_MAXIMUM = 255 попытался прописать под мышь с массивом таких данных (63). Ни как.
В общем совсем запутался.
ПОЖАЛУЙСТА укажите куда и что.
СПАСИБО!!!
Go to the top of the page
 
+Quote Post
ataradov
сообщение Jan 20 2017, 00:53
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Пример проекта для Atmel SAM D21, но суть та же, по крайней мере дескрипторы можно взять оттуда - https://github.com/ataradov/dgw/tree/master/embedded
Go to the top of the page
 
+Quote Post
uriy
сообщение Jan 20 2017, 04:59
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Если вам нужно делать обмен данными то зачем вам HID?
Я делал обмен булками вот по этой статье http://we.easyelectronics.ru/STM32/stm32-i...-dlya-keil.html
Она в двух частях.
Софт под винду писал на C# использовал LibUsbDotNet.
Все сразу заработало. Надо отметить что на C# я пишу "раз в году" и только простенькие программы для конфигурации железок.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Jan 20 2017, 05:14
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (uriy @ Jan 19 2017, 22:59) *
Если вам нужно делать обмен данными то зачем вам HID?
HID работает без всяких драйверов и INF файлов.
Go to the top of the page
 
+Quote Post
YAM
сообщение Jan 20 2017, 08:04
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 7-07-04
Из: Ukraine
Пользователь №: 291



Код
  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.


--------------------
Go to the top of the page
 
+Quote Post
leocat
сообщение Jan 22 2017, 07:33
Сообщение #6


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

Группа: Участник
Сообщений: 109
Регистрация: 12-10-16
Пользователь №: 93 727



Цитата(ataradov @ Jan 20 2017, 05:14) *
HID работает без всяких драйверов и INF файлов.

Да. Только если VID, PID неизвестны системе, то каждый раз будет обнаруживаться неизвестное устройство. И под линуксом не очень удобная работа получается...
Go to the top of the page
 
+Quote Post
YAM
сообщение Jan 22 2017, 12:42
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 7-07-04
Из: Ukraine
Пользователь №: 291



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

С какого бодуна у Вас подобная информация?


--------------------
Go to the top of the page
 
+Quote Post
ataradov
сообщение Jan 22 2017, 19:36
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (leocat @ Jan 22 2017, 01:33) *
Да. Только если VID, PID неизвестны системе, то каждый раз будет обнаруживаться неизвестное устройство.
Не будет. Все работает из коробки. Я уже давно использую HID как самый удобный способ обмена информацией со всеми ОС без драйверов и изврата.
Go to the top of the page
 
+Quote Post
mantech
сообщение Jan 22 2017, 20:16
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



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

Если устройство неизвестное, то в диспетчере устройств так и будет написано - "HID совместимое устройство".
Если VID и PID не меняются при каждом включении, то ничего переопределяться не будет, только если воткнете в другой порт, но это уже маразм винды, причем не только для HID.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jan 22 2017, 21:46
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Если пропишете непустой серийник, ничего не переопознается (проверено на CDC).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 13th August 2025 - 21:32
Рейтинг@Mail.ru


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