क्या लिनक्स पर सीरियल बंदरगाहों से जुड़े सभी जुड़े उपकरणों का पता लगाने का कोई अच्छा तरीका है? मैं सी ++ में प्रोग्रामिंग लेकिन अन्य उदाहरणों का भी स्वागत है।सी ++ लिनक्स सभी धारावाहिक बंदरगाहों का पता लगाता है
आप बस हर बंदरगाह खोलने की कोशिश कर सकते हैं और जब यह सफल होता है तो आप इसे बंदरगाहों की सूची में जोड़ते हैं लेकिन यह वास्तव में एक अच्छा समाधान नहीं लगता है।
आप देव निर्देशकों में जा सकते हैं और चूंकि मेरा सीरियल पोर्ट एक यूएसबी पोर्ट है, मैं जांच सकता हूं कि कौन सी ttyUSb .. फाइलें बनाई गई हैं। लेकिन यह गैर यूएसबी धारावाहिक बंदरगाहों के लिए काम नहीं करता है क्योंकि tty0 तक tty63 तक फ़ाइलों को हमेशा इस निर्देशिका में रखा जाता है।
मेरे उदाहरण:
std::string port;
int fd
std::vector<std::string>> list;
for(int i = 0; i < 256; ++i)
{
port.clear();
port.append("/dev/ttyUSB");
port.append(std::to_string(i));
fd = open(port.c_str(), O_RDWR | O_NOCTTY | O_DELAY);
if(fd != -1)
{
list.push_back(port);
}
}
धन्यवाद!
सीरियल बंदरगाहों को आमतौर पर 'ttyS0' नाम दिया जाता है और इसी तरह। – Hasturkun
यह मुझे एक एक्सवाई प्रश्न का अनुभव देता है, जहां आपकी वास्तविक समस्या एक्स है, और आपको लगता है कि समाधान वाई है, इसलिए आप वाई के लिए पूछते हैं। आप सिस्टम पर धारावाहिक बंदरगाहों के बारे में क्यों जानना चाहते हैं? –
बंदरगाहों में से 1 पर एक जिग्बी डिवाइस जुड़ा हुआ है। चूंकि मैं इसे उपयोगकर्ता के अनुकूल बनाना चाहता हूं, इसलिए मैं सभी संभावनाओं को सूचीबद्ध करना चाहता हूं ताकि उपयोगकर्ता चुन सकें। आम तौर पर यदि आप अपने ज़िगबी डिवाइस में प्लग करते हैं तो आपको बिल्कुल एक पोर्ट नंबर लौटाया जाना चाहिए। @ हस्तार्कुन मेरे मामले में जब से मेरा सीरियल डिवाइस यूएसबी कनेक्शन का उपयोग करता है तो इसे ttyUSB0 नाम दिया जाता है। – Silver