小弟在delphi中用mscomm处理从串口接受到的数据时,出现了问题
数据长度是小于34个字节,但在循环时出现问题
当i循环到8时,又从0重新开始了,所以得到的数据是段,我花了一个下午没有找到原因,请大家帮忙看看
代码如下:
procedure TMainForm.MSCommComm(Sender: TObject);
var
i, InputLen: Integer;
tmpInt: Integer;
tmpvar: Variant;
tmparray: array[0..33] of byte;
begin
if MSComm.CommEvent = ComEvReceive then
begin
InputLen := MSComm.InBufferCount;
InputString:='';
for i := 0 to InputLen -1 do//这里当根据i一次将数据读进数组,但是到8时,又重新跳出了循环,不知道原因
begin
tmpint := Tmpvar[i];
tmparray[i] := Tmpvar[i];
InputString := InputString + ' ' + IntToHex(tmpInt, 2);
end;
MainForm.mmReceive.Text := MainForm.mmReceive.Text + Inputstring;
mmReceive.selstart := Length(mmReceive.lines.text) ;
SendMessage(mmReceive.Handle,EM_SCROLLCARET, 0, 0); //让滚动条滑动
end ;
------------------------------------
心中多少的创伤,不可抵挡的空虚,卑躬屈膝的一生,今天只想冲出那枷锁,就要象狂人,金属者---金属狂人
------------------------------------
《CSDN论坛新助手 CSDN's forum Explorer》,支持最新改版论坛,回复、浏览“方便”,“快捷”!
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
数据长度是小于34个字节,但在循环时出现问题
当i循环到8时,又从0重新开始了,所以得到的数据是段,我花了一个下午没有找到原因,请大家帮忙看看
代码如下:
procedure TMainForm.MSCommComm(Sender: TObject);
var
i, InputLen: Integer;
tmpInt: Integer;
tmpvar: Variant;
tmparray: array[0..33] of byte;
begin
if MSComm.CommEvent = ComEvReceive then
begin
InputLen := MSComm.InBufferCount;
InputString:='';
for i := 0 to InputLen -1 do//这里当根据i一次将数据读进数组,但是到8时,又重新跳出了循环,不知道原因
begin
tmpint := Tmpvar[i];
tmparray[i] := Tmpvar[i];
InputString := InputString + ' ' + IntToHex(tmpInt, 2);
end;
MainForm.mmReceive.Text := MainForm.mmReceive.Text + Inputstring;
mmReceive.selstart := Length(mmReceive.lines.text) ;
SendMessage(mmReceive.Handle,EM_SCROLLCARET, 0, 0); //让滚动条滑动
end ;
------------------------------------
心中多少的创伤,不可抵挡的空虚,卑躬屈膝的一生,今天只想冲出那枷锁,就要象狂人,金属者---金属狂人
------------------------------------
《CSDN论坛新助手 CSDN's forum Explorer》,支持最新改版论坛,回复、浏览“方便”,“快捷”!
下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货