有关串口通信的问题(100分)

  • 主题发起人 主题发起人 plzh
  • 开始时间 开始时间
P

plzh

Unregistered / Unconfirmed
GUEST, unregistred user!
我用spcomm控件做了个文件传输程序,但我不知道怎样很好的控制发送端和
接收端的协调。
在发送端我用blockwrite发送。
在接收端我用blockread接收。
我是这样来协调收发的:发送端用
while not eof(file) do
begin
nextblock:=false;
blockread(file,buf,num);
comm1.writecommdata(buf,num);
repeat
until nextblock=true;
end; 发送,
在发送端的onreceivedata事件里,如果收到接收端的字符串
“NEXT"就将nextblock置为true.
if pos('NEXT',buffer)>0 then
nextblock:=true;


在接收端的onreceivedate事件里将buffer中的内容用
blockread写到文件里后再发送字符串“NEXT”到发送端,通知发送下一部分。
blockwrite(file,buffer^,bufferlength)
comm1.writecommdata('NEXT',4);


我遇到的问题是:
不知道为什么在接收端送出“NEXT”后,发送端的onreceivedata事件不
能响应。也就是说发送端在
repeat
until nextblock
死循环。

请各位朋友帮忙,给我找出错误的地方。(非常着急的等待你们的回答)。
 

repeat
until nextblock;

改成
repeat
sleep(200);
until nextblock;

试试看.

循环中一定要把程序的运行权交出来一些的,
也要让别的线程运行运行呀 ^_^
 

repeat
until nextblock;

改成
repeat
application.ProcessMessages;
until nextblock;

 
comm1.writecommdata('NEXT',4);
NEXT 也许应改为小写
 
接收端的
comm1.writecommdata('NEXT',4);
可以放在一个timer里进行, 不要使它在读线程里执行。
发送端可写为
repeat
delay(20);
until next;

 
while nextblock do application.processmessages;

This is what I used in my program.
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部