读书人

求个SPCOMM发送和接受的思路老是冲突

发布时间: 2013-01-25 15:55:30 作者: rapoo

求个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;

读书人网 >.NET

热点推荐