Обнаружение соединения USB-порта

Я пишу консольное приложение на C++. Пока мой код может определить, было ли мое устройство (linux) подключено к другому устройству (обычно windows) через TCPIP. Когда я открываю Putty на своей Windows, чтобы подключиться к моему устройству, на котором запущено консольное приложение, мой код распознает его и автоматически отправляет данные с моего устройства (linux) на мой компьютер.

Я хотел бы сделать то же самое с USB. Прямо сейчас мое консольное приложение может отправлять / получать данные с моего устройства Windows, НО только если я отправляю данные в первую очередь. Я хочу, чтобы мое консольное приложение автоматически обнаруживало, подключено ли оно через шпаклевку или другое приложение, и автоматически начинает отправку данных на мой микропроцессор. Я читал и играл с libudev, запустив код, который отображается, когда USB-устройство было подключено и отключено. Я хотел бы знать, есть ли способ для моего устройства (linux) узнать, что оно было подключено к моему компьютеру через Putty, а не событие hotplug. и если да, то есть ли пример где-нибудь, где я могу использовать.

было бы хорошей идеей использовать сокеты? Могу ли я использовать сокеты с USB-устройствами?

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

Полное раскрытие, я относительно новичок с ОС Linux.

1 ответ

Ну, есть некоторые серьезные проблемы с тем, что вы предлагаете. Обычный USB-кабель - это ведущий-> ведомый, что означает, что одна машина является управляющей, а другая - ведомой. И машина с Windows, и машина с Ubuntu оба будут хостом, управляющим USB-операциями как USB-Master. Нет ничего готового для изменения этого отношения (но есть много встроенных проектов, которые переключают отношения хост-раб).

ОДНАКО вы можете использовать USB-мост (или кабель передачи) для связи по USB между двумя машинами. Я нашел это на Amazon "Подключаемый кабель передачи Windows". Вы должны быть в состоянии использовать это, чтобы написать консольное приложение с обеих сторон, но для этого потребуется некоторый опыт работы с драйверами Windows и Linux. Не тривиально.

Я полагаю, что есть еще одна идея: использовать два сетевых USB-ключа, соединить их друг с другом с помощью перекрестного кабеля Ethernet и настроить локальную сеть. Вы по-прежнему можете использовать свои сетевые возможности для связи между двумя устройствами, но это можно обнаружить, когда USB-порт подключен.

Доступны перекрестные кабели Ethernet и USB-адаптеры, а драйверы хорошо определены (очевидно) для Windows и Ubuntu.

Другие вопросы по тегам