DELPHI用mscomm写的程序读数不完整的问题 20
代码如下:procedureTForm1.FormCreate(Sender:TObject);beginwithMSComm1dobeginCommPort:=3;//...
代码如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
with MSComm1 do
begin
CommPort:=3; //使用Com1
Settings:='9600,n,8,1'; //设置通信口参数
InputLen:=22; //设置Input一次从接受缓冲区读取全部字节
InBufferCount:=0; //清除接受缓冲区
OutBufferCount:=0; //清除发送缓冲区
InBufferSize:=512; //设置接受缓冲区为50字节
//设置发送缓冲区为2字节
RThreshold:=1; //设置接受一个字节就产生OnComm事件
InputMode:=comInputModeBinary; // 设置接受数据模式为二进制方式
//判断通信口是否打开
PortOpen:=True ;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
MSComm1.Output:='O(00,02,1)E';
sleep(500);
edt2.Text:=MSComm1.input;
mscomm1.OutBufferCount:=0;
end;
procedure TForm1.MSComm1Comm(Sender: TObject);
begin
sleep(2);
edt1.Text:=MSComm1.input;
MSComm1.InBufferCount:=0; //清除接受缓冲区
mscomm1.OutBufferCount:=0; //清除发送缓冲区
end;
在使用过程中返回值都是11个字符为一组,在快速信号反回时遇到取值不完整的问题(只取到部分值),但是用sscomm,不管怎么取值都是正确的,请问是哪里出了问题? 展开
procedure TForm1.FormCreate(Sender: TObject);
begin
with MSComm1 do
begin
CommPort:=3; //使用Com1
Settings:='9600,n,8,1'; //设置通信口参数
InputLen:=22; //设置Input一次从接受缓冲区读取全部字节
InBufferCount:=0; //清除接受缓冲区
OutBufferCount:=0; //清除发送缓冲区
InBufferSize:=512; //设置接受缓冲区为50字节
//设置发送缓冲区为2字节
RThreshold:=1; //设置接受一个字节就产生OnComm事件
InputMode:=comInputModeBinary; // 设置接受数据模式为二进制方式
//判断通信口是否打开
PortOpen:=True ;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
MSComm1.Output:='O(00,02,1)E';
sleep(500);
edt2.Text:=MSComm1.input;
mscomm1.OutBufferCount:=0;
end;
procedure TForm1.MSComm1Comm(Sender: TObject);
begin
sleep(2);
edt1.Text:=MSComm1.input;
MSComm1.InBufferCount:=0; //清除接受缓冲区
mscomm1.OutBufferCount:=0; //清除发送缓冲区
end;
在使用过程中返回值都是11个字符为一组,在快速信号反回时遇到取值不完整的问题(只取到部分值),但是用sscomm,不管怎么取值都是正确的,请问是哪里出了问题? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询