G
GWW
Unregistered / Unconfirmed
GUEST, unregistred user!
编一串口程序,需连续交替发送 Mark 和 Space 两种校验格式的数据,
使用了spcomm 控件,碰到两个问题,向大家请教 ?
1. 按 spcomm 中说明,可以在串口open时修改 Parity属性, 但在使用
中发现修改后发出的数据校验格式并没有改变,只有重新 stopcomm,
startcomm 后,修改才生效, spcomm 是否确实如此 ?
2. 编出的程序发现一奇怪的问题.
在一些机器上运行正常。而在另一些机器上(主板不同)却不正常,
串口根本没有数据输出。而如果程序改为不转换校验格式,则全部机
器都运行正常。试过在转换校验格式时加入延时也不起作用。找不
到原因。
是与编程有关还是与硬件有关?
有关程序段如下:
......
// send data Mark;
while not (MainForm.Comm1.SendDataEmpty) do Application.ProcessMessages;
Mainform.comm1.StopComm;
Mainform.comm1.parity:=Mark;
Mainform.comm1.StartComm;
ndispstr:=length(cdispstr); // cdispstr 为发送的数据;
try
Mainform.comm1.WritecommData(pchar(cdispstr),ndispstr);
except
showmessage('send error !');
end;
while not (MainForm.Comm1.SendDataEmpty) do Application.ProcessMessages;
// send data Space;
Mainform.comm1.StopComm;
Mainform.comm1.parity:=Space;
Mainform.comm1.StartComm;
ndispstr:=length(cdispstr);
try
Mainform.comm1.WritecommData(pchar(cdispstr),ndispstr);
except
showmessage('send error !');
end;
while not (MainForm.Comm1.SendDataEmpty) do Application.ProcessMessages;
......
请教 ...