मैं एक सीरियल पोर्ट के साथ कैसे कॉन्फ़िगर और संवाद कर सकता हूं?

मुझे धारावाहिक कनेक्शन (आरएस -223 और आरएस -422) पर डेटा भेजने और प्राप्त करने की आवश्यकता है।

मैं इस तरह के कनेक्शन के साथ कैसे स्थापित और संवाद कर सकता हूं? मैं कैसे पता लगा सकता हूं कि कॉन्फ़िगरेशन सेटिंग्स (उदा। बॉड दर) क्या होनी चाहिए और मैं उन्हें कैसे सेट करूं?

विशेष रूप से मैं जावा, सी / सी ++, या प्रमुख यूनिक्स शैल में से एक में ऐसा करने के लिए देख रहा हूं लेकिन मुझे विंडोज / हाइपरटेरमिनल का उपयोग कर सीरियल प्रोग्रामिंग में कुछ रूचि है।

0
जोड़ा
विचारों: 2

11 उत्तर

एक टाइम मशीन बनाएं और 1 9 87 में वापस जाएं? हो हो

ठीक है, और अधिक snarky टिप्पणियां।

मैं कैसे पता लगा सकता हूं कि कॉन्फ़िगरेशन सेटिंग्स (उदा। बॉड दर) क्या होनी चाहिए ...

डेटाशीट पढ़ें? ठीक है। गंभीरता से, आखिरी एक। यदि आप उस उपकरण की बॉड दर नहीं जानते हैं जिसके साथ आप संवाद करने की कोशिश कर रहे हैं, तो आपके पास दो विकल्प हैं। अनुमान लगाना शुरू करें, या संभवतः ओ-स्कोप को बाहर निकालना शुरू करें। यदि आपको एक अच्छा प्रारंभिक बिंदु चाहिए, तो मुझे 9600-8-N-1 का सुझाव दें। मेरा संदेह यह है कि आप अपेक्षाकृत तेज़ी से ब्रूट फोर्स के साथ वहां पहुंच सकते हैं। पुरानी स्कूल निंजा रखने का तीसरा विकल्प है जो कुछ मानक बॉड दर पर गड़बड़ वाले पात्रों के लुक द्वारा बता सकता है कि वास्तविक बॉड दर क्या है। एक प्रभावशाली पार्टी सुनिश्चित करने के लिए चाल है।

उम्मीद है कि आपके पास इस जानकारी तक पहुंच है। यूनिक्स / लिनक्स में, आप सीधे सीरियल पोर्ट के साथ खेलने के लिए मिनीकॉम की पकड़ प्राप्त कर सकते हैं। कॉन्फ़िगरेशन को समझने के लिए इसे काफी तेज़ बनाना चाहिए।

प्रमुख यूनिक्स शैल में से एक

यूनिक्स में सीरियल पोर्ट / dev / subdir में फ़ाइल-मैप किया गया है। उदाहरण के लिए, ttyS0। यदि आप सही बॉड दर और मिनीकॉम का उपयोग नहीं करते हैं, तो आप वहां मौजूद सामान भेजने के लिए उस फ़ाइल में बिल्ली सामग्री भी कर सकते हैं।

प्रश्न के मांस पर, आप इसे POSIX शीर्षलेख के माध्यम से प्रोग्रामेटिक रूप से एक्सेस कर सकते हैं। termios.h बड़ा है।

See: http://www.easysw.com/~mike/serial/serial.html#3_1 (NOT AVAILABLE ANYMORE)

लेकिन मुझे विंडोज / हाइपरटेरमिनल का उपयोग कर धारावाहिक प्रोग्रामिंग में कुछ रूचि है।

हाइपरटेरमिनल और मिनिकॉम मूल रूप से एक ही कार्यक्रम हैं। विंडोज़ आपको सीरियल पोर्ट तक पहुंचने के तरीके के बारे में बताता है, मैं उस प्रश्न को किसी और के लिए छोड़ दूंगा। मैंने Win95 दिनों के बाद से विंडोज़ में ऐसा नहीं किया है।

0
जोड़ा

काम पर हम सीरियल डेटा की जांच के लिए टेरेटर्म और रीयलरम का उपयोग सही ढंग से स्वरूपित होते हैं। इसके अलावा हमारे पास एक स्विच के साथ एक हार्डवेयर स्प्लिटर है ताकि हम किसी अन्य पोर्ट पर केबल के माध्यम से हमारे एप्लिकेशन पर यातायात की निगरानी कर सकें।

विंडोज आपको CreateFile के माध्यम से सीरियल पोर्ट तक पहुंचने की अनुमति देता है। यह आपको एक हैंडल देता है और वहां से आप एक्सेस कॉन्फ़िगर कर सकते हैं।

0
जोड़ा

थोड़ी देर पहले मैंने मॉडेम के खेत से एक टीसीपी / आईपी नेटवर्क पते के माध्यम से कनेक्शन रूट करने के लिए एक सभ्य आकार का आवेदन लिखा था।

शुरुआत में मैंने एक अनगिनत (फ्री) सीरियल आईओ लाइब्रेरी की तलाश की थी। मैंने सन, आईबीएम और आरएक्सटीएक्स की कोशिश की। वे आवेदन के विकास के लिए ठीक थे, और प्रारंभिक परीक्षण में, लेकिन उत्पादन में वे प्रत्येक अस्थिर साबित हुए।

अंततः मैंने सीरियलियो के सीरियलपोर्ट के लिए भुगतान किया। कनवर्ट करना सचमुच आयात को बदलने में एक अभ्यास था, और पुस्तकालय बिल्कुल रॉक ठोस रहा है - मैं इसे पर्याप्त अनुशंसा नहीं कर सकता। मेरा आवेदन अब कुछ वर्षों से 24/7 क्षेत्र में चल रहा है, कई ग्राहकों द्वारा एक भी समस्या का सामना नहीं किया गया है।

यदि आप सीरियलपोर्ट का उपयोग करके विकास शुरू करते हैं, तो उनके पास एक बेहतर एपीआई है और मैं इसका उपयोग करूंगा।

यदि आपको क्रॉस प्लेटफ़ॉर्म समर्थन की आवश्यकता है, तो SerialPort के साथ जावा सबसे अच्छा विकल्प था जो मुझे मिल सकता था।

आखिरकार, जब तक आप अपने ग्राहक के लिए उपकरण पर प्रीइंस्टॉल नहीं कर रहे हैं, तब तक उनका लाइसेंस बहुत अच्छा है।

0
जोड़ा
@ गिलि: यह कई साल पहले था, आरएक्सटीएक्स के लिए - मैं सीरियलपोर्ट खरीदने के बाद कभी वापस नहीं आया, क्योंकि हमें सीरियलपोर्ट के साथ कभी समस्या नहीं हुई है और कोई रॉयल्टी नहीं है, इसलिए आरएक्सटीएक्स में समय निवेश करने की कोई प्रेरणा नहीं है।
जोड़ा लेखक Lawrence Dol, स्रोत
@ गिली: सीरियलपोर्ट हमारे ग्राहकों द्वारा वर्तमान उत्पादन उपयोग में है।
जोड़ा लेखक Lawrence Dol, स्रोत
आईआईआरसी, अधिकतम बॉड केवल एच / डब्ल्यू द्वारा सीमित रूप से सीमित था - मैंने अपनी कॉन्फ़िगरेशन को 1.3 एमबी तक की अनुमति देने के लिए लिखा था, लेकिन मैं आरएस -223 पर मॉडेम को लक्षित कर रहा था, इसलिए 115 के अधिकतम की जरूरत थी, और संभवतः अधिकतम कभी होगा
जोड़ा लेखक Lawrence Dol, स्रोत
यूएसबी कन्वर्टर्स के साथ संवाद करने के लिए उनका अधिकतम बॉड्रेट क्या है? मैंने अपनी वेबसाइट पर देखा, यह 230400 कहता है लेकिन मैंने कुछ गलत पढ़ा होगा। (230Kbaud मेरे आवेदन के लिए पर्याप्त नहीं है)
जोड़ा लेखक Jason S, स्रोत
आपने आखिरकार आरएक्सटीएक्स और सीरियलपोर्ट का उपयोग कब किया? मैं उत्सुक हूं कि आरएक्सटीएक्स में सुधार हुआ है या नहीं।
जोड़ा लेखक Gili, स्रोत

