シリアル ポートからデータを読み取る C# アプリケーションがあります。タイマーで1秒ごとにデータが来るので、1秒間隔でシリアル読み取りハンドラーをタイマーに入れました。
delegate void SetTextCallback(string text);
ReceivedText(serialPort1.ReadExisting());
また、受信したデータをリッチテキストボックスに表示して、適切なデータが取得されているかどうかを確認しています。しかし、15 ~ 20 分後にアプリケーションの速度が低下し、応答さえしなくなります。
private void ReceivedText(string text)
{
if (this.rtbReceived.InvokeRequired)
{
SetTextCallback x = new SetTextCallback(ReceivedText);
this.Invoke(x, new object[] { (text) });
}
else
{
this.rtbReceived.Text += text;
serialdata = text;
if (serialdata.Length > 0 &&
serialdata.Length < 42 &&
serialdata.Contains("#") ||
serialdata.StartsWith(" #"))
{
serialdata.Trim();
splitdata = serialdata.Split(' ');
try
{
txtBathTemp.Text = splitdata[3];
txtBaroPressure.Text = splitdata[4];
double stemp = double.Parse(splitdata[5]);
txtSampleTemp.Text = (Math.Round(stemp, 2)).ToString();
}
catch (Exception EX)
{
MessageBox.Show(ex.Message);
}
}
}
}