हमारे लिनक्स बॉक्स में हमारे पास USB -> सीरियल डिवाइस है जिसे हमेशा पहचाना जाता था
/dev/ttyACM0
। इसलिए मैंने एक आवेदन लिखा है और कल तक, सब कुछ ठीक रहा। लेकिन अचानक (हाँ, दूरस्थ प्रस्तुति के दौरान ...) डिवाइस ने काम करना बंद कर दिया। त्वरित शोध के बाद, मैंने पाया कि संबंध बदल गया है /dev/ttyACM1
। यह थोड़ा असामयिक था, लेकिन अब मुझे एक समस्या है - कैसे अनायास ही मेरे डिवाइस की पहचान करें? उदाहरण के लिए, यूयूआईडी का उपयोग करके स्टोरेज ड्राइव को इनिशियलाइज़ किया जा सकता है, हालाँकि /dev/sd**
यह बदल गया है। क्या धारावाहिक उपकरणों के लिए ऐसा करने का कोई तरीका है?
अब मैं एक बेवकूफ वर्कअराउंड का उपयोग करता हूं:
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);
}
जिस डिवाइस का हम उपयोग करते हैं उसका लिंक ।
/dev/serial/by-id/usb-XXXX_USB2.0-Serial-if00-port0
। यह कस्टम udev नियमों के बिना आपके लिए पर्याप्त हो सकता है।