串口既需要监控,又需要写数据,然后我想写数据的时候,必须使串口停掉。我是这样写的
Mscomm.enable=false;
mscomm.enable=true;.
mscomm.output="发送的指令";
发现这样写后,串口很容易延时,有时候反应不过来,我要点好几下才有反应,
该怎么样解决这个串口延时通信的问题呢
Mscomm.enable=false;
mscomm.enable=true;.
mscomm.output="发送的指令";
发现这样写后,串口很容易延时,有时候反应不过来,我要点好几下才有反应,
该怎么样解决这个串口延时通信的问题呢
解决方案 »
- 求 将vb代码转成delphi 急~~~~~
- 可不可以把DBCheckBox控件打勾的框放大啊?
- 请教RAVE高手,关于RAVE中的纸张设置总是问题
- 递归调用内存泄露请大侠救命。
- 小问题 希望高手指点
- 请问是不是在delphi5中的html控件,在delphi7中就没有了呢?
- 关于多个(超过20个)groupbox中多个edit清空的快捷方法。急等。。。。。。。。
- 求救:关于SQL时间转换问题
- 版主:听别人说,给分不是系统自动分配吗?我还不知道怎么给分能说说吗?
- 请问有关制作帮助的问题
- SQL语句 Sum 效率的问题(有100万条数据),如何优化这个语句
- delphi 怎么访问远程数据库,实现 注册、登录功能。
呵呵
我是用于对硬件的寄存器的数据实时监控啊,比如我软件一起动的时候,我就要发送“RD”指令去实时读取,只要不操作,发生了onComm时间,根据指令标识符,如果指令标识符是“RD”的话,我就又再一次发送“RD”指令去读寄存器里面的数据。如果我要进行操作了,我就要写一个“WD”指令相关的命令发给串口,因为串口独占性的原因。我就首先把MSCOMM.enable=false;Mscomm.enable=true;然后再写Mscomm.output=WR相关发送指令。然后我再oncomm事件里面进行判断,如果指令符是“WD”就提示收到命令,有时候“WR”写一次就能提示了,有时候要写好几次才提示收到,就是这么回事啊,这是为什么呢?
这是发送过程:
OutPutStr:='@00WR00200100';
OutPutStr:=OutPutStr+CalBcc(OutPutStr)+'*'+Chr(13);
form1.MsComm.Enabled :=False;
Form1.MsComm.Enabled :=True;
Form1.MsComm.Output :=OutPutStr;
CommandStr:='WR';这是MSCOMM接收过程
if CommandStr='WR' then
begin
Mscomm.Enabled :=False;
MsComm.Enabled :=True;
Mscomm.Output := '@00RD01460006'+CalBcc('@00RD01460006')+'*'+chr(13);
CommandStr:='RD';
end;只要一处理完,“WR“这个操作就立刻再次读寄存器里面的数值