कुछ साल पहले, हमें निम्नलिखित समस्या का समाधान करना था। एक प्रकार का FreeBSD चलाने वाला होस्ट एक ही प्रकार के कई USB उपकरणों को जोड़ता है। होस्ट सॉफ़्टवेयर उनके साथ चरित्र डिवाइस फ़ाइलों के माध्यम से काम करता है। यह स्पष्ट है कि यदि आप बेतरतीब ढंग से यूएसबी डोरी या जब होस्ट रिबूट को स्विच करते हैं, तो चरित्र उपकरणों की फ़ाइलों को पहले कनेक्ट किए जाने की तुलना में पूरी तरह से अलग क्रम में क्रमांकित (सामान्य स्थिति में) किया जाता है। मेरे मामले में, यूएसबी डिवाइस इंटरफ़ेस कन्वर्टर्स हैं, जिस पर डिवाइसों के साथ RS-485 बसें लटकी रहती हैं। बस में उपकरणों द्वारा स्वचालित रूप से निर्धारित करने का कोई तरीका नहीं है कि कौन सी बसें लटक रही हैं जिस पर बंदरगाह नहीं है। इस प्रकार, यह स्पष्ट नहीं है कि कौन सी प्रतीक डिवाइस फाइलें इस समय किन भौतिक उपकरणों के अनुरूप हैं। समाधान के बारे में कौन परवाह करता है, कृपया, बिल्ली के नीचे। कार्य की विशिष्टता के बावजूद, विधि सार्वभौमिक है।
आइडिया। USB डिवाइस को कनेक्ट करते समय, वर्ण डिवाइस का फ़ाइल नाम निर्धारित करें जो सिस्टम द्वारा जारी किया गया है (जैसे ttyUx), निर्माता, प्रकार, डिवाइस का s / n और पहले से ज्ञात ttyUx की ओर इशारा करते हुए, इस s / n के लिए पूर्वनिर्धारित नाम के साथ / dev में लिंक बनाएँ। इस प्रकार हमारा सॉफ़्टवेयर हमेशा प्रसिद्ध प्रतीक डिवाइस फ़ाइल नामों के साथ काम करेगा - पूर्वनिर्धारित लिंक जो एक विशिष्ट डिवाइस के अनुरूप हैं।
बोध।USB डिवाइस के बारे में अधिक जानने के लिए:
usbconfig dump_device_desc ... ugen1.2: <USB-Serial Controller Prolific Technology Inc.> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0110 bDeviceClass = 0x0000 bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x067b idProduct = 0x2303 bcdDevice = 0xa7d4 iManufacturer = 0x0001 <Prolific Technology Inc.> iProduct = 0x0002 <USB-Serial Controller> iSerialNumber = 0x0003 <0000A7D4> bNumConfigurations = 0x0001 ...
संपादन /etc/devd.conf। हम कुछ इस तरह लिखते हैं:
मुझे लगता है कि इस प्रविष्टि का अर्थ स्पष्ट है। यह uplcom2ttyU को "ड्रॉ" करने के लिए बना हुआ है, जो उदाहरण में / - dev / icpcon1 के समान लिंक को अस्पष्ट बना देगा। प्रत्येक डिवाइस के लिए, आपको devd.conf में एक उपयुक्त प्रविष्टि बनाने की आवश्यकता है। लिंक का नाम (I / dev / icpcon1) दो स्थानों पर बदलना न भूलें: संलग्न करें, अलग करें, - हम चाहते हैं कि डिवाइस बंद होने पर लिंक गायब हो जाए।
cat /usr/local/bin/uplcom2ttyU
यह देखा जा सकता है कि uplcom प्रविष्टि ttyU में बदल जाती है, क्योंकि / dev में सिस्टम बिल्कुल ttyUx बनाता है, जहाँ x uplcom नंबर से मेल खाता है।
वह सब है। हालाँकि, अब तक इस समस्या के समाधान का पूरा विवरण इंटरनेट पर नहीं पाया जा सकता है। जब तक एक प्रसिद्ध संसाधन के मंच पर मेरी पोस्ट।