我正在从串口读取数据。数据超出规模。即使Readline()
在删除DiscardInBuffer()
.
从串口读取数据的正确方法是什么?网上的例子太少了,我觉得这就像一个没有人发现的圣杯。
C#、WinCE 5.0、HP 瘦客户端、Compact 框架 2.0
private void WeighSample()
{
this._processingDone = false;
this._workerThread = new Thread(CaptureWeight);
this._workerThread.IsBackground = true;
this._workerThread.Start();
} //end of WeighSample()
private void CaptureWeight()
{
globalCounter++;
string value = "";
while (!this._processingDone)
{
try
{
value = this._sp.ReadLine();
if (value != "")
{
if (value == "ES")
{
_sp.DiscardInBuffer();
value = "";
}
else
{
this.Invoke(this.OnDataAcquiredEvent, new object[] { value });
}
}
}
catch (TimeoutException)
{
//catch it but do nothing
}
catch
{
//reset the port here?
MessageBox.Show("some other than timeout exception thrown while reading serial port");
}
}
} //end of CaptureWeight()
关于我的应用程序要注意的一件事是,当光标跳到文本框上时,我启动了线程 (weighSample)。原因是重量也可以手动输入(部分要求)。所以我事先不知道用户是要按天平上的 PRINT 还是输入重量。无论哪种情况,在获取数据后,我都会退出工作线程。另外,请注意我没有使用串行端口事件 DataReceived,因为我被告知它不可靠。
这是我第一次使用串口。