我用2005的SerialPort控件来读取串口数据
串口不停的给我的程序发送数据  格式如: 1222A1222A1235A
我想获取里面的数字。
因为我要时时取得最新的数据。所以
1 我在读前先清空了一下缓存。也就是调用了DiscardInBuffer()方法。
2 然后马上去读 。执行ReadTo("A")。
但是这样读出来的很不准确 经常取到空值
我分析是调用DiscardInBuffer()方法的时候..刚好把数字给去掉.结果读到"A"的时候肯定是个空值有什么好的方法能实现吗?谢谢大家了

解决方案 »

  1.   

    先设置换行标志为A,然后readline,放弃第一个数据
      

  2.   

    串口通讯最好用C++
    不过我用c#在2003也做过串口通讯,用的是MSComm控件,VS6.0里的,通信一般用多线程.至少发送和接收要分开.2005中注册了MSComm控件.SerialPort没用过,很陌生,呵呵!
    最主要的是通过事件的方法触发接收数据,就是当串口接收到数据后,并接收完毕后才响应程序,把接收缓冲区里的数据全部提取.如果再次接收到数据,就启用一个新线程接收,这样接收到的数据就不会因为冲突而丢失.