android串口 delphi,android - Android上的Delphi XE5串口 - 堆栈内存溢出

我已经成功使用Winsoft ComPort for Android来执行串行USB通信。

看看代码。

unit Main;

interface

uses

System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,

FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,

FMX.Layouts, FMX.Memo, Winsoft.Android.ComPort;

type

TFormMain = class(TForm)

Memo: TMemo;

StatusBar: TStatusBar;

ToolBar: TToolBar;

ButtonOpenClose: TButton;

ButtonSettings: TButton;

LabelStatus: TLabel;

AComPort: TAComPort;

Timer: TTimer;

procedure ButtonOpenCloseClick(Sender: TObject);

procedure AComPortAfterWrite(Sender: TObject; Buffer: Pointer;

Length: Integer);

procedure TimerTimer(Sender: TObject);

procedure AComPortAfterRead(Sender: TObject; Buffer: Pointer;

Length: Integer);

procedure MemoKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;

Shift: TShiftState);

procedure AComPortError(ComPort: TAComPort; E: EComError;

var Action: TComAction);

procedure ButtonSettingsClick(Sender: TObject);

private

{ Private declarations }

FReadCount: Integer;

FWriteCount: Integer;

procedure UpdateStatus;

public

{ Public declarations }

end;

var

FormMain: TFormMain;

implementation

uses Settings;

{$R *.fmx}

procedure TFormMain.UpdateStatus;

begin

LabelStatus.Text := 'Read bytes: ' + IntToStr(FReadCount) + ' Write bytes: ' + IntToStr(FWriteCount);

end;

procedure TFormMain.AComPortAfterRead(Sender: TObject; Buffer: Pointer; Length: Integer);

begin

FReadCount := FReadCount + Length;

UpdateStatus;

end;

procedure TFormMain.AComPortAfterWrite(Sender: TObject; Buffer: Pointer; Length: Integer);

begin

FWriteCount := FWriteCount + Length;

UpdateStatus;

end;

procedure TFormMain.AComPortError(ComPort: TAComPort; E: EComError; var Action: TComAction);

begin

ShowMessage('Error ' + IntToStr(E.ErrorCode) + ': ' + E.Message);

Action := caAbort;

end;

procedure TFormMain.ButtonOpenCloseClick(Sender: TObject);

begin

AComPort.Active := not AComPort.Active;

Timer.Enabled := AComPort.Active;

Memo.Enabled := AComPort.Active;

ButtonSettings.Enabled := not AComPort.Active;

if AComPort.Active then

ButtonOpenClose.Text := 'Close'

else

ButtonOpenClose.Text := 'Open';

end;

procedure TFormMain.ButtonSettingsClick(Sender: TObject);

begin

FormSettings.Show;

end;

procedure TFormMain.MemoKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);

begin

AComPort.WriteByte(Ord(KeyChar));

end;

procedure TFormMain.TimerTimer(Sender: TObject);

var Text: string;

begin

Text := AComPort.ReadUtf8;

if Text <> '' then

Memo.Text := Memo.Text + Text;

end;

end.

在组件属性中,您必须包含创建串行端口通信的基本特征 。

例如: 设备名称,数据位 , 波特率,奇偶校验和停止位 。

aHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9TZjFNaS5wbmc=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值