我正在将 Mono 应用程序从 Windows 移植到 Linux。该应用程序与外部板通信。该板显示为三个虚拟串行端口。每个人都扮演着不同的角色。
该应用程序会自动检测这些端口。我可以转发 ie 中的结构和信息吗/sys/bus/usb/
?它们在不同的 Linux 发行版中是否相同?
答案1
是的,您可以依赖在各个发行版中相同的结构/sys/bus/usb/
,因为它仅依赖于内核,并且它足够成熟,因此在未来的内核版本中不太可能改变(但谁知道......)。
但是,这是解决您的问题的错误方法。正确的方法是udev
在您的应用程序中包含自定义规则,并确保在安装过程中将此udev
规则复制到正确的位置(通常/etc/udev/rules.d
,但这可能取决于发行版。如有疑问,请让用户配置它)。然后,该udev
规则可以使用唯一标识您的板的任何信息(例如供应商/设备 ID)将符号链接(类似于您在 中看到的符号链接/dev/disks
)分配给三个串行设备。您的应用程序应该使用符号链接。
在紧要关头,您还可以使用计划用于 ryle 的 USB 树结构。请udevadm info --attribute-walk ...
参阅 参考资料 获取适用于您的设备的属性列表。