⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tapifr.pas

📁 boomerang library 5.11 internet ed
💻 PAS
字号:
unit TAPIFr;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Connect, ComCtrls, StdCtrls, ExtCtrls, Terminal, ToolWin, TAPICom;

type
  TForm1 = class(TForm)
    Terminal1: TTerminal;
    Splitter1: TSplitter;
    Terminal2: TTerminal;
    Label1: TLabel;
    Label2: TLabel;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    ConnectButton: TToolButton;
    DisconnectButton: TToolButton;
    SetupButton: TToolButton;
    LineCom: TLineCom;
    Timer1: TTimer;
    procedure Terminal1KeyPress(Sender: TObject; var Key: Char);
    procedure Comm1RxChar(Sender: TObject; Count: Integer);
    procedure SetupButtonClick(Sender: TObject);
    procedure DisconnectButtonClick(Sender: TObject);
    procedure LineComConnect(Sender: TObject);
    procedure LineComDisconnect(Sender: TObject);
    procedure LineComStateChange(Sender: TObject; aParam1,
      aParam2: Cardinal);
    procedure Timer1Timer(Sender: TObject);
    procedure ConnectButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    FLine: string;
    ConnectDT: TDateTime;
    procedure AdjustVisible;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

resourcestring
  stDay = '%d d ';
  stHour = '%d h ';
  stMin = '%d min ';
  stSec = '%d s';
implementation
uses
  TapiSetDg;
  
{$R *.DFM}

procedure TForm1.Terminal1KeyPress(Sender: TObject; var Key: Char);
begin
  Terminal1.LogTerm(Key);
  LineCom.Comm.Send(Key);
  Key:= #0;
end;

procedure TForm1.Comm1RxChar(Sender: TObject; Count: Integer);
var
  I: Integer;
  S: string;
begin
  S:= LineCom.Comm.Retrieve(Count);
  for I:= 1 to Length(S) do
    Terminal2.LogTerm(S[I]);
end;

procedure TForm1.AdjustVisible;
begin
  ConnectButton.Enabled:= (FLine <> '') and not LineCom.Active;
  SetupButton.Enabled:= not LineCom.Active;
  DisconnectButton.Enabled:= LineCom.Active or LineCom.IsMakingCall;
end;

procedure TForm1.SetupButtonClick(Sender: TObject);
begin
  with TTapiSetupDlg.Create(nil) do
  try
    Lines.ItemIndex:= TapiLine.FindDeviceId(FLine);
    PhoneNumber.Text:= LineCom.PhoneNumber;
    DirectAccess.Checked:= LineCom.DirectAccess;
// load from INI TapiLine.DevConfig[Lines.ItemIndex]:=
    if ShowModal = mrOk then
    begin
      FLine:= Lines.Items[Lines.ItemIndex];
      LineCom.PhoneNumber:= PhoneNumber.Text;
      LineCom.DirectAccess:= DirectAccess.Checked;
      StatusBar1.Panels[0].Text:= FLine;
// save config to INI:= TapiLine.DevConfig[Lines.ItemIndex];
    end;
    AdjustVisible;
  finally
    Free;
  end;
end;

procedure TForm1.DisconnectButtonClick(Sender: TObject);
begin
  LineCom.Drop;
end;

procedure TForm1.LineComConnect(Sender: TObject);
begin
  ConnectDT:= Now;
  Timer1.Enabled:= True;
  Terminal2.Enabled:= True;
  LineCom.Comm.OnRxChar:= Comm1RxChar;
end;

procedure TForm1.LineComDisconnect(Sender: TObject);
begin
  LineCom.Comm.OnRxChar:= nil;
  LineCom.Close;
  Timer1.Enabled:= False;
  Terminal2.Enabled:= False;
  AdjustVisible;
end;

procedure TForm1.LineComStateChange(Sender: TObject; aParam1,
  aParam2: Cardinal);
begin
  StatusBar1.Panels[1].Text:= LineCallStateToStr(aParam1);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  H, M, Sec, S100: Word;
  S: string;
begin
  DecodeTime(Now-ConnectDT, H, M, Sec, S100);
  S:= '';
  if Now-ConnectDT >= 1 then
    S:= IntToStr(Trunc(Now-ConnectDT));
  if Now-ConnectDT >= 1 then
    S:= Format(stDay, [Trunc(Now-ConnectDT)]);
  if H > 0 then
    S:= S+Format(stHour, [H]);
  if M > 0 then
    S:= S+Format(stMin, [M]);
  if Sec > 0 then
    S:= S+Format(stSec, [Sec]);

  StatusBar1.Panels[2].Text:= S;
end;

procedure TForm1.ConnectButtonClick(Sender: TObject);
begin
  LineCom.DeviceId:= TapiLine.FindDeviceId(FLine);
  LineCom.Open;
//  LineCom.DevConfig:= TapiLine.DevConfig[LineCom.DeviceId];  load config from INI

  LineCom.MakeCall;
  AdjustVisible;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdjustVisible;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -