2009-05-04 11 views
6

मुझे आश्चर्य है कि आरएस -223 हैंडशेकिंग लाइनों को सीधे Win32 (पुराना सी-एपीआई) से नियंत्रित करना संभव है या नहीं।आरएस 232 (कॉम-पोर्ट) आरटीएस/सीटीएस/डीटीआर/डीएसआर का निम्न स्तर का नियंत्रण संभव है?

मैं हार्डवेयर के बाहरी टुकड़े के साथ इंटरफ़ेस करना चाहता हूं, और मेरी ज़रूरतों के लिए दो सरल डेटा-लाइन पर्याप्त होंगी।

तो - क्या Win32 के लिए एक एपीआई है जो मुझे चार स्थिति रेखाओं की स्थिति को पढ़ने और लिखने देती है? सामान्य धारावाहिक संचार में हैंडशेकिंग लाइनें स्वचालित रूप से यूएआरटी द्वारा संचालित होती हैं (यदि हार्डवेयर हैंडशेकिंग सक्षम है)।

मुझे याद है कि यह डॉस के तहत छोटा था। सिर्फ एक को सीधे यूएआरटी प्रोग्राम करना पड़ा। क्या यह कार्यक्षमता Win32 में किसी भी तरह से बची हुई है?

उत्तर

5

आप SetCommState() का उपयोग कर आरटीएस और डीटीआर को नियंत्रित कर सकते हैं। आप हार्डवेयर या ड्राइवर को हार्डवेयर प्रवाह नियंत्रण (सीटीएस और/या डीएसआर) को संभालने के लिए चीजों को भी सेट कर सकते हैं, या आप SetCommMask() का उपयोग करके चीजों को सेट अप कर सकते हैं ताकि जब वे संकेत बदलते हैं तो आपको ईवेंट मिलते हैं।

एक सभ्य अवलोकन यहां है: http://msdn.microsoft.com/en-us/library/ms810467.aspx

ध्यान दें कि Win32 सीरियल कॉम API और/या ड्राइवर नकचढ़ा हो सकता है, तो क्या तार पर चल रहा है में से कुछ डिबगिंग क्या करना है के लिए तैयार रहना।

+0

बिल्कुल वही जो मैं खोज रहा था। धन्यवाद। –

0

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

0

क्या माइक्रोसॉफ्ट वास्तव में हार्डवेयर हैंडशेकिंग कर रहा है? कई वर्षों तक एनटी, win2000 और XP हार्डवेयर में हैंडशेकिंग नहीं करते थे। इसके बजाए जब फीफो एक निश्चित बिंदु पर पहुंचा तो डिवाइस चालक मैन्युअल रूप से सीटीएस लाइन को बदल देगा। जिसका अर्थ है कि डिवाइस चालक डेटा खोने के लिए अविश्वसनीय रूप से सरल था, माउस के साथ एक खिड़की पकड़ो और स्क्रीन के चारों ओर सर्किल करें उदाहरण के लिए (सुनिश्चित करें कि आप स्क्रीन के बाईं ओर उस विंडो को सभी या कुछ पासों पर ले जाएं)। पूर्ण स्क्रीन से/कमांड प्रॉम्प्ट लेने के लिए Alt-Enter डेटा हानि का कारण बनने का एक आसान तरीका था। या कुछ और जो अंतःस्थापित विलंबता का कारण बनता है। मूल रूप से माइक्रोस्कोफ्ट हार्डवेयर प्रवाह नियंत्रण हार्डवेयर नहीं है लेकिन सॉफ्टवेयर प्रवाह नियंत्रण है, भले ही हार्डवेयर में हार्डवेयर प्रवाह नियंत्रण क्षमताएं हों, माइक्रोस्कोफ्ट के ड्राइवर उस बिट को सेट नहीं कर रहे थे। सागरलेवल ने आखिरकार उस बिट का समर्थन किया, ठीक है, आपको इसे सक्षम करने के लिए SetCommState() में सही असंबद्ध सेटिंग्स डालना पड़ा।

जहां तक ​​आपका प्रोग्राम सिग्नल को नियंत्रित करता है, SetCommState() का उपयोग करें।

+0

यह कुछ समय हो गया है क्योंकि मैंने इस सामान पर काम किया था, लेकिन मेरी याददाश्त यह है कि पीसी दुनिया में मानक समस्या 8250/16550 यूएआरटी हार्डवेयर हैंडशेकिंग ऑन-चिप को संभालती नहीं है। यह विन ड्राइवर का मुद्दा नहीं है - यह केवल हार्डवेयर के समर्थन का समर्थन कर सकता है। डिवाइस को बाधा के दौरान ड्राइवर को स्थिति प्राप्त करनी होती है और हैंडशेकिंग लाइनों को टॉगल/समझना पड़ता है।सागरवेल या हेस के पास अधिक बुद्धिमान हार्डवेयर था (या है) और उनके ड्राइवर इसका लाभ उठाएंगे। साथ ही, यह निश्चित रूप से सच है कि शुरुआती विंडोज चालक वास्तव में वास्तव में खराब थे, लेकिन अंत में वे पर्याप्त रूप से पर्याप्त या कम अच्छे हो गए। –

2

मैं this ट्यूटोरियल में भाग गया जब मुझे आरएस 232 पोर्ट के साथ संवाद करने के लिए एक परियोजना करना पड़ा। पोर्ट बंद करने के तरीके पर यह एक पूर्ण उदाहरण है, टाइमआउट सहित कुछ गुण सेट करें, पोर्ट को पढ़ें/लिखें और बंद करें। भले ही आपकी परियोजना अब तक खत्म हो गई है, मुझे उम्मीद है कि यह उपयोगी रहेगा क्योंकि यह एसओ अभिलेखागार में बनी हुई है।

+0

आपका यह लिंक मर चुका है। क्या आपको कम से कम इसका शीर्षक याद है? – Wolf

+1

वेबैकमैचिन इंटरनेट आर्काइव: [सीरियल हाउ टू टू - RobBayer.com] (http://web.archive.org/web/20081121174350/http://www.robbayer.com/serial के माध्यम से एक्सेस करना अभी भी संभव है। PHP) [विंडोज सीरियल पोर्ट प्रोग्रामिंग - रॉबर्टसन बेयर (पीडीएफ)] (http://web.archive.org/web/20111027074853/http://www.robbayer.com/files/serial-win.pdf) –

0

कुछ यूएसबी सीरियल एडाप्टर हैं जो डीटीआर/डीएसआर/डीसीडी प्रवाह नियंत्रण का समर्थन नहीं करते हैं। तो यह आपका मामला हो सकता है।

http://www.digi.com/support/kbase/kbaseresultdetl?id=588

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