在我们的 Linux 机器中,我们有 USB -> 串行设备,它总是被标识为
/dev/ttyACM0
. 所以我写了一个应用程序,直到昨天,一切正常。但突然(是的,在远程演示期间......)设备停止工作。经过快速研究,我发现连接更改为/dev/ttyACM1
. 这有点不合时宜,但现在我有一个问题 - 如何明确识别我的设备?例如,尽管 UUID/dev/sd**
已更改,但可以使用 UUID 初始化存储驱动器。有没有办法为串行设备做到这一点?
现在我使用一个愚蠢的解决方法:
for(int i = 0; i < 10; i ++)
{
m_port = std::string("/dev/ttyACM") + (char)('0' + i);
m_fd = open(m_port.c_str(), O_RDWR | O_NOCTTY | O_NDELAY);
}
我们使用的设备的链接。