U3 के CH340 और परिवार पर कोई भंडारण नहीं है जहाँ आप एक विशिष्ट आईडी डाल सकते हैं। यह PL2303 प्रकार के लिए भी एक समस्या है। मैं इस समस्या का समाधान खोजने की कोशिश कर रहा हूं। सबसे पहले और सबसे आसान उपकरण यूएसबी बस में डिवाइस की स्थिति है। यह प्रत्येक डिवाइस के लिए अद्वितीय होगा। यदि आप linux का उपयोग कर रहे हैं तो आप प्रत्येक डिवाइस को / dev / serial / by-path के अंतर्गत पा सकते हैं। एक / देव / धारावाहिक / बाय-आईडी भी है, लेकिन इस उपकरण के लिए केवल एक ही प्रविष्टि होगी क्योंकि यह पिछले एक से जुड़ा हुआ दिखाता है। एफटीडीआई चिप्स में प्रत्येक की अद्वितीय प्रविष्टियां होंगी। सस्ते चिप्स नहीं होगा, लेकिन वे प्रत्येक के तहत एक प्रविष्टि / देव / धारावाहिक / बाय-पाथ है। यह स्थिति, और डिवाइस के नाम, रिबूट के पार रहना चाहिए। यदि आपके USB उपकरणों में बहुत अधिक परिवर्तन हैं, तो सभी CH340 उपकरणों को एक ही हब में प्लग करें, फिर उन्हें प्लग इन करें। डिवाइस इस क्रम में गणना करेंगे कि वे हब में प्लग किए गए हैं। यह एक-हब चाल को MacOS और खिड़कियों के लिए भी काम करना चाहिए, उन्हें उसी क्रम में आना चाहिए।
कठिन विधि- udv नियम। FTDI जैसे एक अद्वितीय आईडी वाले उपकरणों के लिए, आप एक udev नियम सेट कर सकते हैं जो देखता है कि यह सीरियल नंबर है और फिर उस डिवाइस के लिए एक सिमलिंक बनाता है, यह सीधा है।
समान या बिना सीरियल नंबर वाले उपकरणों के लिए, यह बहुत अधिक जटिल है। मैंने एक udv नियम बनाया जो इस तरह दिखता है:
SUBSYSTEM == "tty", ATTRS {product} == "USB2.0-Serial", RUN + = "/ usr / स्थानीय / बिन / cheapduino.py% k", ATTRS {idVendor} == "1a86", ATTRS { idProduct} == "7523", ENV {ID_MM_DEVICE_IGNORE} = "" 1
जब डिवाइस सस्ते arduino के उत्पाद और विक्रेता से मेल खाता है, तो यह उदाहरण के लिए, उपकरण के साथ स्क्रिप्ट 'cheapduino.py' चलाता है।
cheapduino.py ttyUSB0
फिर सस्तेडू लिपि सीरियल द्वारा डिवाइस से कनेक्ट होती है और स्ट्रिंग 'आईडी' को भेजती है और डिवाइस पर मौजूद सॉफ्टवेयर DEVID = THX1138 या जो भी प्रतिक्रिया करता है। स्क्रिप्ट तब एक सिम्लिंक / dev / THX1138 बनाता है जो / dev / ttyUSB0 को इंगित करता है
इस पद्धति में बहुत सारी कमियां हैं। अगर स्क्रिप्ट सस्ते पर सॉफ्टवेयर जवाब नहीं देता है तो स्क्रिप्ट को समय देना चाहिए। इसके अलावा, यह udv के SYMLINK फ़ंक्शन का उपयोग नहीं कर रहा है, इसलिए यह डिस्कनेक्ट पर मृत लिंक को साफ नहीं करेगा, लेकिन यह उन्हें फिर से कनेक्ट करने पर अधिलेखित कर देगा। आपके सभी सस्ते स्टूडियो में अलग-अलग डिवाइस आईडी सेट के साथ, उनके सॉफ़्टवेयर में यह कार्यक्षमता होनी चाहिए। जब तक आप एक बहुत जटिल स्क्रिप्ट नहीं लिखना चाहते हैं, तब तक उन सभी को स्क्रिप्ट के रूप में एक ही बॉड दर का उपयोग करना होगा। अंत में, यह विधि उच्च बॉड दर की तुलना में कम बॉड दर पर बहुत बेहतर काम करती है, जो समय के कारण हर बार सफल नहीं हो सकती है। (cheapduinos सस्ते हैं!) 9600 115200 की तुलना में बहुत बेहतर काम करता है जो कई कोशिशों के बाद काम करता है। लेकिन चूंकि आपके सभी CH340 arduinos इस विधि के साथ समान गति होनी चाहिए, आप केवल अपने सबसे तेज़ डिवाइस के रूप में धीमी गति से जा सकते हैं।
यह विधि हालांकि काम करती है, और इसका उपयोग मैं इसलिए कर रहा हूं क्योंकि मैंने इनमें से बहुत सी सस्ती चीजों को खरीदा है।
अंत में, वास्तविक Arduinos खरीदें या कम से कम FTDI चिप्स या कुछ और के साथ खरीदें जो एक अद्वितीय डिवाइस आईडी भेजता है।
= रिच