Dalam kotak Linux kami, kami memiliki USB -> perangkat serial yang selalu diidentifikasi sebagai
/dev/ttyACM0
. Jadi saya sudah menulis aplikasi dan sampai kemarin, semuanya bekerja dengan baik. Tapi tiba-tiba (yeah, selama presentasi jarak jauh ...) perangkat berhenti bekerja. Setelah riset cepat, saya menemukan bahwa koneksi berubah menjadi /dev/ttyACM1
. Itu agak terlalu cepat, tapi sekarang saya punya masalah - bagaimana cara mengidentifikasi perangkat saya dengan jelas? Seperti, misalnya, drive penyimpanan dapat diinisialisasi dengan menggunakan UUID meskipun /dev/sd**
telah berubah. Apakah ada cara untuk melakukannya untuk perangkat serial?
Sekarang saya menggunakan solusi bodoh:
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);
}
The Link ke perangkat yang kita gunakan.
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
. Ini mungkin cukup untuk Anda tanpa aturan udev khusus.