C 当串行设备';s的路径变化

C 当串行设备';s的路径变化,c,serial-port,uart,C,Serial Port,Uart,在Linux中,我在后台运行一个用C编写的程序,该程序定期与连接到其中一个USB端口的设备通信。尽管设备始终插入同一端口,但随着时间的推移,即使没有连接其他设备,它也会从/dev/ttyACM0切换到/dev/ttyACM1,然后再切换回来。因此,每次发生切换时,我都必须重新启动程序 为了解决这个问题,我已经尝试过了,不管连接设备的路径发生了什么变化,符号链接都能正常工作。但是,当切换发生时,程序仍会暂停,需要重新启动 是否有一个系统规则可以让设备始终保持相同的路径,或者是否有其他更通用的方法?

在Linux中,我在后台运行一个用C编写的程序,该程序定期与连接到其中一个USB端口的设备通信。尽管设备始终插入同一端口,但随着时间的推移,即使没有连接其他设备,它也会从
/dev/ttyACM0
切换到
/dev/ttyACM1
,然后再切换回来。因此,每次发生切换时,我都必须重新启动程序

为了解决这个问题,我已经尝试过了,不管连接设备的路径发生了什么变化,符号链接都能正常工作。但是,当切换发生时,程序仍会暂停,需要重新启动

是否有一个系统规则可以让设备始终保持相同的路径,或者是否有其他更通用的方法?

第一种方法(更简单):
如果您可以访问另一方的设备代码,我将从中实现ping消息
然后,我将在两个tty设备上侦听ping消息,以查看在哪个端口接收到它(/dev/ttyACM0或/dev/ttyACM1)

第二种方法:
在一个单独的线程上实现一个UDEV监视器
监视器检查设备使用的TTY端口
如果端口发生变化,只需重新启动通信线程。。。
有关udev监视器usb代码,请参阅。

在每个路径上运行线程?将协议交换排队,然后,希望有链接的线程能够实现协议?