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

📄 exlibmd0.pas

📁 delphi RS232 计算机串口通讯源程序
💻 PAS
📖 第 1 页 / 共 3 页
字号:

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Handset Play Format');
      for j := 0 to Voice.HandsetPlayFormat.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.HandsetPlayFormat[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.HandsetPlayFormat[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Handset Record Format');
      for j := 0 to Voice.HandsetRecordFormat.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.HandsetRecordFormat[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.HandsetRecordFormat[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Line Set Play Format');
      for j := 0 to Voice.LineSetPlayFormat.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.LineSetPlayFormat[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.LineSetPlayFormat[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Line Set Record Format');
      for j := 0 to Voice.LineSetRecordFormat.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.LineSetRecordFormat[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.LineSetRecordFormat[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Open Handset');
      for j := 0 to Voice.OpenHandset.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.OpenHandset[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.OpenHandset[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Speaker Phone Disable');
      for j := 0 to Voice.SpeakerPhoneDisable.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.SpeakerPhoneDisable[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.SpeakerPhoneDisable[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Speaker Phone Enable');
      for j := 0 to Voice.SpeakerPhoneEnable.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.SpeakerPhoneEnable[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.SpeakerPhoneEnable[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Speaker Phone Mute');
      for j := 0 to Voice.SpeakerPhoneMute.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.SpeakerPhoneMute[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.SpeakerPhoneMute[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Speaker Phone Set Volume Gain');
      for j := 0 to Voice.SpeakerPhoneSetVolumeGain.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.SpeakerPhoneSetVolumeGain[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.SpeakerPhoneSetVolumeGain[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Speaker Phone UnMute');
      for j := 0 to Voice.SpeakerPhoneUnMute.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.SpeakerPhoneUnMute[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.SpeakerPhoneUnMute[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'StartPlay');
      for j := 0 to Voice.StartPlay.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.StartPlay[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.StartPlay[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Start Record');
      for j := 0 to Voice.StartRecord.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.StartRecord[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.StartRecord[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Stop Play');
      for j := 0 to Voice.StopPlay.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.StopPlay[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.StopPlay[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Stop Record');
      for j := 0 to Voice.StopRecord.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.StopRecord[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.StopRecord[j]).Sequence));
      end;


      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Voice Answer');
      for j := 0 to Voice.VoiceAnswer.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.VoiceAnswer[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.VoiceAnswer[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Voice Dial Number Setup');
      for j := 0 to Voice.VoiceDialNumberSetup.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.VoiceDialNumberSetup[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.VoiceDialNumberSetup[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Voice To Data Answer');
      for j := 0 to Voice.VoiceToDataAnswer.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode2, 'Command = ' + PLmModemCommand (Voice.VoiceToDataAnswer[j]).Command);
        tvDetails.Items.AddChild (TempNode2, 'Sequence = ' + IntToStr (PLmModemCommand (Voice.VoiceToDataAnswer[j]).Sequence));
      end;

      TempNode2 := tvDetails.Items.AddChild (TempNode1, 'Wave Driver');
      tvDetails.Items.AddChild (TempNode2, 'Baud Rate = '  + Voice.WaveDriver.BaudRate);
      tvDetails.Items.AddChild (TempNode2, 'Wave Hardware ID = '  + Voice.WaveDriver.WaveHardwareID);
      tvDetails.Items.AddChild (TempNode2, 'Wave Devices = '  + Voice.WaveDriver.WaveDevices);
      tvDetails.Items.AddChild (TempNode2, 'Lower Mid = '  + Voice.WaveDriver.LowerMid);
      tvDetails.Items.AddChild (TempNode2, 'Lower Wave In Pid = '  + Voice.WaveDriver.LowerWaveInPid);
      tvDetails.Items.AddChild (TempNode2, 'Lower Wave Out Pid = '  + Voice.WaveDriver.LowerWaveOutPid);
      tvDetails.Items.AddChild (TempNode2, 'Wave Out Mixer Dest = '  + Voice.WaveDriver.WaveOutMixerDest);
      tvDetails.Items.AddChild (TempNode2, 'Wave Out Mixer Source = '  + Voice.WaveDriver.WaveOutMixerSource);
      tvDetails.Items.AddChild (TempNode2, 'Wave In Mixer Dest = '  + Voice.WaveDriver.WaveInMixerDest);
      tvDetails.Items.AddChild (TempNode2, 'Wave In Mixer Source = '  + Voice.WaveDriver.WaveInMixerSource);

      TempNode3 := tvDetails.Items.AddChild (TempNode2, 'Wave Format');
      for j := 0 to Voice.WaveDriver.WaveFormat.Count - 1 do begin
        tvDetails.Items.AddChild (TempNode3, 'Speed ' + IntToStr (j + 1) + ' = ' + PLmWaveFormat (Voice.WaveDriver.WaveFormat[j]).Speed);
        tvDetails.Items.AddChild (TempNode3, 'ChipSet ' + IntToStr (j + 1) + ' = ' + PLmWaveFormat (Voice.WaveDriver.WaveFormat[j]).ChipSet);
        tvDetails.Items.AddChild (TempNode3, 'Sample Size ' + IntToStr (j + 1) + ' = ' + PLmWaveFormat (Voice.WaveDriver.WaveFormat[j]).SampleSize);
      end;

      TempNode1 := tvDetails.Items.AddChild (CurModem, 'Hardware');
      tvDetails.Items.AddChild (TempNode1, 'Autoconfig Override = '  + Hardware.AutoConfigOverride);
      tvDetails.Items.AddChild (TempNode1, 'ComPort = '  + Hardware.ComPort);
      tvDetails.Items.AddChild (TempNode1, 'Invalid RDP = '  + Hardware.InvalidRDP);
      tvDetails.Items.AddChild (TempNode1, 'I/O Base Address = '  + IntToStr (Hardware.IoBaseAddress));
      tvDetails.Items.AddChild (TempNode1, 'Interrupt Number = '  + IntToStr (Hardware.InterruptNumber));
      if Hardware.PermitShare then
        tvDetails.Items.AddChild (TempNode1, 'Permit Share = True')
      else
        tvDetails.Items.AddChild (TempNode1, 'Permit Share = False');
      tvDetails.Items.AddChild (TempNode1, 'RxFIFO = '  + Hardware.RxFIFO);
      tvDetails.Items.AddChild (TempNode1, 'Rx/TX Buffer Size = '  + IntToStr (Hardware.RxTxBufferSize));
      tvDetails.Items.AddChild (TempNode1, 'Tx FIFO = '  + Hardware.TxFIFO);
      tvDetails.Items.AddChild (TempNode1, 'PCMCIA  = '  + Hardware.Pcmcia);
      tvDetails.Items.AddChild (TempNode1, 'Bus Type = '  + Hardware.BusType);
      tvDetails.Items.AddChild (TempNode1, 'PCCARD Attribute Memory Address = '  + IntToStr (Hardware.PCCARDAttributeMemoryAddress));
      tvDetails.Items.AddChild (TempNode1, 'PCCARD Attribute Memory Size = '  + IntToStr (Hardware.PCCARDAttributeMemorySize));
      tvDetails.Items.AddChild (TempNode1, 'PCCARD Attribute Memory Offset = '  + IntToStr (Hardware.PCCARDAttributeMemoryOffset));
    end;
  finally
    LibModem.Free;
    Screen.Cursor := crDefault;
  end;
  lbxModemList.DragMode := dmAutomatic;
  caption := 'automatic';
end;

procedure TForm1.Deletemodem1Click(Sender: TObject);
var
  DetailFile, ModemName : string;
  LibModem : TApdLibModem;
begin
  if lbxModemList.ItemIndex = -1 then exit;
  ModemName := lbxModemList.Items[lbxModemList.ItemIndex];
  LibModem := nil;
  Screen.Cursor := crHourglass;
  try
    DetailFile := lbxDetailFiles.Items[lbxDetailFiles.ItemIndex];
    LibModem := TApdLibModem.Create(self);
    LibModem.LibModemPath := edtModemCapFolder.Text;

    LibModem.DeleteModem(DetailFile, ModemName);
    Caption := Format('%f3 seconds', [(AdTimeGetTime - StartTime) / 1000]);
    { force everything to repaint }
    lbxDetailFilesClick(nil);
  finally
    LibModem.Free;
    Screen.Cursor := crDefault;
  end;
end;

procedure TForm1.Deletefile1Click(Sender: TObject);
var
  DetailFile : string;
begin
  if lbxDetailFiles.ItemIndex = -1 then exit;
  DetailFile := lbxDetailFiles.Items[lbxDetailFiles.ItemIndex];
  if MessageDlg('Delete ' + DetailFile + '?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
    DeleteFile(AddBackslash(edtModemCapFolder.Text) + DetailFile);
    RefreshDetailList;
  end;
end;

procedure TForm1.Newfile1Click(Sender: TObject);
var
  NewName : string;
  LibModem : TApdLibModem;
begin
  NewName := 'MyModems.xml';
  if InputQuery('New modem detail file', 'Enter new name '#13#10 +
    '(.xml auto-added, path is modemcap folder)', NewName) then begin
    LibModem := nil;
    try
      LibModem := TApdLibModem.Create(self);
      LibModem.LibModemPath := edtModemCapFolder.Text;
      LibModem.CreateNewDetailFile(NewName);
    finally
      LibModem.Free;
    end;
    RefreshDetailList;
  end;
end;

procedure TForm1.lbxDetailFilesDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := Source = lbxModemList;
end;

procedure TForm1.lbxDetailFilesDragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  DropFileIndex : Integer;
  DragToFileName,
  DragFromFileName,
  DraggedModemName : string;
  LibModem : TApdLibModem;
  Modem : TLmModem;
begin
  if Source = lbxModemList then begin
    DraggedModemName := lbxModemList.Items[lbxModemList.ItemIndex];
    DragFromFileName := lbxDetailFiles.Items[lbxDetailFiles.ItemIndex];
    DropFileIndex := lbxDetailFiles.ItemAtPos(Point(X, Y), False);
    DragToFileName := lbxDetailFiles.Items[DropFileIndex];
    LibModem := nil;
    try
      LibModem := TApdLibModem.Create(self);
      LibModem.LibModemPath := edtModemCapFolder.Text;
      StartTime := AdTimeGetTime;
      if LibModem.GetModem(DragFromFileName, DraggedModemName, Modem) = ecOK then
        LibModem.AddModem(DragToFileName, Modem);
      Caption := Format('%f3 seconds', [(AdTimeGetTime - StartTime) / 1000]);
    finally
      LibModem.Free;
    end;
  end;
end;


procedure TForm1.lbxModemListMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Shift = [ssDouble] then begin
    lbxModemList.DragMode := dmManual;
    Caption := 'manual';
  end;
end;

end.

⌨️ 快捷键说明

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