串口只读一次

时间:2014-04-25 10:35:51

标签: c# serial-port

以下代码被多次调用以从串行端口读取数据,以响应发送到附加芯片的不同命令。引脚端子。
但是,在第一个命令之后它没有报告任何进一步的答复 虽然那里有数据,但是对于以下命令,不会拾取或读取。

我该如何解决?

我正在使用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);
}

1 个答案:

答案 0 :(得分:0)

我认为如果您使用计时器,那么您可以阅读剩余数据

 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();     }