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

📄 demo.pas

📁 单路开发文档和源代码例子12-13 设置语音识别内容的列表
💻 PAS
字号:
//=================================================
//  name : demo.pas
//  copyright : quanova corporation
//  date : 2004.5.13
//
//  date            comment         ver
//  2004.5.13       create          1.00
//=================================================
unit demo;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, usbid;

type
  TfrmDemo = class(TForm)
    Timer1: TTimer;
    lbMsg: TListBox;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    btnDial: TButton;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    GroupBox5: TGroupBox;
    btnFilePlay: TButton;
    odFilePlay: TOpenDialog;
    sdFileRec: TSaveDialog;
    Button1: TButton;
    Button2: TButton;
    Button5: TButton;
    Button4: TButton;
    Button3: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;

    procedure ShowMsg(const msg : WideString);
    procedure OpenDevice();
    procedure CloseDevice();
    procedure ReOpenDevice();
    procedure OffHook();
    procedure HangUp();
    procedure Dial(num : WideString; speed : integer);
    procedure StopDial();
    
    procedure btnReInitClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnDialClick(Sender: TObject);
//    procedure btnSetFreqClick(Sender: TObject);
//    procedure btnFilePlayClick(Sender: TObject);
    procedure btnFileRecClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure btnFilePlayClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  frmDemo: TfrmDemo;
  fInit: Boolean;
  lplayid : longint;
  lrecid  : longint;
  
implementation

{$R *.dfm}

procedure TfrmDemo.ShowMsg(const msg : WideString);
begin
  lbMsg.AddItem(msg, nil);
end;

procedure TfrmDemo.OpenDevice();
begin
  fInit := false;
  lplayid:= -1;
  lrecid := -1;
  if TV_Initialize() = 1 then begin
    ShowMsg('初始化设备成功');
    fInit := true;
  end
  else
    ShowMsg('初始化失败');
end;

procedure TfrmDemo.CloseDevice();
begin
  if fInit then begin
    TV_Disable();
    ShowMsg('设备已关闭');
    fInit := false;
  end;
end;

procedure TfrmDemo.ReOpenDevice();
begin
   // if 1 then begin
   // ShowMsg('重新初始化设备成功');
   // fInit := true;
   //  end
   //  else
   //   ShowMsg('重新初始化设备失败');
end;

procedure TfrmDemo.OffHook();
begin
  if fInit then begin
    ;//TV_OffHookCtrl(CHN, true);

    Sleep(500);  // 摘机时间, 可调节

    ShowMsg('摘机');
  end
  else
    ShowMsg('设备没打开');
end;

procedure TfrmDemo.HangUp();
begin
  if fInit then begin
    ;//TV_HangUpCtrl(CHN);
    ShowMsg('挂机');
  end
  else
    ShowMsg('设备没打开');
end;

procedure TfrmDemo.Dial(num : WideString; speed : integer);
begin
  if fInit then begin 
    ;//TV_SetSendDTMFSpeed(speed);
    ;//TV_StartDial(CHN, num, true);
    ShowMsg('拨号 : ' + num + '      速度 : ' + IntToStr(speed));
  end
  else
    ShowMsg('设备没打开');
end;

procedure TfrmDemo.StopDial();
begin
  ;//TV_StopDial(CHN);
end;

// 事件检测
procedure TfrmDemo.Timer1Timer(Sender: TObject);
var
  e : Event;
  num : integer;
begin
  if TV_GetEvent( @e) > 0 then begin

    case e.EventType of
                TEvent_GetFsk,
                TEvent_GetDTMF:
	  			lbMsg.AddItem(e.data.Buf, nil);  //接收来电号码

 			TEvent_OffHook:
				ShowMsg('呼叫方摘机');

			TEvent_Ring:
 				ShowMsg('来电响铃');
			TEvent_DialEnd:
			       ShowMsg('拨号结束');
			TEvent_Busy:
				ShowMsg('忙音');
				
			TEvent_PlayEnd:
				ShowMsg('播放完毕');
				
			TEvent_HangUp:
				 ShowMsg('对方挂机');
				
			TEvent_InterHangUp:
				ShowMsg('本地话机挂机');
				
			TEvent_InterOffHook:
				ShowMsg('本地话机摘机');
			 TEvent_PlugOut:
                                ShowMsg('设备移除');
                         TEvent_PlugIn:
                                ShowMsg('设备接入');
			TEvent_Nobody:
				ShowMsg('无人接听');
                        TEvent_StopCallIn:
				ShowMsg('呼入停止');
			TEvent_GetChar:
                                begin
                                ShowMsg('取得DTMF码 : ' + e.Data.Buf);
                                if e.Data.Buf[1] = '*' then begin
                                 ShowMsg('提示:接收到*');
                                end;
                                end;
			TEvent_TelCallOut:
				ShowMsg('本地话机拨号后听到回铃');
                        TEvent_TelDial:
                                //如果需要最新的一个DTMF只要取最后一个buf
                                begin
                                ShowMsg('取得电话机按键 : ' + e.Data.Buf);
                                if e.Data.Buf[StrLen(PChar(@e.Data.Buf[1]))] = '*' then begin
                                 ShowMsg('提示:接收到*');
                                end;
                                end;
    end;

  end;
