पार्स आउट कर मैं एक कॉम बंदरगाह से मूल्यों को पढ़ने के लिए निम्नलिखित कोड का उपयोग कर रहा:कैसे बफर में सीरियल पोर्ट संचार पढ़ना और पूरा संदेशों
Private port As New SerialPort("COM13", 9600, Parity.None, 8, StopBits.One)
Private Sub port_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
Debug.Print(port.ReadExisting())
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler port.DataReceived, New SerialDataReceivedEventHandler(AddressOf port_DataReceived)
port.Open()
End Sub
यह सिर्फ ठीक काम करता है, लेकिन हर अब और फिर इसे पाने does not को सभी डेटा और बदले में परिणाम केवल एक के बजाय दो तारों में होते हैं।
एक उदाहरण अगर कॉम पोर्ट शब्द पर भेज रही थी होगा "HELLO2YOU" यह देखने के लिए किया गया था की तरह:
HEL
LO2YOU
या
HELLO2
YOU
कैसे मैं एक बफर में वहाँ जगह कर सकते हैं ताकि यह सुनिश्चित करता है कि इसे प्रदर्शित करने से पहले सभी डेटा पढ़े गए हैं?
धन्यवाद!
हंस सही है कि रीडलाइन() एक "न्यूलाइन" मान द्वारा समाप्त किए गए पूर्ण संदेश प्राप्त करने का एक आसान तरीका है। हालांकि, मैं रीडलाइन का उपयोग करने से बचूंगा क्योंकि इसे सामान्य रूप से अवरुद्ध करने वाले फ़ंक्शन के रूप में कार्यान्वित किया जाता है और आपके जीयूआई और अन्य कार्यों के प्रदर्शन को कम कर देगा। आम तौर पर जब तक मैं समाप्ति चरित्र प्राप्त नहीं करता तब तक मैं वर्णों को एक सरणी में बफर कर दूंगा, फिर कमांड पार्सर को कॉल करें। – Jeff
नहीं, जब आप इसे DataReceived ईवेंट हैंडलर में नहीं कहते हैं, तो यह थ्रेडपूल थ्रेड पर चलता है। –