spcomm在form中与dll中使用的问题?(23分)

  • 主题发起人 主题发起人 lzmling
  • 开始时间 开始时间
在线等待中
 
在线等待中
 
大虾们,出手吧。。
 
再补充新的发现:
procedure openem(commname,m):integer;
begin
myclass.startcomm(commname);
sleep(1000);
sbuf[1]:=byte($0); //帧头
for j:=2 to 10 do
sbuf[j]:=byte($30); //命令号
i:=strtoint('$'+inttostr(10+m));
sbuf[11]:=byte(i); //帧尾
myclass.send;
case rbuf[1] of
49: openem:=1;
48:
begin
myclass.stopcomm(commname);
openem:=-1;
end;
else openem:=0 ;
end;
end;
跟踪得出myclass.send;语句后并未直接进入RecieveData事件,而是继续下面的case判断,openem()过程结束后再进入RecieveData事件
我该怎么办?
 
我能不能手工读串口数据?
 
没人来看看吗?
 
在线等待中...
 
在线等待中...
 
spcomm中我能不能手工读串口数据,不用事件响应?
 
if rbuf[1]=49 then edit1.text:=1;
跟踪执行,显示消息框内容为49,但edit1.text = 0 ,why?

改成if byte(rbuf[1])=49 then edit1.text:=1;

发送数据后应在下一个onreceivedate 事件中处理数据。
 
怎样在下一个onreceivedate 事件中处理数据?

以上代码是在dll中,在其他form中调用dll中的openem(),再根据openem的返回进行判断,
所以openem必须有返回,苦闷的是为啥recievedata要在openem结束后响应呢?
 
能继续吗?
 
你的QQ呢.要不你在发送数据后根据你的波特率。应收到的数据长度延时一段时间看。
 
有谁能用qq指点我吗?
 
有谁能给点建议吗?
 
有谁能给点建议吗?
 
接受答案了.
 
后退
顶部