Подтвердить что ты не робот

Программирование на С++ USB

Я новичок в программировании (особенно USB), поэтому, пожалуйста, несите меня и мои вопросы. Я использую С++, и мне нужно отправить/получить некоторые данные (байтовый массив) в/из порта USB на микропроцессорной плате.

Теперь я уже программировал несколько последовательных портов, и я знаю, что для последовательного порта вам нужно открыть порт, настроить, выполнить i/o и, наконец, закрыть порт. Я предполагаю использовать USB-порт, это не так просто, как то, что я упомянул выше.

Я знаю, что хочу использовать стандартные драйверы Microsoft и внедрять стандартные команды ввода-вывода Windows для выполнения этого, так как считаю, что для микропроцессорной платы для меня нет драйверов.

Если кто-то может указать мне в правильном направлении в отношении шагов, необходимых для "разговоров" с USB-портом (открыть, настроить, ввод-вывод) с помощью стандартных команд Windows IO, я бы очень и очень признателен. Спасибо вам большое!

4b9b3361

Ответ 1

USB в двух словах - отличное фоновое чтение.

Для универсального USB-модуля попробуйте LibUSB, который включает в себя некоторые примеры общения со стандартными устройствами. LibUSB-Win32 - это порт окон этой библиотеки.

Вы правы, но это не так просто, как порт RS232.

Какой микропроцессор вы используете? Он поставляется с любым USB-оборудованием или вы пытаетесь реализовать все это в программном обеспечении (не то, что я бы рекомендовал даже созерцать!). Многие микропроцессоры поставляются с образцами кода, которые могут эмулировать простые USB-устройства HID, такие как клавиатуры/мыши и т.д., Которые вы можете использовать в качестве отправной точки. В противном случае, возможно, несколько готовых вариантов, которые сэкономит вам много головных болей: -)

Ответ 2

Найдите микросхему USB, используемую на микропроцессорной плате, например. Ftdi, Cypress и т.д. Эти производители поставляют драйверы, библиотеки и примеры программ для коммуникаций, это самый простой способ.

Нет стандартных драйверов, если ваша плата не настроена как HID-устройство, однако, если вы используете Windows, Microsoft предоставляет WinUSB.sys 'generic' driver, который может или не может удовлетворить ваши потребности (он не поддерживает изохронные передачи).

Ответ 3

Посредством аппаратного программирования вы имеете в виду, что будете программировать микроконтроллер? Если это так, вы не будете использовать "стандартные драйверы окон" или что-то в этом роде.

Стандарт USB очень толстый. Проверьте здесь

Это очень интересная тема, и я рекомендую найти USB-версии, уже созданные для вашего микроконтроллера. (которые мы можем найти, если вы дали нам больше информации)

Ответ 4

Если вы пишете драйвер для USB-устройства, которое будет подключаться. Если вы знаете тип чипа с USB-входом на плате, драйвер будет для этого устройства.

Возможно, для этого чипа может быть драйвер, если это STM или может быть API, который поможет разработать драйверы для него. Вероятно, это будет настраиваемое устройство, но вы должны просмотреть типы устройств, чтобы увидеть, существует ли существующий тип, соответствующий вашему устройству. Если это так, может быть и драйвер, для которого вы можете использовать. Информация о доске необходима.

НАПИШИТЕ СОБСТВЕННЫЙ ВОДИТЕЛЬ Из-за того, что вы слишком зашли в него, вы должны изучить модель драйверов Microsoft, разницу между пользовательским режимом и драйверами ядра, что представляет драйвер node, иерархия драйверов и то, как они логически присоединяются, разные типы драйверов (фильтр, функция, bus), как драйвер ядра взаимодействует с пользовательским интерфейсом, динамическими библиотеками ссылок, фреймворками и API, интерфейсом WDM/API, KMDF и UMDF API, и это всего лишь короткий список.

ИЛИ вы можете использовать существующий драйвер.

ИСПОЛЬЗУЙТЕ USB-МИКРОКОНТРОЛЛЕР ПОСТАВЩИКИ ВОДИТЕЛЯ Мы не знаем, какую прошивку использует микроконтроллер USB, если таковой имеется. Если нет прошивки (если говорят, что чип пришел с ней или полагается на eprom для ее сохранения, а не для флеш-памяти), то, если бы мы знали, поддерживает ли чип загрузчик usb, вы можете его замаскировать или загрузить через прошивку через USB, и есть нет необходимости в JTAG или других периферийных устройствах. Вероятно, только USB способен вытащить вас с земли и где угодно. Обычно эти типы вопросов возникают при рассмотрении платы с USB-микроконтроллером.

Вот ссылка на небольшой драйвер. Большинство USB-микроконтроллеров служат для переключения USB-связи на UART, поскольку большинство микроконтроллеров, которые на самом деле делают мышление и управление, все не оснащены USB-вводом/выводом, а вместо UART или некоторыми другими выводами ввода-вывода, такими как I2C или SPI и т.д.

https://www.silabs.com/products/mcu/Pages/USBXpress.aspx

Этот драйвер может работать, если не что-то подобное, но для производителя вашего USB-микроконтроллера; почти наверняка справится с этой задачей. Надеюсь, это поможет.

Ответ 5

Какой микропроцессор и какой совет?

Многие процессоры поставляются с поддержкой USB-портов. Кроме того, некоторые аппаратные платы поставляются с USB-консольщиками.

Например, процессор, который использует мой магазин, поставляется с двумя USB-контроллерами, которые могут выступать в качестве концентратора или как устройства. Мы даже добавляем другой процессор в качестве USB-контроллера.