📄 demo.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 + -