gpt4 book ai didi

c# - 串行端口数据形式的停止按钮功能使其无响应

转载 作者:行者123 更新时间:2023-11-30 18:35:01 26 4
gpt4 key购买 nike

在我的表单应用程序中,我正在使用串行端口读取串行数据并将它们存储在列表中以供进一步使用。我有一个停止按钮事件,但单击该按钮时,表单不会终止。该表单包含文本框,显示从串行端口获得的解析值(解析过程通过单击名为 Start 的按钮启动)。我的目标是在按下停止按钮时暂停从串口接收数据。截至目前,当单击开始按钮时,数据读取开始,但由于某种原因,停止按钮不起作用。

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;



}

最佳答案

我通常做的不是突然关闭串行端口,而是在读取行之前进行检查。比如说,你的状态是开还是关。并从事件接收外部更改状态。只要缓冲区中有可用数据,事件接收总是会触发。1. 当数据可用时,事件接收是火2.创建条件如果status为ON,则执行readline,否则忽略readline。3. 在“停止”按钮中将设置状态设置为“关闭”,在“开始”按钮中设置为“打开”。4. 当您认为不需要通讯时,您可以关闭它。

希望这对您有所帮助。

关于c# - 串行端口数据形式的停止按钮功能使其无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15569103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com