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

标签 android delphi

如何在 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/

相关文章:

android - 原生 actionbar.show() 和 hide() 动画的时长是多少

ios - 我可以在 Delphi XE5 中使用 Objective C 代码吗

数据库连接 Delphi

android - 在 TextView 的 fragment 中使用自定义字体

delphi - 如何使用 indy10 Delphi 发送西里尔文数据

delphi - TMemo无法正确处理Unix文本(LF作为行尾)

delphi - 从本地客户端连接中检索带有路径的服务器数据的SQL SELECT

Android Action Bar (Sherlock Action Bar) - 将下拉微调器一直定位到右侧

java - 本地化不适用于 Android 应用程序中的字符串数组

java - Android中的mp3标题读取问题