2008-10-26 11 views
8

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

उत्तर

6

सीरियल पोर्ट के साथ इंटरफेस करने के लिए, आप "COM9" के माध्यम से एक विशेष फ़ाइल नाम "COM1" के साथ एक फ़ाइल खोलते हैं। उच्च संख्या वाले सीरियल बंदरगाहों के लिए, विशेष फ़ाइल नाम \\? \ के साथ शुरू होता है, जो सी/सी ++ कोड में "\\\\ \\ COM10", आदि से बच जाना चाहिए।

http://msdn.microsoft.com/en-us/library/ms810467.aspx वास्तव में अच्छा है धारावाहिक बंदरगाह का उपयोग करने पर ट्यूटोरियल। ध्यान दें कि आपको Windows फ़ाइल I/O फ़ंक्शन जैसे CreateFile(), ReadFile(), और WriteFile() का उपयोग करना चाहिए। मुझे यकीन नहीं है कि यह मानक I/O फ़ंक्शंस जैसे fopen(), fread(), और fwrite() का उपयोग करने के लिए काम करेगा।

+0

क्या आपको लगता है कि लिंक किया गया आलेख अभी भी प्रासंगिक है? क्या इन दिनों कोई बेहतर तरीका है? – baordog

+0

@baordog लिंक किए गए आलेख [बिल्कुल अच्छा नहीं है] (http://stackoverflow.com/questions/25364525/win32-api-how-to-read-the-serial-or-exit-within-a-timeout -यदि-एकदम चमक एक डेटा)। –

0

मेरा मानना ​​है कि आपको सी # के लिए बहुत सारे नमूना कोड मिलेंगे, साथ ही यदि आपको वीसी 6 बहुत प्राचीन लगता है। मुझे लगता है कि "फ्री" सीरियल/कॉम पोर्ट रैपर का भी एक गुच्छा है, लेकिन जब मैंने सॉफ्टवेयर के आरएस 232 डिवाइस कंट्रोलर टुकड़े को लिखा था तो मैंने अभी अपना खुद लिखा था।

गूगल सी # और सीरियल पोर्ट या RS232

मुझे मिल इन:

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx

आप कोई समस्या नहीं एक गूगल खोज के साथ उपयुक्त कोड खोजने होना चाहिए।

1

Boost:asio हाल ही में एक सीरियल डिवाइस जोड़े जाने में मदद करने में सक्षम हो सकता है।

हालांकि उचित चेतावनी; सीरियल पोर्ट प्रलेखन प्रकाश है, संभवतः यह काफी नया है (इसे एएसओ 1.1.1 में जोड़ा गया था जो कि 1.36 को बढ़ावा देने में शामिल था)।

लेकिन कच्चे Win32 API का उपयोग करने से बेहतर समाधान, आईएसएचओ, आईएसओओ के माध्यम से अपना रास्ता काम कर रहा है। क्यूं कर? इसे पढ़ने और बनाए रखना आसान होगा (यह एक उच्च स्तरीय एपीआई है) और यह क्रॉस प्लेटफ़ॉर्म होगा (सिवाय इसके कि आपको ओएस-विशिष्ट डिवाइस नाम निर्दिष्ट करने की आवश्यकता है)।

Boost - Users और asio.user मेलिंग सूचियां काफी सक्रिय और मैत्रीपूर्ण हैं और यदि आप अटक जाते हैं तो आपकी मदद करने में सक्षम होना चाहिए।

+0

बूस्ट बहु-थ्रेडेड प्रोग्रामों में Win32 त्रुटि जांच का एक भयानक काम करता है। यह 'WaitForSingleObject' के लिए वापसी मानों को पूरी तरह से अनदेखा करता है। यदि आप थ्रेडेड प्रोग्राम में अपनी बग को ट्रैक करने का प्रयास नहीं करते हैं, तो अपने जोखिम पर प्रयोग करें। – jww

1

यदि .NET 2.0 का उपयोग System.IO.Ports और this article देखें उपयोगी होना चाहिए। यदि सीधे Win32, तो Adam's answer सबसे अच्छा है।