Na nossa caixa Linux, temos um dispositivo serial USB -> que sempre foi identificado como
/dev/ttyACM0
. Então, eu escrevi uma inscrição e até ontem tudo funcionou bem. Mas de repente (sim, durante a apresentação remota ...) o dispositivo parou de funcionar. Após uma pesquisa rápida, descobri que a conexão mudou para /dev/ttyACM1
. Foi um pouco prematuro, mas agora tenho um problema - como identificar inequivocamente meu dispositivo? Por exemplo, a unidade de armazenamento pode ser inicializada usando UUID, embora a /dev/sd**
alteração tenha sido alterada. Existe alguma maneira de fazer isso em dispositivos seriais?
Agora eu uso uma solução estúpida:
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);
}
O link para o dispositivo que usamos.
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. Isso pode ser o suficiente para você, sem regras personalizadas do udev.