我读取同一个串口的不同地址时,只有第一次读取的时候是对的,以后读取的内容都是错的。
部分代码如下:
 string send = lrc.LRC0103Sum("11F4");
 sport.RtsEnable = true;
//发送数据
sport.WriteLine(send);
//接收数据
 sport.NewLine = "";
string strt = sport.ReadExisting();
sport.DiscardInBuffer();
sport.DiscardOutBuffer();
... ...(省略插入数据库代码)
 string send = lrc.LRC0103Sum("092D");
 sport.RtsEnable = true;
//发送数据
sport.WriteLine(send);
//接收数据
 sport.NewLine = "";
string strt = sport.ReadExisting();
sport.DiscardInBuffer();
sport.DiscardOutBuffer();
现在问题有所发生变化,得到的数据有时正确,有时错误!十分不稳定!

解决方案 »

  1.   

    不知道怎么说才好你发送数据跟接收数据竟在一个方法里?增加一个接收数据的事件吧
    _sport.DataReceived,在此事件里专门做接收数据的处理,完了再看看有没问题
      

  2.   

    不稳定就对了,顺便补充楼上串口操作的特性首先要了解。 当你发送一条数据给设备,设备反馈是不定时的。
    需要用 SerialPort_DataRecived 来进行接收。 
    就是在DataRecived事件里,接收的数据也可能跟自己想象的不一样,因为不一定接收了几个字节就激活DataRecived事件。 这个需要自己做特别处理。 将接收到得数据缓冲到一起。延时进行处理。或者根据通信协议卡位置读取。