2010-06-24 14 views
6

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

यदि यह लगभग असंभव साबित होता है, तो मुझे किसी को पीईएसरियल स्थापित करने के लिए प्राप्त करना होगा, लेकिन अगर मैं इसके बिना किया जा सकता तो मैं वास्तव में इसकी सराहना करता हूं।

यदि लिनक्स/विंडोज में अंतर है, तो यह विंडोज मशीन पर है, लेकिन मैं वास्तव में एक क्रॉस प्लेटफार्म समाधान की सराहना करता हूं।

उत्तर

7

यूनिक्स जैसी ऑपरेटिंग सिस्टम पर, सीरियल पोर्ट एक फ़ाइल की तरह काम करता है, और आप इसे खोलते हैं और बाइट्स को पढ़ते हैं या लिखते हैं। बॉड रेट और व्हाट्नॉट सेट करने के लिए आप कुछ अतिरिक्त कॉल कर सकते हैं, लेकिन यह अनिवार्य रूप से सब कुछ है।

विंडोज़ पर, आप फ़ाइल की तरह सीरियल पोर्ट खोलते हैं, लेकिन आपको इसे एक्सेस करने के कुछ विशेष तरीकों का उपयोग करना चाहिए जो कि सामान्य फाइलों के लिए पाइथन का उपयोग करने से थोड़ा अलग है। दुर्भाग्य से केवल मूल पायथन पुस्तकालयों का उपयोग करके विंडोज सीरियल पोर्ट को सफलतापूर्वक एक्सेस करना मुश्किल है।

pyserial लाइब्रेरी धारावाहिक बंदरगाहों तक पहुंचने का एक समान, पार-मंच तरीका प्रदान करता है। यह ctypes पर निर्भर करता है, जो कि पाइथन 2.5 के बाद से मानक लाइब्रेरी में है, इसलिए आप अपने आवेदन के साथ pyserial शामिल कर सकते हैं और बस इसका उपयोग कर सकते हैं।

+0

क्या आप थोड़ा और अंतर बता सकते हैं कि मतभेद क्या हैं, या शायद मुझे यह भी संकेत मिले कि कहां देखना है। इसे Google पर करने का प्रयास किया, लेकिन फिर कुछ और नहीं मिला pySerial। – martiert

+0

अंतरों में से एक यह है कि विंडोज़ पर, आपको * ओवरलैप्ड I/O * मोड में Win32 API फ़ंक्शन 'रीडफ़ाइल' और 'WriteFile' का उपयोग करके सीरियल पोर्ट डिवाइस को पढ़ना और लिखना होगा। इसे सही ढंग से करने में आमतौर पर पढ़ने और लिखने को संभालने के लिए अलग-अलग धागे बनाना शामिल होता है। चूंकि 'pyserial' यह सब करता है और खुला स्रोत है, आप यह देखने के लिए अंदर देख सकते हैं कि यह क्या करता है। आपका आखिरी उपाय "ठीक वही कर सकता है जो" पाइसरियल "करता है। –

0

आप कहते हैं कि आपके पास कुछ नया इंस्टॉल करने की पहुंच नहीं है। मुझे लगता है कि यह एक अनुमति मुद्दा है - यानी आप उन्नत प्रशासन पहुंच प्राप्त नहीं कर सकते हैं और पाइप इंस्टॉल/कोंडा इंस्टॉल विफल हो जाता है।

यदि आपके पास मशीन पर सामान्य उपयोगकर्ता लॉगिन पहुंच का कोई भी प्रकार है (जो मुझे लगता है कि आपको अपनी स्क्रिप्ट को मशीन पर पहली जगह पर रखने के लिए प्रत्यक्ष या परोक्ष रूप से होना चाहिए) तो आप वर्चुअल वातावरण का उपयोग कर सकते हैं आपको आवश्यक मॉड्यूल स्थापित करने के लिए। यह सब एक सामान्य उपयोगकर्ता खाते से किया जा सकता है।

सिर्फ "पायथन वर्चुअल वातावरण" के लिए Google और आपको वह सब कुछ मिल जाएगा जो आपको चाहिए।

यदि आप एनाकोंडा पायथन का उपयोग कर रहे हैं तो यह थोड़ा अलग है। "कोंडा पर्यावरण" के लिए Google।

यदि आप होस्ट पीसी पर कमांड प्रॉम्प्ट भी प्राप्त नहीं कर सकते हैं - उदा। आप फ़ाइलों को ज़िप करते हैं और उन्हें तैनात करने के लिए किसी और को देते हैं - आप अभी भी वर्चुअल वातावरण का उपयोग कर सकते हैं। आपको बस अपनी स्क्रिप्ट के साथ वर्चुअल वातावरण को ज़िप करना होगा। एनाकोंडा के साथ आप -p स्विच का उपयोग कर अपने प्रोजेक्ट के समान वातावरण में पर्यावरण को बनाए रखने की व्यवस्था कर सकते हैं। मुझे लगता है कि पाइपेंव में कुछ समान है।

या आप सब कुछ पैकेजर के साथ पैकेज कर सकते हैं, जो सभी मॉड्यूल के साथ स्टैंड-अलोन रनटाइम बनाता है।

संबंधित मुद्दे