?? 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 + -