मैं इस निष्कर्ष पर आ गए हैं कि का उपयोग कर Pyserial के ट्विस्टेड पायथन के साथ आरएफसी 2217 समर्थन गैर-तुच्छ है। RFC2217 की Pyserial के कार्यान्वयन, being currently experimental के अलावा, धागे का उपयोग करता सॉकेट कनेक्शन जो वे चुनिंदा आधारित अनुप्रयोगों के लिए एक समस्या होने के रूप में राज्य के प्रबंधन के लिए:
वर्तमान कार्यान्वयन एक धागा है कि (आंतरिक) सॉकेट से पढ़ने रहता है शुरू होता है। थ्रेड स्वचालित रूप से आरएफसी 2217 द्वारा प्रबंधित किया जाता है। सीरियल पोर्ट ऑब्जेक्ट ओपन()/क्लोज़() पर। हालांकि यह उपयोगकर्ता अनुप्रयोगों के लिए एक समस्या हो सकती है जो थ्रेड के बजाय चयन का उपयोग करना पसंद करते हैं।
यह tiserialport.SerialPort उपवर्ग और _serialFactory विधि (जो pyserial वस्तु बनाता है सीरियल पोर्ट तक पहुँचने के लिए प्रयोग की जाने वाली)
class SerialPort(serialport.SerialPort):
def _serialFactory(self, dev, *args, **kwargs):
" pyserial recommends the following for supporting serial urls "
try:
return serial.serial_for_url(dev)
except AttributeError:
return serial.Serial(dev, *args, **kwargs)
हालांकि अधिलेखित करने के लिए काफी सीधे आगे है, जिसके परिणामस्वरूप वस्तु का अभाव एक फाइल डिस्क्रिप्टर और इसलिए fileno()
विधि (t.i._posixserialport
द्वारा आंतरिक रूप से उपयोग किया जाता है) एक अपवाद फेंकता है।
--- <exception caught here> ---
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/twisted/internet/base.py", line 1204, in mainLoop
self.doIteration(t)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/twisted/internet/selectreactor.py", line 105, in doSelect
[], timeout)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/twisted/internet/_posixserialport.py", line 48, in fileno
return self._serial.fd
exceptions.AttributeError: 'Serial' object has no attribute 'fd'
वर्तमान समाधान प्रश्न में वर्णित के रूप में या तो socat
उपयोग करने के लिए कर रहे हैं, या नेटवर्क धारावाहिक सर्वर के लिए मैं उपयोग कर रहा हूँ (Brainboxes ES-842) आप के बजाय "कच्चे टीसीपी" मोड में कॉन्फ़िगर "कर सकते हैं टेलनेट/आरएफसी 2217 "मोड और बस एक मौजूदा टीसीपी कनेक्शन पर अपने मौजूदा प्रोटोकॉल का उपयोग करें (जब तक आप प्रवाह नियंत्रण या अन्य धारावाहिक नियंत्रण रेखाओं के आधार पर नहीं हैं और एक पूर्व निर्धारित निर्धारित बॉड दर का उपयोग कर सकते हैं)।
स्रोत
2015-05-18 23:17:12
मेरे पास आपके लिए कोई जवाब नहीं है मुझे डर है; और मुझे संदेह है कि जवाब होने वाला है * नहीं; अभी नहीं*; और आप शायद एक समस्या दर्ज करना चाहते हैं :) - हालांकि आप मुझे सोच रहे हैं कि हम shoudl भी इस तरह की एक विशेषता [सर्किट.io.Serial] में जोड़ें (https://github.com/circuits/circuits/ ब्लॉब/मास्टर/सर्किट/आईओ/सीरियल.py) –
धन्यवाद जेम्स, हाँ, यदि कोई अच्छा जवाब नहीं है तो मैं एक समस्या/फीचर अनुरोध दर्ज करने पर विचार करूंगा। आपके संपादन में –
डब्लूआरटी; मुझे लगता है कि आप '' अगर ": //" में '' करना चाहते हैं। यानी: एक यूआरआई या कुछ के लिए परीक्षण। –