Dans notre boîte Linux, nous avons un périphérique série USB -> qui a toujours été identifié comme
/dev/ttyACM0
. J'ai donc écrit une candidature et jusqu'à hier, tout s'est bien passé. Mais soudain (ouais, lors de la présentation à distance ...) l'appareil a cessé de fonctionner. Après une recherche rapide, j'ai constaté que la connexion a changé pour /dev/ttyACM1
. C'était un peu inopportun, mais maintenant j'ai un problème - comment identifier sans ambiguïté mon appareil? Comme, par exemple, le lecteur de stockage peut être initialisé à l'aide de l'UUID bien que le /dev/sd**
ait changé. Existe-t-il un moyen de le faire pour les périphériques série?
Maintenant, j'utilise une solution stupide:
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);
}
Le lien vers l'appareil que nous utilisons.
la source
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. Cela pourrait vous suffire sans règles udev personnalisées.