में बफर प्राप्त करें बस यह जानना चाहते हैं कि हम सी # में अपने सीरियल पोर्ट के प्राप्त बफर को कैसे साफ़ करते हैं। ऐसा लगता है कि प्राप्त बफर में डेटा जमा हो रहा है। उदाहरण के लिए, आने वाले डेटा का प्रवाह है: [डेटा ए], [डेटा बी], [डेटा सी]। जो डेटा मैं चाहता हूं वह सिर्फ [डेटा सी] है। मैं ऐसा करने की सोच रहा हूं, जब मुझे [डेटा ए] और [डेटा बी] प्राप्त होता है, तो मैं एक स्पष्ट बफर करता हूं। केवल जब [डेटा सी] प्राप्त होता है, मैं प्रक्रिया जारी रखता हूं। क्या यह सी # में ऐसा करने का तरीका है?साफ़ सीरियल पोर्ट सी #
उत्तर
आप System.IO.Ports.SerialPort
उपयोग कर रहे हैं तो आपके पास दो तरीकों का उपयोग कर सकते हैं:
DiscardInBuffer()
और DiscardOutBuffer()
बफ़र्स फ्लश करने के लिए।
आप एक सीरियल पोर्ट से डाटा पढ़ने कर रहे हैं:
private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (!this.Open) return; // We can't receive data if the port has already been closed. This prevents IO Errors from being half way through receiving data when the port is closed.
string line = String.empty;
try
{
line = _SerialPort.ReadLine();
line = line.Trim();
//process your data if it is "DATA C", otherwise ignore
}
catch (IOException ex)
{
//process any errors
}
}
सहायता के लिए धन्यवाद। मेरा ट्रांसमीटर हमेशा डेटा संचारित करेगा। क्या यह है कि मेरा सी # प्रोग्राम प्राप्तकर्ता हमेशा प्रक्रिया के लिए डेटा प्राप्त नहीं कर रहा है। यदि मैंने डेटा को संसाधित नहीं किया है, तो प्राप्त बफर डेटा को सही तरीके से जमा करेगा? तो क्या यह है कि जब मैं प्राप्त डेटा संसाधित नहीं कर रहा हूं तो मुझे हमेशा DiscardInBuffer() करना होगा? – maniac84
@ maniac84 हां यह ठीक होना चाहिए। वैकल्पिक रूप से आप बफर पढ़ सकते हैं, और अपने एप्लिकेशन तर्क में, प्राप्त डेटा को अनदेखा कर सकते हैं। क्या हमेशा एक समान समाप्ति चरित्र होता है? मेरा संपादन देखें। – Simon
उपयोग port.DiscardOutBuffer(); and port.DiscardInBuffer();
सीरियल पोर्ट बफ़र्स
स्पष्ट करने के लिए आप की तरह
port.DiscardOutBuffer();
port.DiscardInBuffer();
port.Close();
port.DataReceived -= new SerialDataReceivedEventHandler(onDataReceived);
port = null;
उपयोग कर सकते हैं दो बफ़र्स रहे हैं। एक बफर सीरियल पोर्ट से जुड़ा होता है और दूसरा इसकी बेस स्ट्रीम के साथ होता है, जहां पोर्ट बफर से डेटा स्ट्रीम किया जाता है। डिस्कार्ड इन बफर() को केवल सीरियल पोर्ट बफर से डेटा हटा दिया जाता है। बेस स्ट्रीम में अभी भी डेटा है जिसे आप पढ़ेंगे। तो, DiscardInBuffer का उपयोग करने के अलावा, SP.BaseStream.Flush() का भी उपयोग करें। अब आपके पास एक साफ स्लेट है! यदि आपको बहुत अधिक डेटा नहीं मिल रहा है, तो बस बेस स्ट्रीम से छुटकारा पाएं: SP.BaseStream.Dispose()।
चूंकि आपको अभी भी डेटा प्राप्त होने वाला ईवेंट मिल रहा है, इसलिए आप इसे पढ़ सकते हैं और खुद को डेटा खोने की खतरे में डाल सकते हैं।
- 1. सीरियल पोर्ट (सी/सी ++)
- 2. सी को सीरियल पोर्ट
- 3. सीरियल पोर्ट
- 4. सीरियल पोर्ट
- 5. सीरियल पोर्ट
- 6. सीरियल पोर्ट
- 7. सीरियल पोर्ट
- 8. सीरियल पोर्ट संचार: सीरियल पोर्ट डेटा का उपयोग कर बनाम सीरियल पोर्ट बनाम
- 9. सीरियल पोर्ट के बफर
- 10. आरएस -223 सीरियल पोर्ट
- 11. सीरियल पोर्ट से पढ़ना
- 12. सीरियल पोर्ट केबल अनप्लग्ड
- 13. मल्टीथ्रेडिंग और सीरियल पोर्ट
- 14. यूएसबी से सीरियल पोर्ट
- 15. सीरियल पोर्ट को ठीक से
- 16. क्यूटी और सीरियल पोर्ट प्रोग्रामिंग
- 17. सी # एक पोर्ट पर एकाधिक उपकरणों के साथ सीरियल संचार
- 18. डी का उपयोग कर सीरियल पोर्ट या यूएसबी पोर्ट?
- 19. सीरियल पोर्ट काम नहीं कर रहा है?
- 20. लिनक्स सीरियल पोर्ट श्रोता और दुभाषिया?
- 21. डेल्फी पर सीरियल पोर्ट को सुनना 7
- 22. अरुडिनो सीरियल ऑब्जेक्ट डेटा प्रकार, एक पोर्ट
- 23. सीरियल पोर्ट रीडलाइन बनाम रीडएक्सस्टिंग या सीरियल पोर्ट से डेटा को सही तरीके से कैसे पढ़ा जाए
- 24. सीरियल पोर्ट संचार त्रुटि, "अनुरोधित संसाधन उपयोग में है।"
- 25. सीरियल
- 26. डेटा को सीरियल पोर्ट में कैसे स्थानांतरित करें?
- 27. वेब वातावरण में सीरियल पोर्ट का उपयोग करें
- 28. जांचें कि क्या सीरियल पोर्ट सुन रहा है
- 29. वेबपृष्ठ में सीरियल पोर्ट से कैसे पढ़ा जाए
- 30. कैसे बफर में सीरियल पोर्ट संचार पढ़ना और पूरा संदेशों
आप धारावाहिक बंदरगाह का उपयोग कैसे कर रहे हैं? क्या आप 'System.IO.Ports.SerialPort' का उपयोग कर रहे हैं? – Dai