2011-09-23 3 views
9

में Arduino बंदरगाह का पता लगाएं मैं विंडोज एक्सपी पर पायथन 2.7 का उपयोग कर सेंसिंग के लिए एक Arduino का उपयोग कर रहा हूँ, लेकिन यूएसबी से सीरियल पोर्ट अनुवाद की गैर स्थैतिक प्रकृति मुझे सिरदर्द दे रहा है। एक भौतिक धारावाहिक बंदरगाह के साथ बंदरगाह की स्थिति को कड़ी मेहनत करने में कोई समस्या नहीं है, लेकिन ऑडडिनो ऑब्जेक्ट इंस्टेंटेशन के समय प्लग इन या प्लग इन नहीं है, इस पर आधारित है। क्या प्रत्येक ऑब्जेक्ट प्रारंभिकरण के दौरान पोर्ट पोर्ट प्राप्त करने के लिए पाइथन में कोई तरीका है और इसे PyVISA या pySerial पर पास करें?पायथन

+1

क्या ऑपरेटिंग सिस्टम, पायथन संस्करण, और pyserial संस्करण काम नहीं करेगा? आपने क्या प्रयास किया है क्या काम नहीं कर रहा है विवरण, आदमी! – jathanism

+0

संस्करण और ओएस के बारे में जोड़ा गया सामान, लेकिन एक स्थान इनपुट के रूप में pyvisa या pyserial जरूरतों के किसी भी संस्करण की तरह एक पाठ स्ट्रिंग 'COM3' है। – Elliot

उत्तर

0

मैं एक हैंडशेकिंग सिग्नल की सिफारिश करता हूं और सभी बंदरगाहों को स्कैन करता हूं। उदाहरण के लिए, अपनी पायथन स्क्रिप्ट से "woru" को arduiono पर भेजें और उस Arduiono पर कोड है जो "arduino" के साथ प्रतिक्रिया करता है जब यह धारावाहिक बंदरगाह पर "whoru" का पता लगाता है। इस तरह, आप बंदरगाहों को स्कैन करते हैं, हैंडशेक भेजते हैं, और जब आपको उचित प्रतिक्रिया मिलती है तो आप जानते हैं कि Arduino किस पोर्ट पर है।

+1

यह अन्य बंदरगाहों पर उपकरणों को बाधित करेगा, क्योंकि उन्हें इनपुट मिलेगा कि उन्हें इसका अर्थ नहीं पता था। जिन उपकरणों के साथ मैं काम कर रहा हूं उनमें से एक उपकरण का एक गंदे टुकड़ा है, लेकिन नौकरी करने के लिए कुछ भी बेहतर नहीं है। यदि यह एक बुरा सिग्नल हो जाता है, तो यह लॉक हो जाता है और इसे रीसेट करने का एकमात्र तरीका पूरी तरह से इसे अनप्लग करना है। – Elliot

2

मैं एक हैंडशेक भी सुझाता हूं लेकिन इसे अन्य दौर में करता हूं। बस अपना प्रोग्राम शुरू करने से पहले सभी सीरियल बंदरगाहों से इनपुट के लिए पढ़ें। जैसे ही आप डिवाइस चालू करते हैं, आप इसे ऑन सिग्नल की तरह कुछ भेज सकते हैं। जब आपका कोड उस बंदरगाह पर ओएन सिग्नल का पता लगाता है तो एक हैंडशेक करें।

1

पीईएसरियल में सभी धारावाहिक बंदरगाहों (कम से कम विंडोज़) पर वीआईडी ​​/ पीआईडी ​​की जांच करने के लिए एक बहुत ही छुपा तरीका है। बस बंदरगाह गुणों में Arduino के VID/PID को ढूंढें adn इसे पायथन कोड में डाल दें।

बेशक

इस यदि आप कई Arduino कनेक्ट कर दिया है (एक ही VID/पीआईडी)

import serial.tools.list_ports 

for port in list(serial.tools.list_ports.comports()): 
    if port[2].startswith('USB VID:PID=1234:5678'): 
     #here you have the right port