不用改来改去,你的帧长是固定的(11个字符),所以设置接收11个字符通知就行了。第一次接收时先将接收缓冲区清除一次。以后收到通知时一次只读11个字符就行了。如果想做的好的,把缓冲区的所有字符都读出,找到帧头,取11个字符,然后再分析后来的,如果不足一帧,保留,下次再收到数据后,将这两次的数据合并后再分析。不过这种做法看似好,实际有点多余。

解决方案 »

  1.   

    你可能没明白我的意思,我要的就是读新发上来的数据并进行处理的,肯定不能说读两次来合并之类的呢,再说那样的话数据的丢失也会也严重的呢.
    我只是想问一下有关于这个时间不一致的问题是什么原因,怎么处理呢
    谢谢
      

  2.   


    直接设置11个字符,可能不是一个安全的方法。如果串入了乱码的话,读出的数据就会一直错下去。一个好的方法是,每次读一个字节,遇到帧头就清零,接着一个一个读取数据,在读取的过程中遇到帧头就清零。等完全读好一帧后,再进行处理。你可以根据波特率设置计算一下理论传输的时间,如果时间富裕,那应该没什么问题。如果程序要求比较严格,那最好用 Win32 API 读取。ReadFile()WriteFile()