W
win2000server
Unregistered / Unconfirmed
GUEST, unregistred user!
程序用途是定时将查询得到的字串(一共有三个格式不同的字串)通过COM发送到终端设备上
代码如下:
function TSend_f.sendtod(ps: string): boolean;
begin
........
........
Comm1.StartComm;
sleep(200);
succflag := true;
for i := 0 to length(s) do
begin
if not comm1.writecommdata(@(s), 1) then
begin
succflag := false;
end;
sleep(20);
end;
if not succflag then
begin
//....
end;
comm1.StopComm;
........
end;
然后在button单击事件中调用sendtod来测试:
s1:='.............................';//查询得到的字串1
s2:='.............................';//查询得到的字串2
s3:='.............................';//查询得到的字串3
sendtod(s1);
sendtod(s2);
sendtod(s3);
以上测试过程在2000下测试终端显示都是正常的,但是发到98上运行却有问题:
就是对于第三个字串,终端只有收到一半左右字符,所以终端不能正常显示。
1:使用三个按钮分别执行sendtod(s1);sendtod(s2);sendtod(s3)这样就
没有问题,终端能正常显示,也就是说连续发送三个字串就会失败,但是分开
发送就没有问题。
2:后来考虑可能是不是COM关闭太早了,就在comm1.StopComm之前加了一个sleep(5000),
然后在一起连续发送三个字串,结果第三个字串还是不能全部被发送。
3:之后索性在程序打开时就打开Comm1.StartComm;程序关闭时comm1.StopComm;显示依旧。
4:调整
//
if not comm1.writecommdata(@(s), 1) then
begin
succflag := false;
end;
sleep(20);
//
中的sleep(20)为其他值,或者调整
//...
Comm1.StartComm;
sleep(200);
succflag := true;
//...
中的sleep(200)
不管是加大还是减小,问题还是没能解决。
请高手支招!!!
感激不尽!!!
代码如下:
function TSend_f.sendtod(ps: string): boolean;
begin
........
........
Comm1.StartComm;
sleep(200);
succflag := true;
for i := 0 to length(s) do
begin
if not comm1.writecommdata(@(s), 1) then
begin
succflag := false;
end;
sleep(20);
end;
if not succflag then
begin
//....
end;
comm1.StopComm;
........
end;
然后在button单击事件中调用sendtod来测试:
s1:='.............................';//查询得到的字串1
s2:='.............................';//查询得到的字串2
s3:='.............................';//查询得到的字串3
sendtod(s1);
sendtod(s2);
sendtod(s3);
以上测试过程在2000下测试终端显示都是正常的,但是发到98上运行却有问题:
就是对于第三个字串,终端只有收到一半左右字符,所以终端不能正常显示。
1:使用三个按钮分别执行sendtod(s1);sendtod(s2);sendtod(s3)这样就
没有问题,终端能正常显示,也就是说连续发送三个字串就会失败,但是分开
发送就没有问题。
2:后来考虑可能是不是COM关闭太早了,就在comm1.StopComm之前加了一个sleep(5000),
然后在一起连续发送三个字串,结果第三个字串还是不能全部被发送。
3:之后索性在程序打开时就打开Comm1.StartComm;程序关闭时comm1.StopComm;显示依旧。
4:调整
//
if not comm1.writecommdata(@(s), 1) then
begin
succflag := false;
end;
sleep(20);
//
中的sleep(20)为其他值,或者调整
//...
Comm1.StartComm;
sleep(200);
succflag := true;
//...
中的sleep(200)
不管是加大还是减小,问题还是没能解决。
请高手支招!!!
感激不尽!!!