📄 comportunit.bak
字号:
unit ComPortUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OoMisc, AdPort, ExtCtrls, ADTrmEmu;
type
TMyListBox = class(TListBox)
procedure TriggerAvail(var Message : TMessage); message APW_TRIGGERAVAIL;
end;
TComPortForm = class(TForm)
ApdComPort1: TApdComPort;
Test: TButton;
AdTerminal1: TAdTerminal;
LogOps: TRadioGroup;
Register: TButton;
procedure TestClick(Sender: TObject);
procedure ApdComPort1TriggerAvail(CP: TObject; Count: Word);
procedure LogOpsClick(Sender: TObject);
procedure ApdComPort1TriggerData(CP: TObject; TriggerHandle: Word);
procedure ApdComPort1TriggerTimer(CP: TObject; TriggerHandle: Word);
procedure RegisterClick(Sender: TObject);
private
{ Private declarations }
ListBox1 : TMyListBox;
TimerHandle : Word;
Data1Handle : Word;
Data2Handle : Word;
Data3Handle : Word;
public
{ Public declarations }
end;
var
ComPortForm: TComPortForm;
GlobalPort : TApdComPort;
implementation
{$R *.DFM}
procedure WriteIt(C : Char);
begin
if Ord(C) > 32 then
Write(C)
else
Write('[', Ord(C), ']');
end;
procedure TMyListBox.TriggerAvail(var Message : TMessage);
var
I : Word;
S : String;
begin
S := '';
for I := 1 to Message.wParam do
S := S + GlobalPort.GetChar;
Items.Add(S);
end;
procedure TComPortForm.TestClick(Sender: TObject);
begin
TimerHandle := ApdComPort1.AddTimerTrigger;
ApdComPort1.SetTimerTrigger(TimerHandle, 91, True);
Data1Handle := ApdComPort1.AddDataTrigger('TI', True);
Data2handle := ApdComPort1.AddDataTrigger('OK', True);
Data3handle := ApdComPort1.AddDataTrigger('288', True);
{发送字符串到Modem将触发全部的触发器}
ApdComPort1.PutString('ATI'^M);
end;
procedure TComPortForm.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
I : Word;
C : Char;
begin
WriteLn('OnTriggerAvail event: ', Count, ' bytes received');
for I := 1 to Count do begin
C := ApdComPort1.GetChar;
WriteIt(C);
end;
WriteLn;
WriteLn('--------');
end;
procedure TComPortForm.LogOpsClick(Sender: TObject);
const
InClick : Boolean = False;
begin
if not InClick then begin
InClick := True;
ApdComPort1.Logging := TTraceLogState(LogOps.ItemIndex);
LogOps.ItemIndex := Ord(ApdComPort1.Logging);
AdTerminal1.SetFocus;
InClick := False;
end;
end;
procedure TComPortForm.ApdComPort1TriggerData(CP: TObject;
TriggerHandle: Word);
begin
WriteLn('OnTriggerData 事件: ', TriggerHandle);
end;
procedure TComPortForm.ApdComPort1TriggerTimer(CP: TObject;
TriggerHandle: Word);
begin
WriteLn('OnTriggerTimer 事件: ', TriggerHandle);
end;
procedure TComPortForm.RegisterClick(Sender: TObject);
begin
GlobalPort := ApdComPort1;
ListBox1 := TMyListBox.Create(Self);
ListBox1.Name := 'ListBox1';
ListBox1.Parent := Self;
ListBox1.Show;
ApdComPort1.Dispatcher.RegisterWndTriggerHandler(ListBox1.Handle);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -