gpt4 book ai didi

android - 在delphi中发送多个十六进制代码

转载 作者:行者123 更新时间:2023-11-29 14:36:23 25 4
gpt4 key购买 nike

如何在 delphi 中发送多个十六进制代码?比如我需要发到串口的16进制码是1B和40,怎么发到串口?我已经可以将十六进制代码发送到串行端口,但只有一个十六进制代码,如 1B,我很难发送多个十六进制代码。提前致谢。

我的代码:

unit uSample;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo, Winsoft.Android.ComPort,
FMX.Edit, FMX.StdCtrls;

type
TForm1 = class(TForm)
AComPort1: TAComPort;
Memo1: TMemo;
Timer1: TTimer;
Button1: TButton;
Edit1: TEdit;
Open: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure OpenClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
AComPort1.Active := False;
AComPort1.DeviceName := Edit1.Text;
AComPort1.Active := True;

AComPort1.WriteUtf8(Memo1.Text);
AComPort1.WriteByte(Byte($0A));
end;

procedure TForm1.OpenClick(Sender: TObject);
begin

end;

procedure TForm1.Timer1Timer(Sender: TObject);
var Text: string;
begin

end;

end.

最佳答案

根据评论,该组件包含一个具有以下签名的方法:

procedure Write(Buffer: Pointer; Count: Integer; WaitForCompletion: Boolean);

这可能是所有其他写入方法通过的低级方法。您可以使用接受字节数组的高级方法将其包装起来:

procedure TForm1.WriteBytes(const Buffer: array of Byte);
begin
if Length(Buffer) > 0 then begin
AComPort1.Write(@Buffer[0], Length(Buffer), True);
end;
end;

我假设您将为最终参数传递 True 并使调用同步。

然后您可以像这样调用该方法:

WriteBytes([$1B, $40]);

如果您对类助手感到满意,您可以添加这样一个方法作为 TComport 的类助手。

请注意,关于十六进制到底是什么的问题存在一些混淆。您没有尝试向设备发送十六进制。十六进制是值的表示。这些值同样可以表示为十进制。所以上面的代码等价于:

WriteBytes([27, 64]);

十六进制只是记下数字的多种方式之一。基础值(value)是相同的。所以,16 = $0A。您可以将值写为十进制、十六进制或其他表示形式。您不是在发送十六进制,而是在发送字节。通俗地说,您正在发送二进制数据。

关于android - 在delphi中发送多个十六进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35981873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com