दूसरी तरफ, यदि आप इसे सी # का उपयोग करना चाहते हैं, जो विंडोज और लिनक्स दोनों पर चलेंगे - कुछ सीमाएं (संपादित करें: जो पुराना हो सकता है। मेरे पास इसका परीक्षण करने का कोई तरीका नहीं है।)। बस एक SerialPort ऑब्जेक्ट बनाएं, इसे सेट करें बॉड्रेट, बंदरगाह और किसी भी अन्य विषम सेटिंग्स, उस पर खुला कॉल करें, और अपने बाइट [] एस लिखें। सभी सेटअप के बाद, SerialPort ऑब्जेक्ट किसी भी नेटवर्क स्ट्रीम के समान काम करता है, इसलिए इसे समझना आसान होना चाहिए।

और ibrandy राज्यों के रूप में, आपको किसी भी धारावाहिक डिवाइस से संवाद करने का प्रयास करने से पहले, बॉड दर जैसी सभी सेटिंग्स को जानना होगा।

0
जोड़ा

जावा से rxtx ( किसी भी उपलब्ध नहीं ) पुस्तकालय काफी अच्छा है। यह उठाता है जहां सूर्य का धारावाहिक आईओ ढांचा बंद हो गया।

0
जोड़ा
उपर्युक्त लिंक मर चुका है। RXTX विकी देखें।
जोड़ा लेखक George, स्रोत

विंडोज़ पर सी / सी ++ के लिए आपके पास (कम से कम) दो विकल्प हैं:

  1. .NET द्वारा प्रदान की गई सीरियलपोर्ट श्रेणी का उपयोग करें।
  2. Win32 एपीआई का प्रयोग करें। 1 99 5 से पहले एक व्यापक एमएसडीएन आलेख है, और कई मुफ्त पुस्तकालय और शुरू करने के लिए वेब पर उदाहरण।

.NET विकल्प बहुत आसान होगा।

0
जोड़ा

यदि इसे क्रॉस प्लैट होने की आवश्यकता है, तो मैं सुझाव देता हूं कि बूस्ट एसियो

0
जोड़ा

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

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

0
जोड़ा

I have been using purejavacomm: It is an implementation of javax.comm written in pure java + JNA

Rxtx के विपरीत, आपको एक डीएलएल स्थापित करने की आवश्यकता नहीं है। यह शुद्ध जावा + जेएनए में लिखा गया है, जिसने मेरे लिए विंडोज और लिनक्स के बीच पोर्टेबिलिटी की समस्या का हल किया। अन्य ओएस-एस को पोर्ट करना आसान होना चाहिए जो जेएनए सोलारिस और फ्रीबीएसडी जैसे समर्थन करता है, लेकिन मैंने कोशिश नहीं की है।

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

0
जोड़ा

यदि आप जावा में कोड करना चाहते हैं तो मैं वास्तव में SerialIOs SerialPort की अनुशंसा करता हूं। इसका उपयोग करना बहुत आसान है और आपको काम के दिन बचाता है। मैंने सीरियलियो के रूप में अच्छा ओपन सोर्स लाइब्रेरी कभी नहीं पाया है, वास्तव में!

मेरी सलाह: सूर्य के धारावाहिक आईओ ढांचे का उपयोग न करें! यह 1 99 8 से और बग से भरा है। आप rxtx का उपयोग कर सकते हैं लेकिन सीरियलियो बेहतर है!

0
जोड़ा

यदि आपको किसी विशेष कंपाइलर का उपयोग करने के लिए मजबूर नहीं किया जाता है तो मैं क्यूटी का उपयोग करने का सुझाव देता हूं और नए 5.3 संस्करण में आपको धारावाहिक बंदरगाहों को समर्पित कक्षा मिल जाएगी:

http://qt-project.org/doc/qt-5/qserialport.html

जो कोड आप लिखेंगे, वह कम से कम उन सभी प्रतिष्ठित क्यूटी प्लेटफॉर्म पर चलाएगा, जिनमें से कम से कम उन सीरियल पोर्ट हैं।

0
जोड़ा