求个SPCOMM发送和接受的思路,老是冲突啊!
现在使用SPCOMM发送和接受数据,但是碰到个问题。
目前使用TIMER控件,定时发送3组数据给下位机(发送的3条指令是固定的,但是接受的数据会有变化)
TYPE:=1 发送第1组,接受第1组数据
TYPE:=2 发送第2组,接受第2组数据
TYPE:=3 发送第3组,接受第3组数据
但是有时需要发送别的数据给下位机。我就先把TIMER停止后,发送数据,但发现有的时候因为TIMER定时器发送后,SPCOMM没有发送完全或接受完数据。这时候我停止了TIMER,发送别的数据,发送或接受回来的数据就会有错。
有没有什么办法让那个我在发送别的数据的时候,在TIMER停止后,先把SPCOMM的发送和接受缓存先清理一篇(就像MSCOMM一样)!或者有什么别的办法,保正数据发送和接受的正确性。
[解决办法]
就算清理缓存,如果接收方向还有数据过来,缓存还是会接收数据吧。
可否对接收数据都加上特定的结束标识,接收时判断下是否接收完毕,然后再发送呢
[解决办法]
根据协议来校验接收数据的正确性,只好这样了
[解决办法]
用一个同步事件吧
在发送别的数据时:
waitforsigleobject(theWaitEvent,WAIT_TIME);
...//发送代码
在Timer的发送代码中加入
ResetEvent(theWaitEvent);
try
....//发送处理
....
....//接收处理
finally
SetEvent(theWaitEvent);
end;