jingwaner 发表于 2013-8-31 11:50:10

Delphi 7 SPCOMM 同一个点击事件中不能发送数据

本帖最后由 jingwaner 于 2013-8-31 12:01 编辑

最近写个软件,打算省去 打开关闭 串口这样的按钮。

想直接 打开-发送-关闭。

在同一个按钮事件中,发现没有数据发送出来。。代码如下:

procedure TForm1.btnIPSetClick(Sender: TObject);
begin
cm1.CommName:=cbbCOM.Text;
cm1.BaudRate:=StrToInt(cbbBaudrate.Text);
cm1.StartComm;
cm1.WriteCommData(chr($31)+chr($32)+chr($33)+chr($0A),4);
cm1.StopComm;
end;

求指点,谢谢!

jingwaner 发表于 2013-8-31 12:00:28

技术贴 咋没人关注?

TANK99 发表于 2013-8-31 20:24:53

多线程的吧,可能串口还没有正式开?
或是还没有发完就被STOP了。

我一般用Comm1.WriteCommByte($31);这样的方式,一个个传。

oosmile 发表于 2013-8-31 21:01:41

StartComm之后加100ms的延时试试

tdh03z 发表于 2013-8-31 21:08:53

哈,你数据还没发完就被你关闭了,按钮在打开串口成功后,发送数据,然后开启一个定时器,定时100ms,定时到则关闭串口同时关闭定时器。

SkyGz 发表于 2013-8-31 21:20:17

cm1.StartComm;
Sleep(300);
cm1.WriteCommData(chr($31)+chr($32)+chr($33)+chr($0A),4);
Sleep(300);
cm1.StopComm;

jingwaner 发表于 2013-8-31 21:44:13

SkyGz 发表于 2013-8-31 21:20 static/image/common/back.gif
cm1.StartComm;
Sleep(300);
cm1.WriteCommData(chr($31)+chr($32)+chr($33)+chr($0A),4);


谢谢楼上的。

我刚回来,本来也想回复的,用了延迟现在可以使用了,目前如下:

Sleep(4);
cm1.WriteCommData(chr($31)+chr($32)+chr($33)+chr($0A),4);
Sleep(4);
页: [1]
查看完整版本: Delphi 7 SPCOMM 同一个点击事件中不能发送数据