Как заставить C ++ выполнять ввод / вывод с USB-порта, как последовательный порт - PullRequest
4 голосов
/ 11 августа 2011

Можно ли читать / записывать данные с / на определенный порт USB, избегая всего, что связано с USB-согласованием?

Что я хочу сделать, это, например, связаться с микроконтроллером, который не имеетUSB-драйвер на борту через USB.Я хочу, чтобы мое приложение C ++ могло отправлять данные через определенный USB-порт, а затем получать данные с этого же USB-порта.

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

Заранее спасибо.

PS: Я знаю, что это не лучший способ общения с ОК, но давайте предположим, по какой-то причинеЯ должен сделать это следующим образом.

Редактировать: Кстати, я использую Windows 7

Ответы [ 3 ]

4 голосов
/ 11 августа 2011

Обычным решением является использование микросхемы FTDI USB-to-serial, такой как FT232R , на вашей плате микроконтроллера. Затем, что касается вашего MCU, он говорит с последовательным портом, и на хост-машине вам просто нужно иметь правильные драйверы.

На моем Mac чип FTDI отображается как последовательный порт на /dev/tty.usbmodem____, где ____ - это некоторый постоянный уникальный идентификатор, назначаемый Mac при первом обнаружении. Отключение и повторное подключение, даже спустя несколько недель, получает тот же номер, но на другом Mac это другое число.

В Windows он отображается как новый порт COM, если у вас установлены драйверы, IIRC. В Linux он отображается как /dev/ttyUSB_, где _ - серийный номер, начинающийся с 0, если в ядре включена поддержка последовательного драйвера FTDI. Это может быть сложно, если вы подключите более одного чипа FTDI.

Если ваш микроконтроллер имеет встроенный порт USB, вам необходимо найти программное обеспечение для него, чтобы идентифицировать себя как стандартное устройство последовательного порта CDC (Communication Device Class) ( стандартная документация доступна ). Большинство ОС поддерживают этот стандартный класс USB-устройств.

0 голосов
/ 11 августа 2011

Как правило, вы можете сделать это приблизительно с помощью интерфейса HID: драйверы встроены, и вы можете отправлять отчеты о функциях в обоих направлениях. Это не совсем простота последовательного порта (поскольку это пакеты, а не непрерывный поток байтов), но hidapi делает его действительно простым и кроссплатформенным.

0 голосов
/ 11 августа 2011

Используйте один из адаптеров USB-последовательный порт.Порт USB будет выглядеть как последовательный порт для вашей программы на C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...