使用spcomm时,遇到一个很棘手的问题(30分)

  • 主题发起人 主题发起人 sansong089
  • 开始时间 开始时间
S

sansong089

Unregistered / Unconfirmed
GUEST, unregistred user!
使用spcomm时,遇到一个很棘手的问题,如下:

某函数中有一组逻辑性很强的操作1,2,3,没执行一个操作都会有回应:串口接收到数据表示操作的是否成功,但是在此函数没有退出之前,串口接收到数据的事件又不会触发,所以不能确定操作是否成功。真是不知道怎么办!请高手指点,急呀!没分了:(
 
问题解决
 
怎么结贴呀
 
具体如何解决的,能说说吗?
结不了了,要找斑竹大人了。
不过我进来了,你也可以结贴。
 
你说清楚点
 
发送读取命令后,应该延时,再查看是否有数据返回,则知道成功与否。

procedure Delay(msecs:integer); // 延时程序,单位:毫秒。不会影响 SPCOMM控件的 ONRECEIVEDATA 事件的运行
var
FirstTickCount:longint;
begin
FirstTickCount:=GetTickCount;
repeat
Application.ProcessMessages;
until ((GetTickCount-FirstTickCount) >= Longint(msecs));
end;

如:
S:='AAAAAA'; //读....的命令
SPCOM.WriteCommData(PCHAR(S),Length(S));

Delay(300); //延时300毫秒,不影响 SPCOMM 的RECEIVEDATA 执行

IF TRIM(TXT)='' THEN BEGIN /// 当SPCOMM 有数据接收时,赋值给 TXT
APPLICATION.MessageBox('无数据返回,错误!','提示',MB_ICONEXCLAMATION);
EXIT;
END;
 
怎么那么多人喜欢用spcomm,有没有人用compart?
 
和石嶷山友兄的办法差不多,但是石嶷山友兄比我写的要好,散分!
 
多人接受答案了。
 
后退
顶部