S
sxwy
Unregistered / Unconfirmed
GUEST, unregistred user!
我在使用SPCOMM控件时,要动态改变comm1的参数,比如要变换波特率等,但是每次将comm1参数赋值过去后,再comm1.START,然后发送数据,然后再关闭,但在实际的过程中却发现comm1的参数跟本没有随着我的每次赋值而改变.
我是这样用的.
procedure TForm1.Button1Click(Sender: TObject);
begin
setcom('COM2','9600,n,8,1');//在这个过程里我会调用不同的参数来改变comm1的值
comm1.StartComm ;//打开
//发送过程
comm1.stopcom;
end;
问题的关键就是在于上面的过程里setcom,我在这个过程里改变了comm1的配置,但改变配置后再用COM.START,却发现没有改过来。真是怪事。。。更改参数过程如下。
function tform1.setcom(comname:string;seting:string):boolean;//传入COM名和参数
var tmp:tparity;
c_size:tbytesize;
baudrate,parity,bytesize,stopbit:string;
i,j,k,ilen:integer;
begin try
ilen:=length(seting);
i:=pos(',',seting);//寻找','的位置
baudrate:=copy(seting,1,i-1);//取波特率
parity:=copy(seting,i+1,1);//取校验位
bytesize:=copy(seting,i+3,1);//取数据位
stopbit:=copy(seting,i+5,3);//取停止位
comm1.CommName :=comname;//赋值端口名
comm1.BaudRate :=strtoint(baudrate);//赋值波特率
comm1.Parity:=resultparity(parity);//赋值校验位
comm1.ByteSize :=resultbytesize(bytesize);赋值数据位
comm1.StopBits :=resultstopbit(stopbit);//赋值停止位
setcom:=true;
except
setcom:=false;
end;
end;
我是这样用的.
procedure TForm1.Button1Click(Sender: TObject);
begin
setcom('COM2','9600,n,8,1');//在这个过程里我会调用不同的参数来改变comm1的值
comm1.StartComm ;//打开
//发送过程
comm1.stopcom;
end;
问题的关键就是在于上面的过程里setcom,我在这个过程里改变了comm1的配置,但改变配置后再用COM.START,却发现没有改过来。真是怪事。。。更改参数过程如下。
function tform1.setcom(comname:string;seting:string):boolean;//传入COM名和参数
var tmp:tparity;
c_size:tbytesize;
baudrate,parity,bytesize,stopbit:string;
i,j,k,ilen:integer;
begin try
ilen:=length(seting);
i:=pos(',',seting);//寻找','的位置
baudrate:=copy(seting,1,i-1);//取波特率
parity:=copy(seting,i+1,1);//取校验位
bytesize:=copy(seting,i+3,1);//取数据位
stopbit:=copy(seting,i+5,3);//取停止位
comm1.CommName :=comname;//赋值端口名
comm1.BaudRate :=strtoint(baudrate);//赋值波特率
comm1.Parity:=resultparity(parity);//赋值校验位
comm1.ByteSize :=resultbytesize(bytesize);赋值数据位
comm1.StopBits :=resultstopbit(stopbit);//赋值停止位
setcom:=true;
except
setcom:=false;
end;
end;