level 3
逸小飞🔥
楼主
最近在使用cport控件做一个上位机,要实事采集下位机发来的数据,使用USB转串口采集后在memo上显示没问题,同样的数据处理使用蓝牙串口就会出现数据卡顿问题,把count值实时显示在edit上发现数据处理的速度没有接收的快,且最大为8092。常规来讲有线串口应该比无线串口快呀,为什么反而用无线的反倒处理不过来呢。请大神帮忙解决,代码如下:
procedure TForm_Main.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str:ansistring;
Temp:ansistring;
i:integer;
begin
Edit_SendData.text:=inttostr(count);
if(AdvanceReceiveFlag)then
begin
if not ReadStatu then
begin
i:=0;
repeat
ComPort.ReadStr(temp,1);
i:=i+1;
ReceiveCount:=ReceiveCount+1;
until (Ord(temp[1])=$88)or(i=count) ;
if(Ord(temp[1])=$88)then
begin
Str:=temp;
ReadStatu:=true;
end;
end
else
begin
i:=0;
repeat
ComPort.ReadStr(temp,1);
str:=str+temp;
i:=i+1;
ReceiveCount:=ReceiveCount+1;
until (i=23)or(i=count) ;
if(i=23)then
begin
ReadStatu:=false;
if(DataShowFlag)then
begin
str:=StrToHex(str);
Memo_AdvanceReceive.Lines.add(str);
end;
end;
end;
end;
2014年09月05日 07点09分
1
procedure TForm_Main.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str:ansistring;
Temp:ansistring;
i:integer;
begin
Edit_SendData.text:=inttostr(count);
if(AdvanceReceiveFlag)then
begin
if not ReadStatu then
begin
i:=0;
repeat
ComPort.ReadStr(temp,1);
i:=i+1;
ReceiveCount:=ReceiveCount+1;
until (Ord(temp[1])=$88)or(i=count) ;
if(Ord(temp[1])=$88)then
begin
Str:=temp;
ReadStatu:=true;
end;
end
else
begin
i:=0;
repeat
ComPort.ReadStr(temp,1);
str:=str+temp;
i:=i+1;
ReceiveCount:=ReceiveCount+1;
until (i=23)or(i=count) ;
if(i=23)then
begin
ReadStatu:=false;
if(DataShowFlag)then
begin
str:=StrToHex(str);
Memo_AdvanceReceive.Lines.add(str);
end;
end;
end;
end;