unit Unit1;
interface
uses
Windows, Messages,SysUtils,Forms,WAVEEXCONTROLLib_TLB,xpman, TONEDECODERLib_TLB, SPECTRUMVIEWLib_TLB,
Menus, Buttons, ComCtrls, OleCtrls, ExtCtrls,dialogs, StdCtrls, Controls, Classes;
type TDecodeState=(DS_None,DS_DTMF, DS_ToneSigal );
type
TForm2 = class(TForm)
Panel1: TPanel;
CbDevices: TComboBox;
Memo1: TMemo;
Label2: TLabel;
GroupBox1: TGroupBox;
BnStart: TButton;
BnStop: TButton;
WaveExCtrl1: TWaveExCtrl;
PhoneToneDecoder1: TPhoneToneDecoder;
GBOptions: TGroupBox;
GroupBox2: TGroupBox;
WaveView1: TSpectrumView;
GroupBox3: TGroupBox;
SpectrumView1: TSpectrumView;
CBChannel: TComboBox;
VolumeIndicator: TSpectrumView;
CheckBox1: TCheckBox;
CheckBox3: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
CheckBox4: TCheckBox;
CheckBox2: TCheckBox;
CBMode: TComboBox;
GroupBox4: TGroupBox;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label5: TLabel;
bslt: TTimer;
Edit4: TEdit;
Label6: TLabel;
sess: TTimer;
GroupBox5: TGroupBox;
lst: TListView;
procedure FormCreate(Sender: TObject);
procedure WaveExCtrl1Debug(Sender: TObject; const Message: WideString;
lRefCode: Integer);
procedure BnStartClick(Sender: TObject);
procedure BnStopClick(Sender: TObject);
procedure CbDevicesChange(Sender: TObject);
procedure PhoneToneDecoder1Debug(Sender: TObject;
const sMsg: WideString; RefCode: Integer);
procedure PhoneToneDecoder1CallerID(ASender: TObject; const Name,
CallerNumber, CalledNumber, DateTime: WideString; Position: Integer);
procedure PhoneToneDecoder1DTMF(ASender: TObject; Key,
Position: Integer);
procedure bsltTimer(Sender: TObject);
function arases:boolean;
function arases1:boolean;
procedure sessTimer(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure lstDblClick(Sender: TObject);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit3Change(Sender: TObject);
procedure Edit3Click(Sender: TObject);
private
SessionEnding: Boolean;
procedure WMQueryEndSession(var Message: TMessage); message WM_QUERYENDSESSION;
public
{ Public declarations }
end;
var
Form2: TForm2;
a:string='';
i:integer=0;
li:tlistitem;
seskaydet:string='';
aranan:string='';
aranan1:integer=0;
implementation
{$R *.DFM}
uses unit3;
procedure TForm2.FormCreate(Sender: TObject);
var i:integer;
begin
CBChannel.ItemIndex:=0;
CbDevices.Items.add('[WAVE_MAPPER]');
for i:=0 to WaveExCtrl1.WaveInNumDevs-1 do begin
CbDevices.Items.Add(WaveExCtrl1.WaveInGetDeviceName(i));
CbDevices.Items.Add('(Line) '+WaveExCtrl1.WaveInGetDeviceName(i));
CbDevices.Items.Add('(Out) '+WaveExCtrl1.WaveOutGetDeviceName(i));
end;
if WaveExCtrl1.WaveInNumDevs>0 then
begin
CbDevices.ItemIndex:=1;
CbDevicesChange(sender);
end;
WaveExCtrl1.RecordBufferLength:=4096;
CbMode.ItemIndex :=0;
// associate the Viewer with the WaveEx
WaveView1.Source:=WaveExCtrl1.DefaultInterface;
SpectrumView1.Source := WaveExCtrl1.DefaultInterface; // associate the Viewer with the WaveEx
VolumeIndicator.Source:=WaveExCtrl1.DefaultInterface;
PhoneToneDecoder1.Source :=(WaveExCtrl1.DefaultInterface as IUnknown); // associate the PhoneDecoder with the WaveEx
bnstart.Click;
end;
procedure TForm2.WaveExCtrl1Debug(Sender: TObject;
const Message: WideString; lRefCode: Integer);
begin
memo1.Lines.add(Message);
end;
procedure TForm2.BnStartClick(Sender: TObject);
begin
//a:=inputbox('Ses Kaydı','Ses Kaydı Tutulsun mu?','');
with PhoneToneDecoder1 do
begin
MonitorDTMF:=CheckBox1.checked;
MonitorCallerID:=CheckBox2.checked;
MonitorCustomTone :=CheckBox3.checked;
MonitorTTY:=CheckBox4.checked;
MonitorMF:=Checkbox5.Checked;
MonitorSAME:=checkbox6.Checked;
TTYParams.Mode :=CBMode.ItemIndex;
end;
Case CBChannel.ItemIndex of
0: // mono, select the mono format
WaveExCtrl1.RecordFormat.FormatIndex := WF_PCM_8kHz16BitStereo;
1,2: // left(right) channel, select the stereo format
WaveExCtrl1.RecordFormat.FormatIndex:= WF_PCM_8kHz16BitMono; end;
// if a='' then BnStop.Enabled := WaveExCtrl1.Record_('') else
BnStop.Enabled := WaveExCtrl1.Record_(a);
BnStart.Enabled :=not BnStop.Enabled;
GBOptions.Enabled :=BnStart.Enabled;
CBMode.Enabled :=false;
end;
procedure TForm2.BnStopClick(Sender: TObject);
begin
WaveExCtrl1.RecordStop;
BnStop.Enabled :=false;
BnStart.Enabled :=not BnStop.Enabled;
GBOptions.Enabled :=BnStart.Enabled;
CBMode.Enabled :=True;
end;
procedure TForm2.CbDevicesChange(Sender: TObject);
begin
WaveExCtrl1.waveinDevice:= CbDevices.Text ;
end;
procedure TForm2.PhoneToneDecoder1Debug(Sender: TObject;
const sMsg: WideString; RefCode: Integer);
begin
memo1.Text:= 'PTD: '+sMsg + #13#10+ memo1.Text;
end;
procedure TForm2.PhoneToneDecoder1CallerID(ASender: TObject; const Name,
CallerNumber, CalledNumber, DateTime: WideString; Position: Integer);
begin
edit4.Text:=name;
edit1.Text:=CallerNumber;
edit2.Text:=DateTime;
//edit3.Text:=CalledNumber;
end;
procedure TForm2.PhoneToneDecoder1DTMF(ASender: TObject; Key,
Position: Integer);
var
a:string;
begin
case key of
48
49
50
51
52
53
54
55
56
57
end;
edit3.Text:=edit3.Text+a;
edit2.Text:=aranan;
end;
procedure TForm2.bsltTimer(Sender: TObject);
begin
bslt.Enabled:=false;
checkbox3.Checked:=true;
if edit1.Text='' then begin
a:='numarayok.wav';
end else begin
a:=edit1.Text+'.wav';
end;
bnstop.Click;
sleep(1500);
bnstart.Click;
//bslt.Enabled:=false;
sess.Enabled:=true;
end;
function TForm2.arases: boolean;
var
b,yer,adet:integer;
s,f:string;
begin
yer:=0;
adet:=0;
f:='End of silence detected, ';
s:=copy(memo1.Text,yer+1,length(memo1.Text)-yer+1);
b:=pos(f,s);
yer:=yer+b;
if b=0 then begin
if adet=0 then else
adet:=0;
yer:=0;
result:=false;
end else begin
result:=true;
end; adet:=adet+1;
end;
function TForm2.arases1: boolean;
var
b,yer,adet:integer;
s,f:string;
begin
yer:=0;
adet:=0;
f:='Frequency detected, ';
s:=copy(memo1.Text,yer+1,length(memo1.Text)-yer+1);
b:=pos(f,s);
yer:=yer+b;
if b=0 then begin
if adet=0 then else
adet:=0;
yer:=0;
result:=false;
end else begin
result:=true;
end; adet:=adet+1;
end;
procedure TForm2.sessTimer(Sender: TObject);
begin
if arases and arases1 then begin
memo1.Clear;
end else begin
checkbox3.Checked:=false;
bnstop.Click;
sleep(500);
edit1.Clear;
edit2.Clear;
edit3.Text:='';
edit4.Clear;
a:='';
sleep(500);
bnstart.Click;
sess.Enabled:=false;
end;
end;
procedure TForm2.Edit2Change(Sender: TObject);
begin
if edit2.Text='' then begin exit;
end else begin
Li := form2.Lst.Items.Add;
Li.Caption := edit1.Text;
Li.Caption := edit3.Text;
Li.SubItems.Add(edit2.Text);
li.SubItems.Add(edit4.Text);
sleep(500);
bslt.Enabled:=true;
end;
end;
procedure TForm2.lstDblClick(Sender: TObject);
begin
if Lst.Selected=nil then exit;
form3.Showmodal;
end;
procedure TForm2.WMQueryEndSession(var Message: TMessage);
begin
SessionEnding := True;
end;
procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if edit3.Text[1]=inttostr(0) then
edit3.MaxLength:=11 else edit3.MaxLength:=7;
end;
procedure TForm2.Edit3Change(Sender: TObject);
begin
id edit3.text='' then exit;
if(Edit3.Text[1]=IntToStr(0)) and (Length(Edit3.Text)=11) then begin
end;
if not (Edit3.Text[1]=IntToStr(0)) and (Length(Edit3.Text)=7) then begin
end;
end;
procedure TForm2.Edit3Click(Sender: TObject);
begin
Edit2.Text:=DateTimeToStr(now);
end;
end.