我正在使用Linux中的USB设备并编写了一个库来控制此设备。不用进入太多的细节,设备使用标准的UART协议,所以我只需要打开一个与open
的串行连接,配置波特率,停止位,奇偶等相关参数等。 ,并开始位反转寄存器。检测某个连接的USB设备
图书馆工作正常,但是,它的硬编码的假设,这个设备是/ dev/ttyUSB0。也就是说,这是我通过open
。如果打开失败,我退出。
我想要做的是检测该设备是否存在,无论它是否为/dev/ttyUSB0
,/dev/ttyUSB1
等,甚至检测是否有多个这些设备连接。
我可以编写代码来查询将返回序列号,产品ID等设备上的某些寄存器,这样我就可以检测到什么是对USB的另一端确实是我的设备......但怎么能我再次在本地C中找到连接的USB设备列表?
还是有这样做的更优雅的方式,如与它交互的内核模块,还是什么?我可以提供它实际使用的USB驱动程序,但是在查看代码时我有点失落。
感谢您的任何见解。
我知道'Linux'命令--->'lsusb' - 它的编码会给你一些想法! –
虽然我不能很好回答你,但值得注意的是,Apple和Spotify使用守护进程来检测媒体设备的连接。 –
在更高级别的应用程序中,我将运行一个单独的线程通过调用我的库中的函数来跟踪此情况。我只是不确定如何在我的图书馆中实现这一点。 – justynnuff