私のフォーム アプリケーションでは、シリアル ポートを使用してシリアル データを読み取り、後で使用するためにそれらをリストに保存しています。停止ボタン イベントがありますが、ボタンをクリックしてもフォームが終了しません。フォームには、シリアル ポートから取得した解析済みの値を表示するテキスト ボックスが含まれています (解析プロセスは、[開始] というボタンをクリックすると開始されます)。私の目的は、停止ボタンが押されたときにシリアル ポートからのデータの受信を一時停止することです。現在、Start ボタンをクリックするとデータの読み込みが始まりますが、Stop ボタンがなぜか機能しません。
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
serialPort1.NewLine = "-";
RxString = serialPort1.ReadLine();
RxString = RxString.Replace("$", "");
this.Invoke(new EventHandler(DisplayText));
}
private void DisplayText(object sender, EventArgs e)
{
richTextBox1.AppendText(RxString);
GlobalList.AddRange(parsed());
displayglobal();
graphs();
}
private void Start_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM32";
serialPort1.BaudRate = 9600;
serialPort1.DtrEnable = true;
serialPort1.Open();
if (serialPort1.IsOpen)
{
Start.Enabled = false;
Stop.Enabled = true;
richTextBox1.ReadOnly = false;
}
}
private void Stop_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
Start.Enabled = true;
Stop.Enabled = false;
richTextBox1.ReadOnly = true;
}