আমাদের লিনাক্স বাক্সে আমাদের কাছে ইউএসবি -> সিরিয়াল ডিভাইস রয়েছে যা সর্বদা হিসাবে চিহ্নিত ছিল
/dev/ttyACM0
। তাই আমি একটি আবেদন লিখেছি এবং গতকাল পর্যন্ত, সবকিছু ঠিকঠাক কাজ করেছে। তবে হঠাৎ (হ্যাঁ, দূরবর্তী উপস্থাপনার সময় ...) ডিভাইসটি কাজ করা বন্ধ করে দিয়েছে। দ্রুত গবেষণা করার পরে, আমি আবিষ্কার করেছি যে সংযোগটি পরিবর্তিত হয়েছে /dev/ttyACM1
। এটি একটু অকাল ছিল, তবে এখন আমার একটি সমস্যা আছে - কীভাবে আমার ডিভাইসটি নির্বিঘ্নে সনাক্ত করা যায়? যেমন, উদাহরণস্বরূপ, স্টোরেজ ড্রাইভটি ইউইউডি ব্যবহার করে শুরু করা যেতে পারে যদিও /dev/sd**
পরিবর্তিত হয়েছে। সিরিয়াল ডিভাইসগুলির জন্য এটি করার কোনও উপায় আছে?
এখন আমি একটি বোকা workaround ব্যবহার:
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
। এটি কাস্টম উদেব বিধিবিহীন আপনার পক্ষে যথেষ্ট।