Nella nostra scatola di Linux abbiamo USB -> dispositivo seriale che è stato sempre identificato come
/dev/ttyACM0
. Quindi ho scritto una domanda e fino a ieri tutto ha funzionato bene. Ma all'improvviso (sì, durante la presentazione remota ...) il dispositivo ha smesso di funzionare. Dopo una rapida ricerca, ho scoperto che la connessione è cambiata in /dev/ttyACM1
. È stato un po 'prematuro, ma ora ho un problema: come identificare in modo univoco il mio dispositivo? Ad esempio, è possibile inizializzare l'unità di archiviazione tramite UUID, sebbene /dev/sd**
sia stata modificata. C'è un modo per farlo per i dispositivi seriali?
Ora uso una stupida soluzione alternativa:
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);
}
Il link al dispositivo che utilizziamo.
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. Questo potrebbe essere sufficiente per te senza regole udev personalizzate.