2011-10-10 11 views
6

मैं वर्चुअल COM पोर्ट के माध्यम से हार्डवेयर डिवाइस से बात करने की कोशिश कर रहा हूं। होस्ट कंप्यूटर पीसी विंडोज ओएस पीसी है। डिवाइस 921600 बॉड दर के साथ काम कर रहा है। इस कोड काम करता है:कस्टम बॉड दर

 
dcb.BaudRate = 921600; 

SetCommState पिछले त्रुटि 0x57 (पैरामीटर सही नहीं है) के साथ विफल रहता है:

 
DCB dcb; 
... 
dcb.BaudRate = CBR_115200; 
SetCommState(hPort, &dcb); 

एक बार मैं बॉड दर बदल जाते हैं। क्या इसका मतलब यह है कि विंडोज एपीआई पूर्व निर्धारित मूल्यों को छोड़कर किसी भी बॉड दर को रोकता है? या हो सकता है कि वर्चुअल COM पोर्ट को इस बॉड दर को अनुमति देने के लिए कॉन्फ़िगर किया जा सके?

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

+2

यदि यह एक है वर्चुअल COM पोर्ट, आमतौर पर कॉन्फ़िगर किए गए बॉड दर से कोई फर्क नहीं पड़ता।यदि आप दर को 9600 या 4800 तक घटाते हैं, तो क्या आप इसे धीमा कर देते हैं? मुझे संदेह है कि यह नहीं होगा। – Brad

+1

कैमरालिंक के साथ अपने अनुभव से: COM पोर्ट केवल कैमरे को कॉन्फ़िगर करने के लिए प्रदान किया जाता है और मानक कम डेटा दर (आमतौर पर 9600बाउड) के साथ काम करना चाहिए। कैमरालिंक स्वयं बहुत तेज़ है लेकिन COM पोर्ट से गुजरता नहीं है। अन्य कार्यान्वयन गैर मानक हैं। (देखें [कैमरालिंक विनिर्देश] (http://www.lord-ing.com/web/IMG/pdf/Camera_Link-2.pdf)) –

+0

@ एड्रियन प्लिसन: कैमरलिंक विनिर्देश के अनुसार, कैमरे और फ्रेम हथियारों को समर्थन देना चाहिए कम से कम 9600 बॉड। दरअसल, फ्रेम हथियार मैं समर्थन 115200 के साथ काम कर रहा हूं। ऐसा लगता है जैसे फ्रेम हथियार मुझे रोकता है, न कि विंडोज़। –

उत्तर

6

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

BaudRate बॉड दर जिस पर संचार डिवाइस संचालित होता है। यह सदस्य वास्तविक बॉड दर मान या निम्न अनुक्रमणिका में से एक हो सकता है। CBR_110। CBR_300, CBR_600, CBR_1200, CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400, CBR_57600, CBR_115200, CBR_128000, CBR_256000

तो सिद्धांत रूप में कम से कम आप कोई समस्या नहीं स्थापित करने सीरियल पोर्ट अपने का अनुरोध गति होनी चाहिए।

यह भी और नीचे कुछ संयोजनों, जो अमान्य (जब 8250 धारावाहिक चिप प्रोग्रामिंग विशेष रूप से) कर रहे हैं

टिप्पणियां जब एक DCB संरचना 8250 कॉन्फ़िगर करने के लिए प्रयोग किया जाता है, तो निम्न प्रतिबंध लागू होते हैं देखते हैं कि कहा गया है बाइटसाइज और स्टॉपबिट सदस्यों के लिए निर्दिष्ट मानों के लिए: डेटा बिट्स की संख्या 5 से 8 बिट्स होनी चाहिए। 2 स्टॉप बिट्स के साथ 5 डेटा बिट्स का उपयोग एक अमान्य संयोजन है, जैसा कि 6 स्टॉप बिट्स के साथ 6, 7, या 8 डेटा बिट्स है।

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

हो सकता है कि आपका बॉड्रेट ठीक है, लेकिन उस बॉड्रेट को चुनकर आप स्टॉप बिट्स या समानता लंबाई की संख्या को अमान्य कर रहे हैं, जिसे जब बॉड्रेट मानक सेटिंग पर वापस सेट किया जाता है तो फिर वैध हो जाता है।

मुझे आपके हार्डवेयर से पता नहीं है इसलिए मैं 100% नहीं कह सकता हूं, अगर मैं मामला सामान्य रूप से सीरियल पोर्ट प्रोग्रामिंग जानता हूं, लेकिन व्यक्तिगत रूप से, मेरा अगला कदम बॉड्रेट को सेट करना होगा मुझे इसके बाद छोड़ने की ज़रूरत है, ब्लॉक में अन्य झंडे के सभी अलग-अलग संयोजनों को आजमाएं।

DCB संरचना के लिए सरकारी MSDN पेज यहां पाया जा सकता:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363214(v=vs.85).aspx

तुम भी बहुत कुछ मदद की BuildCommDCB समारोह मिल सकता है:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363143(v=vs.85).aspx

+0

मेरी बंदरगाह सेटिंग्स बहुत मानक हैं: बाइट आकार 8, समानता कोई नहीं, प्रवाह नियंत्रण कोई नहीं, बिट्स को रोकें 1. इस बीच, मुझे कैमरलिंक बोर्ड विक्रेता से जानकारी मिली, कि यह बॉड दर समर्थित नहीं है। BuildCommDCB लिंक के लिए धन्यवाद :) –

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