确切说不是没有,而是似乎等缓存满了才有
我查资料,说是onreceivedata事件的调用是在spcomm初始化的时候在ReadIntervalTimeout属性中确定的,就是说数据接收后在没有存满buffer时,如果最后一个数据到达后等待readintervaltimerout毫秒,如果没有数据再进来就触发receivedata
可我的ReadIntervalTimeout已经设为1了,似乎还是等缓存满才有返回
并且发送多少缓存才满似乎也是随机的
这是怎么回事?
大家帮忙啊,我都痛苦两天了
谢谢!谢谢大家!

解决方案 »

  1.   

    spcomm默认是开了软流控的软流控只有接收到#17才接收,遇到#19就关闭.可能你发的数据碰巧有个#17,所以就接收了 你说的情况把软流控关了试试
    comm1.Inx_XonXoffFlow:=false;
    comm1.Outx_XonXoffFlow:=false;
      

  2.   

    没用过,我们都是直接用spcomm控件自己开发。
      

  3.   

    你用的是串口调试助手还是用spcomm自己写程序啊?
    先用第三方串口调试工具试试是不是一样的情况. 也可能是设备的问题. 从现象上,我觉得多半是流控的问题. 要弄清楚发数据的设备是否要求软流控或者硬流控?