提示错误:port already open
我用的是mscomm,进入发送块的时候会报错port already open,
function Tmainfrm.SendFrameBuffer(Sendframe:Framebyte):String;
var
k: integer;
ReceFrame: String;
starttime, endtime: Longint;
ssss: array of byte;
TempStr, commstr: string;
begin
MSComm1.CommPort := 1;
MSComm1.Settings :='19200,n,8,1';
MSComm1.InBufferCount:=0 ;
ReceFrame:='';
MSComm1.OutBufferCount:=0;
if MSComm1.PortOpen =false then
begin
MSComm1.PortOpen:=true ; //打开串口,等待接收数据
end;
mscomm1.Output:=Sendframe;
starttime:=gettickcount(); //时间控制起始时间
while true do //等待接收数据
begin
if mscomm1.InBufferCount>0 then
begin
starttime:=gettickcount();
break;
end;
if gettickcount()-starttime>10000 then //判断是否大于10000毫
begin
showmessage('通讯超时!请判断是否连接!'); //通讯超时!请判断是否连接!
break ;
end;
Sleep (10);
application.ProcessMessages ;
end;
while true do //等待接收数据
begin
if gettickcount()-starttime>300 then //字节间延时300毫秒
begin
if MSComm1.PortOpen=true then
begin
MSComm1.PortOpen:=false; //关闭串口
end;
result:=ReceFrame;
break;
end;
if mscomm1.InBufferCount>0 then
begin
setlength(ssss,mscomm1.InBufferCount);
ssss:=mscomm1.Input; //接收数据
if tempstr='' then
begin
tempstr:=' ';
end;
k:=0;
while k<length(ssss) do
begin
commstr:=inttohex(ssss[k],2);
ReceFrame:=ReceFrame+commstr;
k:=k+1;
end;
starttime:=gettickcount();
end ;
Sleep(10);
application.ProcessMessages ;
end;
end;
这个模块放在另外程序里都不会有问题
谁遇到过这样的错误?