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

📄 exlibmd0.pas

📁 delphi RS232 计算机串口通讯源程序
💻 PAS
📖 第 1 页 / 共 3 页
字号:
(***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is TurboPower Async Professional
 *
 * The Initial Developer of the Original Code is
 * TurboPower Software
 *
 * Portions created by the Initial Developer are Copyright (C) 1991-2002
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * ***** END LICENSE BLOCK ***** *)

unit ExLibMd0;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Menus,
  AdLibMdm, OOMisc;

type
  TForm1 = class(TForm)
    popModemList: TPopupMenu;
    Deletemodem1: TMenuItem;
    popDetailFiles: TPopupMenu;
    Deletefile1: TMenuItem;
    Newfile1: TMenuItem;
    lbxModemList: TListBox;
    lbxDetailFiles: TListBox;
    lblModemListCount: TLabel;
    lblDetailLoadTime: TLabel;
    lblDetailFileCount: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Label2: TLabel;
    Label1: TLabel;
    edtModemCapFolder: TEdit;
    tvDetails: TTreeView;
    procedure FormCreate(Sender: TObject);
    procedure lbxDetailFilesClick(Sender: TObject);
    procedure lbxModemListDblClick(Sender: TObject);
    procedure Deletemodem1Click(Sender: TObject);
    procedure Deletefile1Click(Sender: TObject);
    procedure Newfile1Click(Sender: TObject);
    procedure lbxDetailFilesDragOver(Sender, Source: TObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    procedure lbxDetailFilesDragDrop(Sender, Source: TObject; X,
      Y: Integer);
    procedure lbxModemListMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
    StartTime : DWORD;
    procedure RefreshDetailList;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
//  edtModemCapFolder.Text := GetEnvironmentVariable('MODEMCAP');
  if edtModemCapFolder.Text = '' then
    edtModemCapFolder.Text := 'e:\modemcap'; 
  RefreshDetailList;
end;

procedure TForm1.RefreshDetailList;
var
  sr: TSearchRec;
begin
  lbxDetailFiles.Items.Clear;
  if FindFirst(edtModemCapFolder.Text + '/*.xml', faAnyFile, sr) = 0 then begin
    lbxDetailFiles.Items.Add(sr.Name);
    while FindNext(sr) = 0 do
      lbxDetailFiles.Items.Add(sr.Name);
  end else
    ShowMessage('Modemcap detail files not found');
  FindClose(sr);
  lblDetailFileCount.Caption := IntToStr(lbxDetailFiles.Items.Count) + ' files';
end;

procedure TForm1.lbxDetailFilesClick(Sender: TObject);
var
  LibModem : TApdLibModem;
  ModemList : TStringList;
  I : Integer;
begin
  if lbxDetailFiles.ItemIndex > -1 then begin
    LibModem := nil;
    ModemList := TStringList.Create;
    Screen.Cursor := crHourglass;
    try
      lbxModemList.Clear;
      LibModem := TApdLibModem.Create(Self);
      LibModem.LibModemPath := edtModemCapFolder.Text;
      StartTime := AdTimeGetTime;
      ModemList.Assign(LibModem.GetModems(lbxDetailFiles.Items[lbxDetailFiles.ItemIndex]));
      for I := 0 to pred(ModemList.Count) do
        lbxModemList.Items.Add(ModemList[I]);
      lblModemListCount.Caption := IntToStr(lbxModemList.Items.Count) + ' modems' + #13#10 +
        Format('%f3 seconds', [(AdTimeGetTime - StartTime) / 1000]);
      tvDetails.Items.Clear;
    finally
      LibModem.Free;
      ModemList.Free;
      Screen.Cursor := crDefault;
    end;
  end;
end;


procedure TForm1.lbxModemListDblClick(Sender: TObject);
var
  LibModem : TApdLibModem;
  LmModem : TLmModem;
  i : Integer;
  j : Integer;
  CurModem : TTreeNode;
  TempNode1 : TTreeNode;
  TempNode2 : TTreeNode;
  TempNode3 : TTreeNode;
begin
  if lbxModemList.ItemIndex = -1 then exit;
  LibModem := nil;
  Screen.Cursor := crHourglass;
  try
    LibModem := TApdLibModem.Create(self);
    LibModem.LibModemPath := edtModemCapFolder.Text;
    StartTime := AdTimeGetTime;
    i :=Libmodem.GetModem(lbxDetailFiles.Items[lbxDetailFiles.ItemIndex],
      lbxModemList.Items[lbxModemList.ItemIndex], LmModem);
    lblDetailLoadTime.Caption := Format('%f3 seconds', [(AdTimeGetTime - StartTime) / 1000]);
    tvDetails.Items.Clear;
    if i <> ecOK then begin
      ShowMessage('Modem not found, i = ' + IntToStr(i));
      Exit;
    end;

    with LmModem do begin
      CurModem := tvDetails.Items.Add (nil, FriendlyName);
      tvDetails.Items.AddChild (CurModem, 'Manufacturer = ' + Manufacturer);
      tvDetails.Items.AddChild (CurModem, 'Model = ' + Model);
      tvDetails.Items.AddChild (CurModem, 'Modem ID = ' + ModemID);
      tvDetails.Items.AddChild (CurModem, 'Provider Name = ' + ProviderName);
      tvDetails.Items.AddChild (CurModem, 'Inheritance = ' + Inheritance);
      tvDetails.Items.AddChild (CurModem, 'Attached To = ' + AttachedTo);
      tvDetails.Items.AddChild (CurModem, 'Inactivity Format = ' + InactivityFormat);
      tvDetails.Items.AddChild (CurModem, 'Reset = ' + Reset);
      tvDetails.Items.AddChild (CurModem, 'DCB = ' + DCB);
      tvDetails.Items.AddChild (CurModem, 'Properties = ' + Properties);
      tvDetails.Items.AddChild (CurModem, 'Forwared Delay = ' + IntToStr (ForwardDelay));
      tvDetails.Items.AddChild (CurModem, 'Variable Terminator = ' + VariableTerminator);
      tvDetails.Items.AddChild (CurModem, 'Inf Path = ' + InfPath);
      tvDetails.Items.AddChild (CurModem, 'Inf Section = ' + InfSection);
      tvDetails.Items.AddChild (CurModem, 'Driver Description = ' + DriverDesc);
      tvDetails.Items.AddChild (CurModem, 'Responses Key Name = ' + ResponsesKeyName);
      tvDetails.Items.AddChild (CurModem, 'Default = ' + Default);
      tvDetails.Items.AddChild (CurModem, 'Call Setup Fail Timeout = ' + IntToStr (CallSetupFailTimeout));
      tvDetails.Items.AddChild (CurModem, 'Inactivity Timeout = ' + IntToStr (InactivityTimeout));
      if SupportsWaitForBongTone then
        tvDetails.Items.AddChild (CurModem, 'Supports Bong Tone = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Bong Tone = False');
      if SupportsWaitForQuiet then
        tvDetails.Items.AddChild (CurModem, 'Supports Wait forQuiet = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Wait for Quiet = False');
      if SupportsWaitForDialTone then
        tvDetails.Items.AddChild (CurModem, 'Supports Wait for Dial Tone = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Wait for Dial Tone = False');
      if SupportsSpeakerVolumeLow then
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume Low = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume Low = False');
      if SupportsSpeakerVolumeMed then
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume Med = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume Med = False');
      if SupportsSpeakerVolumeHigh then
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume High = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Volume High = False');
      if SupportsSpeakerModeOff then
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode Off = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode Off = False');
      if SupportsSpeakerModeOn then
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode On = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode On = False');
      if SupportsSpeakerModeSetup then
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode Setup = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Speaker Mode Setup = False');
      if SupportsSetDataCompressionNegot then
        tvDetails.Items.AddChild (CurModem, 'Supports Set Data Compression Negotiation = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Set Data Compresssion Negotiation = False');
      if SupportsSetErrorControlProtNegot then
        tvDetails.Items.AddChild (CurModem, 'Supports Set Error Control Protocol Negotiation = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Set Error Control Protocol Negotiation = False');
      if SupportsSetForcedErrorControl then
        tvDetails.Items.AddChild (CurModem, 'Supports Set Forced Error Control = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Set Forced Error Control = False');
      if SupportsSetCellular then
        tvDetails.Items.AddChild (CurModem, 'Supports Set Cellular = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Set Cellular = False');
      if SupportsSetHardwareFlowControl then
        tvDetails.Items.AddChild (CurModem, 'Supports Set Hardware Flow Control = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Set Hardware Flow Control = False');
      if SupportsSetSoftwareFlowControl then
        tvDetails.Items.AddChild (CurModem, 'Supports Set Software Flow Control = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Set Software Flow Control = False');
      if SupportsCCITTBellToggle then
        tvDetails.Items.AddChild (CurModem, 'Supports Set CCITT Bell Toggle = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Set CCITT Bell Toggle = False');
      if SupportsSetSpeedNegotiation then
        tvDetails.Items.AddChild (CurModem, 'Supports Set Speed Negotiation = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Set Speed Negotiation = False');
      if SupportsSetTonePulse then
        tvDetails.Items.AddChild (CurModem, 'Supports Set Tone Pulse = True')
      else
        tvDetails.Items.AddChild (CurModem, 'Supports Set Tone Pulse = False');
      if SupportsBlindDial then

⌨️ 快捷键说明

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