spcomm 没用过,不过我也做过串行通讯的程序,仅提供一些看法,希望有帮助应该不是Buffer的原因,一般控件会设的比较大,如 1024,2048 bytes
你有调试看看是少了或是多了什么数据,位置是在前面还是后面?
数据发送的频率快吗?每个字节间时间长吗? 你使用的控件接受的方式是否是定时器定时检查,如果是,看看它有没有Polling之类的属性.
例如我做的对一个磁卡机操作的程序读出磁卡的内容,由于磁卡里的数据较长,约40bytes, Polling 是 50ms, 有时就会把一次数据处理成2次的,延长Polling 的时间就好了

解决方案 »

  1.   

    感谢delphi_12345() 的回答,经查,spcomm内设缓存为2048,时间间隔为20ms,似乎不是这方面问题。又经测试,收到的字节的数据如下,按协议应为八个,且数据为正确的时间值,现在看来,
    字节个数不对,数据值也不正确。
    ... ...
    Length: 9,   04  10  06  41  66  50 60 a2 6b               //第n次测试
    Length:10,   06  41  66  10  62  03 05 21 15 f8            //第n+1次
    ... ...   
    据协议分析,后两位数是多出来的两位,各位对应的值据协议似乎应当是如下示:
                 秒  时  分  日  月  周 年 crc校验值 后两位a2 6b,或15 f8数值可能有问题的数。
              即 2005年3周62月10日66分41时06秒