小编Mat*_*eng的帖子

如何增加分配给变量的串行数据的数量?

我已经下载并安装了comport库.我有一个模拟器通过串口RS232发送数据到Selphi程序.这是以下代码段.

procedure TMainForm.ComPortRxChar(Sender: TObject; Count: Integer);
begin
  ComPort.ReadStr(CPort.Str, Count);
  Memo.Text := Memo.Text + CPort.Str;
end; 
Run Code Online (Sandbox Code Playgroud)

至于CPort库部分,我补充说:

var
  Str: String;

here is the problem.
Run Code Online (Sandbox Code Playgroud)

正在经历的数据示例大致相同

$HEHDT,288.45,T*1D
$HEHDT,288.46,T*18
$HEHDT,288.47,T*1A
Run Code Online (Sandbox Code Playgroud)

等等.每行每秒发送一次.因此,使用上面的代码,备忘录将显示所有这些数据.

但是,如果我将代码更改为:

procedure TMainForm.ComPortRxChar(Sender: TObject; Count: Integer);
begin
  ComPort.ReadStr(CPort.Str, Count);
  Memo.Text := Memo.Text + CPort.Str + 'haha';
end;
Run Code Online (Sandbox Code Playgroud)

这是备忘录上的内容:

$HEHDT,2haha88.45,T*haha1Dhaha
$HEHDT,2haha88.46,T*haha18haha
$HEHDT,2haha88.47,T*haha1Ahaha
Run Code Online (Sandbox Code Playgroud)

8个ASCII字符后出现"haha".这意味着在CPort.pas库中,在异步/同步部分下,只有8ASCII字符max被赋给变量Str?

如何更改代码,使整个数据字符串(无论大小)分配给变量Str而不是8字节.

更新**我意识到这部分CPort库包含以下代码.任何人都可以启发我如何编辑代码?或者它是否是我采购的正确块.谢谢!

// split buffer in packets
procedure TComDataPacket.HandleBuffer;

procedure DiscardPacketToPos(Pos: Integer);
var
Str: string;
begin
FInPacket := True;
if Pos > 1 then
begin
  Str := Copy(Buffer, 1, Pos …
Run Code Online (Sandbox Code Playgroud)

delphi serial-port delphi-7

5
推荐指数
1
解决办法
1928
查看次数

标签 统计

delphi ×1

delphi-7 ×1

serial-port ×1