![]() |
DTMF auswertung über die Soundkarte
Hallo liebe Leute
ich suche nach einer Möglichkeit DTMF töne über die Soundkarte auszuwerten sprich wen tönne über die Line in empfangen werden soll mein Programm etwas machen nun das Problem überall im Inet mus man ActivX modul haben und die Sind alle kostenpflichtig gibt es noch eine Möglichkeit die Kostenlos ist danke für hilfe. |
Re: DTMF auswertung über die Soundkarte
Du benötigst eine FFT (Fast Fourier Transformation)-Komponente für Delphi.
Jeder DTMF-Ton wird aus der überlagerung von 2 Frequenzen erzeugt. Wenn Du nun per Komponenten die beiden Frequenzen bestimmst kannst Du die gedrückte Taste bestimmen. |
Re: DTMF auswertung über die Soundkarte
So ich habe jetzt was gefunden aber das passiert über ein Wave File ist es möglich ein Stream zu machen und sagen wir mal immer so 1 Minute auf zu nehmen und auszuwerten danach wieder von forne
Code:
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Wave, dspDTMF; type TfmMain = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; Label1: TLabel; Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private DTMF: TdspDTMF; // DTMF decoder (see the dspDTMF unit) procedure OnTone(Sender: TObject; Tone: Char); end; var fmMain: TfmMain; implementation {$R *.dfm} procedure TfmMain.FormCreate(Sender: TObject); begin Caption:= Application.Title; DTMF:= TdspDTMF.Create; DTMF.OnTone:= OnTone; end; procedure TfmMain.FormDestroy(Sender: TObject); begin DTMF.Free; end; procedure TfmMain.Button1Click(Sender: TObject); var B: Byte; S: SmallInt; Wave: TWaveFileStream; begin if OpenDialog1.Execute then begin Edit1.Text:= ''; Wave:= TWaveFileStream.Create(OpenDialog1.FileName, fmOpenRead); try Wave.Open(false); if Wave.Format.nChannels <> 1 then begin MessageDlg('This demo supports Mono files only', mtWarning, [mbCancel], 0); Edit1.Text:= 'Format not supported'; Exit; end; DTMF.SampleRate:= Wave.Format.nSamplesPerSec; DTMF.Initialize; Caption:= 'Searching for tones...'; Application.ProcessMessages; try if Wave.Format.wBitsPerSample = 8 then begin DTMF.Threshold:= 1; // Set amplitude threshold while Wave.Read(B, 1) = 1 do DTMF.Put(B) end else begin DTMF.Threshold:= 100; // Set amplitude threshold while Wave.Read(S, 2) = 2 do DTMF.Put(S); end; DTMF.Finilize; finally Caption:= Application.Title; end; finally Wave.Free; if Edit1.Text = '' then Edit1.Text:= 'not found...'; end; end; end; procedure TfmMain.OnTone(Sender: TObject; Tone: Char); begin Edit1.Text:= Edit1.Text + Tone; end; end. |
Re: DTMF auswertung über die Soundkarte
wieso fft wenns auch mit fir geht !
|
Re: DTMF auswertung über die Soundkarte
wie hast du ein Beispiel was Kosten Frei Ist dan herr damit
benötigten Töne frei eingebbar anhand von Kombinationen #01* und ....... |
Re: DTMF auswertung über die Soundkarte
ist ja prima wie man geholfen wird nur kann den Irgen einer mal ein BeiSpiel Script schicken
was man EV abgeänder verwenden kann wir haben ja eines nur es geht halt nur mit Wav Files was wir brauchen ist ein Streaming des Line IN oder BZW des MIK. in. als eingabe. Leute helft doch es muss doch ein weg geben ohne Teure module zu kaufen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz