2008-08-06 36 views
14

में एक सीरियल पोर्ट से बात कर रहा है मेरे पास एक प्रोलाइट एलईडी साइन है जिसे मैं अपाचे लॉग और अन्य मजेदार आंकड़ों से स्क्रॉलिंग खोज क्वेरी दिखाने के लिए सेट अप करना चाहता हूं। समस्या यह है कि, मेरे जी 5 में सीरियल पोर्ट नहीं है, इसलिए मुझे सीरियल डोंगल में यूएसबी का उपयोग करना होगा। यह /dev/cu.usbserial और /dev/tty.usbserial के रूप में दिखाई देता है।प्रोग्रामिंग रूप से ओएस एक्स या लिनक्स

जब मैं इस सब कुछ करना hunky-dory हो रहा है:

stty -f /dev/cu.usbserial 
speed 9600 baud; 
lflags: -icanon -isig -iexten -echo 
iflags: -icrnl -ixon -ixany -imaxbel -brkint 
oflags: -opost -onlcr -oxtabs 
cflags: cs8 -parenb 

सब कुछ भी काम करता है जब मैं serial port tool का उपयोग यह करने के लिए बात करने के लिए।

यदि मैं उपर्युक्त धारावाहिक बंदरगाह उपकरण के दौरान कोड का यह टुकड़ा चलाता हूं, तो कुछ भी काम करता है। लेकिन जैसे ही मैं उपकरण को डिस्कनेक्ट करता हूं, कनेक्शन खो जाता है।

#!/usr/bin/python 

import serial 

ser = serial.Serial('/dev/cu.usbserial', 9600, timeout=10) 
ser.write("<ID01><PA> \r\n") 
read_chars = ser.read(20) 
print read_chars 

ser.close() 

तो सवाल यह है कि धारावाहिक बंदरगाह उपकरण के बिना धारावाहिक बंदरगाह से बात करना शुरू करने के लिए मुझे क्या जादूगर करने की ज़रूरत है? क्या यह अनुमति समस्या है? इसके अलावा, /dev/cu.usbserial और /dev/tty.usbserial के बीच क्या अंतर है?


नहीं, कोई धारावाहिक संख्या नहीं। बात यह है कि समस्या सुडौ-पाइथन लिपि चलाने के साथ भी बनी रहती है, और एकमात्र चीज जो मुझे गुई उपकरण में कनेक्शन खोलने के माध्यम से गुजरती है।

+0

पिछले हफ्ते मैंने एक छोटी सी पाइथन उपयोगिता लिखी थी ताकि यूएसबी-सीरियल डोंगल से डीबग जानकारी पढ़कर मुझे एम्बेडेड सी ऐप डीबग करने में मदद मिल सके, इसलिए मुझे लगता है कि मैं पिसरीरियल को अच्छी तरह से समझता हूं। कुछ अतिरिक्त जानकारी समस्या का निदान करने में मदद कर सकती है: * आप किस यूएसबी-सीरियल ड्राइवर का उपयोग कर रहे हैं? * क्या आप निश्चित हैं कि आपने पाइथन से सीरियल कनेक्शन खोलने के प्रयास से पहले सभी सीरियल विकल्प (बॉड रेट, फ्लो कंट्रोल, समानता, स्टॉप बिट्स इत्यादि) को सही तरीके से कॉन्फ़िगर किया है? * आप PySerial का क्या संस्करण उपयोग कर रहे हैं? – Matt

+0

आप उनके बाद कोई सीरियल नंबर देखने के लिए नहीं होते हैं? जैसे: /dev/cu.usbserial-xxxxxxxxA /dev/tty.usbserial-xxxxxxxxA /dev/cu.usbserial-xxxxxxxxB /dev/tty.usbserial-xxxxxxxxB मेरा दूसरा माध्यम शायद पाइथन से बात करने की अनुमति अनुमति हो सकता है सीरियल पोर्ट। क्या आप जानते हैं कि आपका पायथन उदाहरण किस उपयोगकर्ता के अंतर्गत चल रहा है? और शायद इसकी भूमिका क्या है? –

उत्तर

0

क्या आपने जीयूआई और सीरियल पोर्ट के बीच यातायात देखने की कोशिश की है ताकि यह देखने के लिए कि किसी प्रकार का विशेष आदेश भेजा जा रहा है या नहीं? यह भी उत्सुक है, पायथन ASCII भेज रहा है, यूटीएफ -8 नहीं या कुछ और सही है? कारण मैं पूछता हूं क्योंकि मैंने स्ट्रिंग्स के लिए आपके उद्धरण परिवर्तन और कुछ भाषाओं में वास्तव में एएससीआईआई और यूटीएफ -8 के बीच अंतर देखा है।

4

/dev/cu.xxxxx "कॉलआउट" डिवाइस है, यह तब होता है जब आप धारावाहिक डिवाइस से कनेक्शन स्थापित करते हैं और उससे बात करना शुरू करते हैं। /dev/tty.xxxxx "डायलिन" डिवाइस है, जो आने वाली कॉल के लिए पोर्ट की निगरानी के लिए उपयोग किया जाता है उदा। एक फैक्स श्रोता।

+2

क्या यह सिर्फ सम्मेलन है, या क्या उनके बीच कुछ ठोस अंतर है? –