シリアルポートからデータを読み取っています。データはスケールから外れます。現在Readline()
を使用していて、DiscardInBuffer()
を削除してもデータが失われています。 シリアルポートからデータを読み取る適切な方法は何ですか?オンラインの例があまりないので、誰も理解していないような聖杯のような感じです。シリアルポートReadLine対ReadExistingまたはシリアルポートからデータを正しく読み取る方法
お願いします。
シリアルポートのように見えますが、変な子です。私のアプリケーションについて注意する
のC#、ひるみ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()
一つは、カーソルがテキストボックスの上にジャンプしたときに、私は、スレッド(weighSample)を開始することです。これは、体重を手動で入力することもできる(reqの一部)。だから私はユーザーが天秤でPRINTを押すか重量を入力するかどうかを事前に知らない。どちらの場合でも、データが取得された後、私はワーカースレッドを終了します。また、私はそれが信頼できないと言われているので、私はシリアルポートイベントDataReceivedを使用していないことに注意してください。
コメント/アイディアを歓迎します。これはシリアルポートでの私の最初の経験です。
どの言語、オペレーティングシステム、ハードウェアプラットフォームなど? – MarkusQ
あなたはどのようなデータを読んでいますか?バイナリ?テキスト? – Eddie
私はテキストデータを読み取っています – sarsnake