end;

procedure TfrmDemo.btnReInitClick(Sender: TObject);
begin
  ReOpenDevice();
end;

procedure TfrmDemo.FormCreate(Sender: TObject);
begin
  OpenDevice();
end;

procedure TfrmDemo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  CloseDevice();
end;

procedure TfrmDemo.btnDialClick(Sender: TObject);
var
  num : WideString;
//  speed : integer;
begin
  if btnDial.Caption = '拨号' then begin
    num := Edit1.Text;
  //  speed := StrToInt(ComboBox1.Items[ComboBox1.ItemIndex]); // speed
    if num = '' then
      ShowMsg('号码为空')
    else begin
      TV_OffHookCtrl();   // 摘机
      Sleep(1000);
      TV_StartDial(num,true);
      TV_OpenLinePlay();
      //Dial(num, speed);   //拨号
      btnDial.Caption := '停止拨号';
    end;
  end
  else begin
    TV_StopDial();
    TV_HangUpCtrl(); //挂机
    btnDial.Caption := '拨号'
  end;
end;

procedure TfrmDemo.btnFileRecClick(Sender: TObject);
begin
  //if btnFileRec.Caption = '输出到文件' then begin
    //if odFilePlay.Execute() then begin
    //  if rbMic.Checked then
        // Mic
        //;//TV_StartRecordFile(CT_INTERNAL, odFilePlay.FileName, 0, 2147483647)
      //else begin
        // Line
        //OffHook(); //先摘机
        //;//TV_StartRecordFile(CHN, odFilePlay.FileName, 0, 2147483647);
    //  end;

   //  btnFileRec.Caption := '停止录音';
  //  end;
  //end
  //else begin
  //  if rbMic.Checked then
  //    ;//TV_StopRecordFile(CT_INTERNAL)
  //  else begin
  //    HangUp();
  //    ;//TV_StopRecordFile(CHN);
  //  end;

  //  btnFileRec.Caption := '输出到文件';
 // end;
end;

procedure TfrmDemo.Button1Click(Sender: TObject);
begin
TV_OpenDoPlay();
end;

procedure TfrmDemo.Button3Click(Sender: TObject);
begin
if lrecid <> -1 then begin;
 TV_StopRecordFile(lrecid,FALSE);
end;

if odFilePlay.Execute() then begin
   lrecid := TV_StartRecordFile(odFilePlay.FileName, 0, 0);
    if lrecid < 0 then
        ShowMsg('录音失败:'+IntToStr(lrecid)+odFilePlay.FileName)
    else
        ShowMsg('开始录音');
 //-1 设备不正常
 //-2,-3 文件路径创建/打开错误
 //-4 超过最大的录音文件数量,请先停止正在录音的文件
end;

end;

procedure TfrmDemo.Button5Click(Sender: TObject);
begin
  begin
      TV_StopPlayFile(lplayid);
      lplayid := -1;
   //   btnFilePlay.Caption := '播放文件';

      ShowMsg('停止播放文件');
  end;
end;

procedure TfrmDemo.Button2Click(Sender: TObject);
begin
TV_CloseDoPlay ();
end;

procedure TfrmDemo.btnFilePlayClick(Sender: TObject);
begin
if lplayid = -1 then  begin
 TV_StopPlayFile(lplayid);
 lplayid := -1;
end;

if odFilePlay.Execute() then begin
 lplayid := TV_StartPlayFile(odFilePlay.FileName, 0, 0,TRUE,FALSE,FALSE,0);
 if lplayid = -1 then
        ShowMsg('播放出错')
  else
       ShowMsg('开始播放文件');
end;
end;

procedure TfrmDemo.Button4Click(Sender: TObject);
begin
if lrecid <> -1 then begin
TV_StopRecordFile(lrecid,FALSE);
ShowMsg('停止录音');
end;
end;

procedure TfrmDemo.Button6Click(Sender: TObject);
begin
TV_OffHookCtrl();
end;

procedure TfrmDemo.Button7Click(Sender: TObject);
begin
TV_HangUpCtrl();
end;

procedure TfrmDemo.Button8Click(Sender: TObject);
begin
TV_EnableRing(TRUE);
end;

procedure TfrmDemo.Button9Click(Sender: TObject);
begin
TV_EnableRing(FALSE);
end;

procedure TfrmDemo.Button10Click(Sender: TObject);
begin
TV_EnableMic(FALSE);
end;

procedure TfrmDemo.Button11Click(Sender: TObject);
begin
TV_EnableMic(TRUE);
end;

end.

⌨️ 快捷键说明

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