linux – C检测插入拔出USB串行设备

linux – C检测插入拔出USB串行设备,第1张

概述我需要检测何时在我的嵌入式系统上插入拔出USB串行设备,并知道与之相关的tty是什么. 我的系统运行在2.6 Linux内核上. 由于我没有对udev规则的写访问权限,现在我正在尝试从文件系统获取此信息,在/ sys / bus / usb / devices目录中查找修改.但是,我正面临着这种方法的一些问题. 我知道连接的USB端口的Id BUS是什么(例如1-1.3).所以,我搜索相关的tt 我需要检测何时在我的嵌入式系统上插入或拔出USB串行设备,并知道与之相关的tty是什么.

我的系统运行在2.6 Linux内核上.

由于我没有对udev规则的写访问权限,现在我正在尝试从文件系统获取此信息,在/ sys / bus / usb / devices目录中查找修改.但是,我正面临着这种方法的一些问题.

我知道连接的USB端口的ID BUS是什么(例如1-1.3).所以,我搜索相关的tty(在/ sys / bus / usb / devices /< ID BUS>中查找目录:1.0 / tty / – 例如/sys/bus/usb/devices/1-1.3:1.0/ TTY / ttyACM0).这样我知道我应该使用/ dev / ttyACM0与我的设备通信.
但是,有时,此设备(/ dev / ttyACM0)不存在.

有没有更好的方法来获取这些信息?

我甚至想过尝试从系统日志中获取这些信息,但我不知道这是不是一个好主意.

编辑:

只是为了澄清,我的系统需要能够检测USB总线中的状态变化,即检测新设备何时被插入(以及获取与之相关联的tty名称)或现有的设备被拔掉.

该系统最多可监控N个USB /串行设备,这些设备通过USB HUB插入其中.在正常执行期间,可以插入新设备,可以删除现有设备(或通过远程命令重新启动 – 超出此范围).当设备重新启动时,它可能会收到与之前使用的设备不同的tty(例如ttyACM0 – > ttyACM3),因为内核指定了一个目前空闲的tty,这对我来说是个大问题.

解决方法 我写了一个名为 libusbp的USB抽象库.你应该看看它的 port_name example,它展示了如何使用libusbp来获取USB串行设备的串口名称(例如/ dev / ttyACM0).在幕后,libusbp使用libudev获取此信息. 总结

以上是内存溢出为你收集整理的linux – C检测插入/拔出USB串行设备全部内容,希望文章能够帮你解决linux – C检测插入/拔出USB串行设备所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1019452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存