![检测 USB 端口连接](https://linux22.com/image/906732/%E6%A3%80%E6%B5%8B%20USB%20%E7%AB%AF%E5%8F%A3%E8%BF%9E%E6%8E%A5.png)
我正在用 C++ 编写控制台应用程序。到目前为止,我的代码可以检测我的设备(Linux)是否已通过 TCPIP 连接到另一台设备(通常是 Windows)。一旦我在 Windows 上打开 Putty 以连接到运行控制台应用程序的设备,我的代码就会识别它并自动将数据从我的设备(Linux)发送到我的计算机。
我想用 USB 做同样的事情。现在,我的控制台应用程序可以从我的 Windows 设备发送/接收数据,但前提是我先发送数据。我希望我的控制台应用程序自动检测它是否已通过 putty 或其他应用程序连接,并自动开始向我的微处理器发送数据。我已阅读并试用了 libudev,运行代码显示 USB 设备何时连接和断开连接。我想知道是否有办法让我的设备(linux)知道它已通过 Putty 连接到我的 PC,而不是热插拔事件。如果有,是否有一个我可以使用的示例。
使用套接字是个好主意吗?我可以将套接字与 USB 设备一起使用吗?
先谢谢了。
坦白说,我对 Linux 操作系统还比较陌生。
答案1
嗯,您的建议存在一些重大问题。普通的 USB 电缆是主从式的,这意味着一台机器是控制机器,另一台是从机器。Windows 机器和 Ubuntu 机器都希望成为主机,以 USB 主控的身份控制 USB 操作。没有现成的东西可以改变这种关系(但许多嵌入式设计可以切换主机-从属关系)。
但是,您可以使用 USB 桥接器(或传输线)在两台机器之间通过 USB 进行通信。我在亚马逊上找到了这款“可插拔 Windows 传输线”。您应该能够使用它在两端编写控制台应用程序,但需要具备一些 Windows 和 Linux 驱动程序方面的经验。这并非易事。
我想还有一个想法,就是使用两个 USB 网络适配器,并用以太网交叉电缆将它们连接起来,然后设置一个本地网络。您仍然可以使用网络功能在两个设备之间进行通信,但这在插入 USB 端口时是可以检测到的。
以太网交叉电缆和 USB 网络加密狗随时可用,并且驱动程序针对 Windows 和 Ubuntu 定义明确(显然)。