В нашей коробке Linux у нас есть USB -> последовательное устройство, которое всегда обозначалось как
/dev/ttyACM0
. Поэтому я написал заявление и до вчерашнего дня все работало нормально. Но вдруг (да, во время удаленной презентации ...) устройство перестало работать. После быстрого исследования я обнаружил, что связь изменилась на /dev/ttyACM1
. Это было немного несвоевременно, но теперь у меня проблема - как однозначно идентифицировать мое устройство? Как, например, накопитель может быть инициализирован с использованием UUID, хотя /dev/sd**
он изменился. Есть ли способ сделать это для последовательных устройств?
Теперь я использую тупой обходной путь:
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);
}
Ссылка на устройство мы используем.
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. Это может быть достаточно для вас без пользовательских правил udev.