Изучаю USB HID класс. Обмен информацией работает - посылаю и принимаю репорты через Interrupt transfer, работают SET_FEATURE и GET_FEATURE, научился писишным софтом перезапускать зависший usb порт и определять факт зависания. Однако в литературе я нигде не нашел рекомендаций по организации взаимодействия между прикладным софтом PC и девайсом. В литературе и демо-проектах рассматривается джойстики мышки и светодиоды (зажечь/погасить по команда PC). Нигде не рассматривается как строить взаимодействие со сложными устройствами генерирующие двунаправленные потоки данных близкие к предельным для HID устройств (например PC<->PIC18F2550_HID_class<->СС1100). Мои эксперименты показывают что использование простейшего взаимодействия типа "запрос PC - ответ HID девайса" получится неэффективным. Несинхронизированный поточный обмен работает минимум в 2 раза быстрее, но требуется буферизация а в пике с рамой напряженка. Также есть и более конкретные вопросы: * имеет ли смысл использовать feature репорты * нужно ли поддерживать запись репортов через control transfer, ведь это нужно только win98 не-SE. которая не поддерживает out interrupt transfer.
|