In unserer Linux-Box haben wir USB -> serielles Gerät, das immer als identifiziert wurde
/dev/ttyACM0
. Also habe ich eine Bewerbung geschrieben und bis gestern hat alles gut geklappt. Aber plötzlich (ja, während der Remote-Präsentation ...) funktionierte das Gerät nicht mehr. Nach kurzer Recherche stellte ich fest, dass sich die Verbindung zu änderte /dev/ttyACM1
. Es war ein bisschen zu früh, aber jetzt habe ich ein Problem - wie kann ich mein Gerät eindeutig identifizieren? Wie zum Beispiel könnte das Speicherlaufwerk mit der UUID initialisiert werden, obwohl sich die /dev/sd**
geändert hat. Gibt es eine Möglichkeit, dies für serielle Geräte zu tun?
Jetzt benutze ich eine blöde Umgehung:
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);
}
Der Link zu dem Gerät, das wir verwenden.
quelle
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. Dies könnte für Sie ohne benutzerdefinierte udev-Regeln ausreichen.