Некоторые вещи для рассмотрения:
Это устройство с высокой пропускной способностью, такое как камера или регистратор данных, или устройство с низкой пропускной способностью?
При низкой пропускной способности я настоятельно рекомендую сделать ваше устройство USB HID класса . Это класс устройств, который поддерживает клавиатуры, мыши, джойстики, геймпады и тому подобное. Относительно легко отправить данные практически в любое приложение, и, как правило, не требуется писать собственный драйвер устройства на стороне хоста. Одна эта последняя функция часто стоит затрат на легкое преобразование ваших данных в форму, принятую классом HID. Все настольные операционные системы, использующие USB, могут использовать устройства HID, поэтому вы легко получаете широкую совместимость.
Для высокой пропускной способности вам все равно будет лучше обслуживаться, если ваше устройство соответствует одному из хорошо зарекомендовавших себя классов устройств, где можно использовать драйвер стандартного устройства на хост-конце провода. Один из подходов, который часто работает, заключается в использовании класса Mass Storage и эмуляции диска, содержащего один файл. Затем ваше устройство просто монтируется на хосте, как на диске, и вы общаетесь, читая и записывая один (или несколько) файл.
Я ожидаю, что будет достаточно примеров кода для любого серьезного набора микросхем USB-устройств, в котором реализованы HID и Mass Storage или оба.
Если вам действительно нужно пройтись по полностью настраиваемой территории устройства, то вам нужно будет создавать драйверы устройств для каждой хост-платформы. Библиотека с открытым исходным кодом libusb может помочь, если ее лицензия совместима с вашим проектом. В новых версиях Windows также есть способы разработки драйверов USB, которые работают в пользовательском режиме с использованием Framework драйвера пользовательского режима , которые обладают многими из тех же преимуществ libusb, но не переносимы на платформе Windows. 1019 *
Последнее пользовательское устройство, над которым я работал, было основано на устройстве Cypress, и мы смогли отправить их драйвер и связанную DLL для облегчения создания кода нашего приложения. Я не знаю с манжеты, есть ли какой-либо эквивалент для вашего устройства.
Для действительно хорошего обзора я рекомендую FAQ по USB и последнее издание книги Яна USB Complete .