自发自收, 是怎么实现的?既然自发自收, 只要收到的字节总数没错, 就可以了, 串口传送是有速度的, 速度不够快, 就有可能一次收不完,
接收代码没有问题, 也不存在有8字节的限制, 也不是readbuffersize有问题,因为第二次收到了更多,实在要找问题, 
请到发送端找问题

解决方案 »

  1.   

    设置SerialPort.ReceivedBytesThreshold 属性可以使串口收到多少个字节数再触发DataReceived事件.
    默认值为1,有可能收到8个系统正好给你触发了事件.在我的机子上没设这个自发自收是触发事件时收到的包是不定的/
      

  2.   

    试了下确实是这样的,如果想显示完整的话用readbyte把缓冲区的数据存在数组中在转换输出
      

  3.   

    告诉你解决这个问题的终极大法,把receivetimeout设成3000,在接收的事件开始加上Thread.Sleep(300);就行了,300这个什越大就收得越多,但也越慢。
      

  4.   

    另外 如果知道数据的结尾符就最好了,可以装到数组里面后统一处理,COM中数据似乎不是很稳定,容易最外界影响丢失数据。