09.02.2021, 13:49
|
|
Гражданин KAZUS.RU
Регистрация: 21.02.2007
Сообщений: 551
Сказал спасибо: 37
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от pambaru
|
Тогда Sleep вообще убрать, зачем он там нужен.
И стабильность будет определяться только железом - частотой отправки пакетов.
|
Без слипа поток начинает нехило грузить систему ... Все ресурсы на себя тянет. Thread.Sleep(0) вроде как советуют МС но оно не спасает.
|
|
|
|
09.02.2021, 14:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,447
Сказал спасибо: 96
Сказали Спасибо 318 раз(а) в 233 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Код:
|
0x06, 0x00, 0xFF, // USAGE_PAGE (Vendor Defined Page 1)
0x09, 0x01, // USAGE (Vendor Usage 1)
0xA1, 0x01, // COLLECTION (Application)
0x09, 0x01, // USAGE (Vendor Usage 1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x20, // REPORT_COUNT
0x81, 0x00, // INPUT
0x09, 0x01, // USAGE (Vendor Usage 1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x20, // REPORT_COUNT
0x91, 0x00, // OUTPUT
0xC0 // END_COLLECTION |
Для двух точек (IN и OUT) по 32 байта. Без FEATURE.
Последний раз редактировалось Godzilla82; 09.02.2021 в 14:59.
|
|
|
Сказали "Спасибо" Godzilla82
|
|
|
09.02.2021, 15:26
|
|
Гражданин KAZUS.RU
Регистрация: 21.02.2007
Сообщений: 551
Сказал спасибо: 37
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от Godzilla82
|
Код:
|
0x06, 0x00, 0xFF, // USAGE_PAGE (Vendor Defined Page 1)
0x09, 0x01, // USAGE (Vendor Usage 1)
0xA1, 0x01, // COLLECTION (Application)
0x09, 0x01, // USAGE (Vendor Usage 1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x20, // REPORT_COUNT
0x81, 0x00, // INPUT
0x09, 0x01, // USAGE (Vendor Usage 1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x20, // REPORT_COUNT
0x91, 0x00, // OUTPUT
0xC0 // END_COLLECTION |
Для двух точек (IN и OUT) по 32 байта. Без FEATURE.
|
Прикольно. Спасибо. И идентификатор репорта не нужен будет??
|
|
|
|
09.02.2021, 16:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,447
Сказал спасибо: 96
Сказали Спасибо 318 раз(а) в 233 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от worldmasters
|
Прикольно. Спасибо. И идентификатор репорта не нужен будет??
|
Ну идентификатор используется для FEATURE репортов.
Можно работать только с ними (без IN и OUT). Типа запрос-ответ. Сколько раз когда надо - столько раз и запросили - столько раз прибор и ответил. Ни разу не надо - ни разу из прибора ничего передавать не придётся.
А ваш репорт странный. Минимум 0 - максимум 1. Это для байта-то?
Да и максимум кодируется 3 байтами, а не двумя, как у вас.
Для FEATURE репорта у вас даже размер не указан.
Минимум и максимум надо указать для каждого репорта (IN, OUT, FEATURE).
Да и сама константа INPUT (OUTPUT) - это 0x81, 0x00 (0x91, 0x00), а у вас 0x81, 0x82 (0x91, 0x82).
|
|
|
|
09.02.2021, 16:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от worldmasters
|
Без слипа поток начинает нехило грузить систему ...
|
Очень странно. При синхронном чтении не должен. Он все равно в функции чтения висеть в функции будет бОльшую часть времени. Система это разруливает.
P.S. Решил проверить.
Подключил HID-девайс, читаю в бесконечном цикле через ReadFile синхронно (параметр lpOverlapped = 0).
Загрузка ЦП - 0%.
|
|
|
|
09.02.2021, 16:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Ааа, вы еще через ReadReport читаете? Так это ж асинхронная процедура вроде, она через CONTROL ENDPOINT идет, насколько помню. Вам нужно через in-out endpoint вести обмен, и пользоваться readfile и writefile. Тогда и никаких слипов не нужно.
|
|
|
|
09.02.2021, 18:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,504
Сказал спасибо: 401
Сказали Спасибо 2,217 раз(а) в 1,315 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
А вы желаете именно low-speed, который на 1,5 Мбит/с? У вас длинный юсб-кабель и на full-speed сбоит?
Потому что на LS, если мне не изменяет память, максимум 8 байт полезной нагрузки впакете. А вы хотите 32 байта.
(напомню, что режим LS задается резистором подтяжки на DM, а FS - резистором на DP). И я не уверен, может ли кубовская библиотека нормально работать в LS.
Ну и у вас данные нужны 200 раз в секунду, то есть через каждые 5 мс. А вы и интервал опроса неправильно поставили - 2 мс. 1/200 = 0005.
Кстати, если задача передавать данные, то почему именно HID, а не CDC в виде Virtual ComPort?
Последний раз редактировалось NewWriter; 09.02.2021 в 22:39.
|
|
|
|
10.02.2021, 09:21
|
|
Гражданин KAZUS.RU
Регистрация: 21.02.2007
Сообщений: 551
Сказал спасибо: 37
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от pambaru
|
Очень странно.
|
Да на самом деле не странно. Но видимо да, задержка на ожидание чтения должна будет сделать свое дело. Попробую.
Сообщение от pambaru
|
пользоваться readfile и writefile
|
Так других способов то и нету.
Сообщение от NewWriter
|
А вы желаете именно low-speed, который на 1,5 Мбит/с?
|
В данном случае подразумевается низкая скорость работы а не режим. И STM32 в LS режиме не работает. По крайней мере к кубе этот режим не выставить.
Сообщение от NewWriter
|
А вы и интервал опроса неправильно поставили - 2 мс. 1/200 = 0005.
|
Это я уже понял. Поправлю.
Сообщение от NewWriter
|
Кстати, если задача передавать данные, то почему именно HID, а не CDC в виде Virtual ComPort?
|
Какая принципиальная разница то?? Вообще основная причина это уровень пользователей. Нужно ставить руками драйвер порта, потом пользователи могут чего то там натворить с портами и вызвать кучу проблем с оборудованием.
|
|
|
|
10.02.2021, 11:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от worldmasters
|
Так других способов то и нету.
|
Можно еще через GetInputReport, GetFeature. Вполне себе можно передавать данные, я так делал. Но этот способ, по моему, как раз и будет загружать процессор. Но надо проверить, пока некогда.
Сообщение от worldmasters
|
Да на самом деле не странно. Но видимо да, задержка на ожидание чтения должна будет сделать свое дело. Попробую.
|
Возможно, чтобы не система не грузилась при ожидании, тип читаемой Endpoint должен быть interrupt. Во всяком случае, я тестирую на interrupt - точно не грузит систему без всяких sleep.
|
|
|
|
10.02.2021, 15:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,447
Сказал спасибо: 96
Сказали Спасибо 318 раз(а) в 233 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Ну для чтения данных с устройства есть GetReport с параметром (INPUT, OUTPUT, FEATURE).
Для записи данных в устройство - SetReport с параметром (INPUT, OUTPUT, FEATURE).
Но это работа в режиме запрос-ответ. Входных и выходных конечных точек для них не нужно.
Входные и выходные конечные точки - это ReadFile и WriteFile.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:37.
|
|