串行端口只读取一次

本文关键字:一次 读取 串行端口 | 更新日期: 2023-09-27 18:00:10

以下代码被多次调用,以从串行端口读取数据,以响应发送到连接芯片的不同命令&引脚端子
然而,在第一次命令发出后,它没有报告任何进一步的响应
尽管那里有数据,但以下命令不会被拾取或读取。

我该怎么解决?

我正在使用ReadExisting串行端口属性。

private void MySerialReader() 
{
    ip_serialport.Open();
    ip_serialport.DataReceived += serialPort_DataReceived;
    //ip_serialport.Close(); //This causes the problems
}
public string RxString;
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{
    RxString = ip_serialport.ReadExisting();
    this.Invoke(new EventHandler(DisplayText_RX)); //<<-- ????!!! 
}
private void DisplayText_RX(object sender, EventArgs e) 
{
    RX_Box.Items.Add(RxString);
}

串行端口只读取一次

我认为如果你使用定时器,那么你可以读取剩余的数据

 private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) 
    {
        RxString = ip_serialport.ReadExisting();
        this.Invoke(new EventHandler(DisplayText_RX));
    }
private void DisplayText_RX(object sender, EventArgs e) 
{
    RX_Box.Items.Add(RxString);
if(RxString!="")
    timer.start();
}
 void timer_Tick(object sender, EventArgs e)
{
  if(serialport.isopen)//check for open 
{
    RxString = ip_serialport.ReadExisting();
    this.Invoke(new EventHandler(DisplayText_RX));
}

timer.stop();}

替换:

RxString = ip_serialport.ReadExisting();

带有:

RxString = ip_serialport.ReadLine();

解决了我的问题。