シリアルポートからデータを読み取っています。データはスケールから外れます。を削除した後でも、現在使用してReadline()
おり、データが削除されてDiscardInBuffer()
います。
シリアルポートからデータを読み取る適切な方法は何ですか? オンラインでの例は非常に少ないため、誰も理解していない聖杯のように感じます.
C#、WinCE 5.0、HP シン クライアント、コンパクト フレームワーク 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()
私のアプリケーションで注意すべきことの 1 つは、カーソルがテキスト ボックスにジャンプしたときにスレッド (weighSample) を開始することです。これは、重量を手動で入力することもできるためです (要件の一部)。そのため、ユーザーが天びんの PRINT を押すか、重量を入力するかは事前にわかりません。どちらの場合も、データを取得したら、ワーカー スレッドを終了します。また、シリアル ポート イベント DataReceived を使用していないことに注意してください。これは、信頼できないと言われているためです。
これは、シリアルポートを使用した最初の経験です。