串行端口只读取一次
本文关键字:一次 读取 串行端口 | 更新日期: 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();
解决了我的问题。