Computer lydgrensesnitt for wire-basert telefon nettverket
Colin Fahey

En datamaskin kan gjøre stemmen telefonsamtaler bruke noen modem og en enkel krets.
1. Innledning
Dette dokumentet beskriver hvordan du kan bruke alle vanlige modem og en enkel krets for å gi noen personlige datamaskin (PC), med en hvilken som helst operativsystem, muligheten til å plassere telefonsamtaler som kan innebære stemme interaksjon.
En vanlig modem brukes til å aktivere telefon ledningen ved å gå "av kroken," og senere frigjøre telefon ledningen ved å gå "på kroken (henge opp)."
En enkel elektrisk krets brukes til å gi en hvilken som helst lydenhet, for eksempel et lydkort eller lyd-grensesnittet til en personlig datamaskin (PC), tilgang til lyd-signaler på en telefon ledning.
Dermed vil en personlig datamaskin (PC) kan starte en tilkobling til et telefonnummer, og deretter vente på et menneske eller et automatisk system for å svare på, og deretter sette i gang en samtale basert på tale eller andre lyder.
Dette dokumentet er beregnet for amatører interessert i å lære et par ting om elektriske og protokoll for å kommunisere med Central Office (CO) av en ledning koblet telefon nettverk i USA (US).
Det finnes mange teknologier for å la folk til å samhandle med tale-baserte systemer gjennom telefoner.
Det er mange kommersielle produkter og tjenester som tilbys for å håndtere alt som er tilknyttet telefon samspill med bedriftens database.
Det er ganske enkelt å finne maskinvare for å håndtere mange telefonsamtaler til et enkelt tall.
Telefoni har utvidet til Internett, med protokoller som "Voice over Internet Protocol" (VoIP).
Datamaskiner hvor som helst på Internett kan være konfigurert til å samhandle med VoIP gjennom talegjenkjenning og talesyntese.
Disse maskinene kan eventuelt følge stemmen samtale flytskjema uttrykt i XML tekstfiler (Voice XML).
Dette dokumentet har ingenting å gjøre med noen av de praktiske løsninger på problemet med å automatisere stemme interaksjon med en bedrift eller organisasjon.
Dette dokumentet er ment for underholdning av amatører med små budsjetter.
2. Forbehold
Lage en elektronisk krets, og koble til en telefon nettverk, involverer mange farer.
Du er ansvarlig for å lære om lover, farer og risikoer som kan gjelde.
Følgende er en liste over noen av de problemene som du må vurdere hvis du er interessert i bygging og testing av en krets som ligner på en omtalt i denne artikkelen:
1. All informasjon om elektriske spesifikasjoner på telefon tjenesten er kun gyldig i USA (US).
2. Ringevolum spenning på telefon ledninger (90 Volts) kan krenke mennesker.
Lightning eller falt strøm ledninger kan føre til spenninger på telefon ledninger som kan skade personer.
3. Du er ansvarlig for eventuelle skader på telefon selskapet kretser forårsaket av bruk av uautoriserte enheter i hjemmet eller kontoret.
4. Innspilling telefon samtaler uten eksplisitt godkjenning av alle involverte parter er mot loven.
(... Hvis du ikke er regjeringens! Ellers, gjør som de sier, og ikke som de gjør!)
5. Du er ansvarlig for eventuelle skader på maskinen forårsaket ved å koble til din egen krets til datamaskinen din.
6. Du kan ikke selge noe produkt beregnet for bruk med en telefon nettverket uten godkjenning fra FCC.
Dette dokumentet er kun en beskrivelse av mine personlige erfaringer.
Du er ansvarlig for å lære om lover og risiko fra autoritative kilder.
3. Telefon lydgrensesnitt krets
Formålet med krets beskrevet i denne delen er å tillate konvensjonelle lydopptak og avspilling utstyr, for eksempel et lydkort eller lyd-porten på en PC (PC), til å sende og motta lyd over et konvensjonelt land ledningen (kabel) telefon forbindelse.
The telephone wire og lyd utstyr er ikke direkte koblet, coupling er bare gjennom transformatorer.
Begge sider av grensesnittet er beskyttet mot høye spenninger.
Signalene er begrenset til et spekter av frekvenser (båndbredde) er relevant for telefon audio (300 Hz til 3500 Hz).
Kretsene har bare "passive" komponenter; alle kjøreforhold spenninger er eksterne.
The circuit må brukes i forbindelse med et modem, telefon, eller en annen krets i stand til å gå "av kroken" (å bringe motstanden til ledningen lave nok til å indikere til Central Office (CO) at kabelen er i bruk).
Det ville være trivielt å legge til en "av kroken" aspektet til denne krets, men har en omkrets på alle allerede er et stort hinder for mange amatører.

Utseende av det sammensatte krets

Utseende av krets bord

Skjematisk av telefon lydgrensesnitt krets
Du kan bygge enheten nesten nøyaktig slik det vises ovenfor hvis du gjør følgende investeringer:
1. Kontroller at du har grunnleggende verktøy: Skrutrekkere, loddepenn, kniv;
2. Besøk radio shack, kjøpe eks oppført nedenfor, for $ 29 etter skatt;
3. Besøk hvilken som helst maskin butikk, kjøpe to muttere, bolter, washers, for $ 1.
4. Bruke omtrent fire timer å lage krets i henhold til skjemaet;
Hvis du ikke har erfaring å bygge på elektroniske kretser, lodde, bore hull og gjøre elektriske målinger, ikke gjør dette første prosjektet!
Den eneste personen som skal forsøke å bygge denne krets er den personen som allerede vet at han eller hun kan bygge den!
4. Radio Shack: allestedsnærværende elektronikk butikk
Radio Shack er en forbrukerelektronikk selskap med butikker rundt om i verden. Nedenfor finner du en link til deres Internett-side:
På sitt nettsted en person kan finne en link som heter "Electronic Components", som fører til deres katalog av elektroniske komponenter og tilhørende dokumentasjon.
En person kan finne priser på deler.
En person kan få en liste over de nærmeste butikk steder og kart.
Deler kan bestilles online.
Jeg har besluttet å bygge min enkel krets bruker Radio Shack deler fordi dette betyr at hvem som helst i verden lett kan reprodusere arbeidet mitt.
Også noen av delene som tilbys av Radio Shack er nesten garantert å være tilgjengelig for mange år at en lav pris.
Her er en liste over Radio Shack deler jeg brukt til å bygge krets, med katalogen tall:
| Qty | Description | Serial # | Price | Total |
| 1 | Project Enclosure (6"x3"x2") | #270-1805 | $ 3.79 | $ 3.79 |
| 1 | Surface Mount Modular Jack (RJ11/RJ14) | #279-0202 | $ 4.99 | $ 4.99 |
| 1 | 3-Conductor Stereo 1/8th" Phone Jack (Pkg.2) | #274-0249 | $ 2.99 | $ 2.99 |
| 1 | Component PC Board (71x94mm), 750 holes | #276-0158 | $ 2.99 | $ 2.99 |
| 2 | Audio Isolation Transformer (1:1) | #273-1374 | $ 3.99 | $ 5.98 |
| 2 | Metalized-Film Capacitor 1.0uF, 250WVDC | #272-1055 | $ 1.49 | $ 2.98 |
| 1 | 2.2K ohm 1/2W 5% Carbon Film Resistor (Pkg.5) | #271-1121 | $ 0.99 | $ 0.99 |
| 2 | 1N4733A, 5.1V, 1.0W Zener Diode (Pkg.2) | #276-0565 | $ 0.99 | $ 1.98 |
SUBTOTAL: $26.69
TAX: $ 2.07 (California 7.75% sales tax)
TOTAL: $28.76
5. Ace Hardware: ikke-så-allestedsnærværende maskinvare butikk
Jeg trengte bolter, washers, og muttere til å feste en telefonkontakten til plast tilfelle av min krets.
Jeg gikk til Ace Hardware, men jeg kunne gått til Home Depot, eller kanskje til og med et supermarked, for å finne tilsvarende deler.
| Qty | Description | Price | Total |
| 2 | Bolt No.8-32 4.2mm-32 | $ 0.17 | $ 0.34 |
| 2 | Washer No.8 | $ 0.10 | $ 0.20 |
| 2 | Nuts No.8-32 2" | $ 0.10 | $ 0.20 |
SUBTOTAL: $0.74
TAX: $0.06 (California 7.75% sales tax)
TOTAL: $0.80
6. Verktøy og tilbehør
Følgende tabell viser noen av elementene som jeg trengte for bygging og bruk av krets:
| Soldering iron | $ 5.00 (approx) |
| Solder | $ 3.00 (approx) |
| Precision knife | $ 3.99 |
| Wires | $ 1.00 (approx) |
| Telephone extension cord #279-0374 | $ 5.79 |
| Male-Male mini-phono 6' extension cord (qty.2) | $ 3.00 (approx) |
| Four-wire 3-way coupler (RJ11/RJ14) #279-0447 | $ 4.99 |
7. Kommentarer på krets
Jeg er ikke en elektrisk ingeniør.
Jeg studerte ulike telefon kretser (se referanser oppført i nærheten av slutten av denne artikkelen), og hentet forskjellige elementer som vil støtte mitt eget design mål.
Hvis du er virkelig desperat, og risikoen for PC var ikke en faktor, kan du koble en telefon ledning til lyd-porten ved hjelp av bare et par kondensatorer!
Det er en svært dårlig idé, fordi øresus spenning, og mulige tilfeldige spenning toppene på telefon ledning, kan skade ubeskyttet enheter.
Den Zener diodes i min krets kortslutning høye spenninger.
Legg merke til at de står overfor motsatte retninger, slik at for en gitt installert spenning med en polaritet, en Zenerdiode er klar til å gjennomføre pågående normalt, og den andre er klar for reverse-breakdown bør spenning overskride sin vurdering (for eksempel 5.1 V) .
Bare når en spenning enn omvendt-breakdown voltage ett av Zener diodes vil koble til slutt gi strøm til flyten, og dermed kortslutning i ledninger som de to diodes er tilkoblet.
Vær oppmerksom på at dette fungerer uavhengig av hvor signalene kommer.
Vekselstrøm (AC) signaler fra telefon wire som er større og 5,8 Volts ( 5.1 V + 0.7 V ) etter passerer gjennom transformatoren vil bli avkuttet.
Likespenning (DC) eller vekselstrøm (AC) audiosignaler fra en lydkilde, ikke telefon ledningen, vil også bli avkuttet 5.8 Volts.
Så hver part, telefon og lyd-utstyr, er beskyttet mot høye spenninger som kommer fra den andre parten.
Enheten er virkelig et par identiske kretser. Enten audio plugin kan brukes for input eller output.
Basically, både lyd-signaler er koblet til én telefon signal.
8. Ved hjelp av et modem for å gå "på kroken"
8.1 Formålet med modem
Formålet med modem i dette systemet er å skape en elektrisk tilstand som telefon tjenesteleverandøren vil kjenne igjen som en forespørsel om å bli en aktiv deltaker i telefon nettverket.
Denne forespørselen kalles "gå av kroken," en referanse til den opprinnelige telefon design som kreves for en bruker å løfte en høyttaler eller håndsett off av en krok.
Aktiveringsforespørselen er nesten umiddelbart gitt, innenfor en brøkdel av et sekund.
Når kabelen blir aktive, alle andre aspekter av telefoni kan bli gjennomført gjennom audiosignaler.
Selv om overføring av telefonnumre "(oppringing)" kan gjøres ved å spille lydfiler ( *.WAV, *.MP3 ), innspilt lyd (DAT, lyd CD, tape), eller programvare for lyd-syntese (sin() funksjoner), modem har egenverdi evne til å utføre denne funksjonen.
Men det bør bli forstått at det eneste formålet med modem ber om aktivering av telefon ledningen.
Hvis en person har en alternativ metode for å simulere den av kroken tilstand (dvs. bare senke motstand over telefon wire), modemet er ikke nødvendig.
Men et modem er et meget rimelig, det ordinære, og praktisk enhet for å utføre denne funksjonen.
Systemet er beskrevet i denne artikkelen krever ikke et modem med lyd opptak eller avspilling evne, også kalt en "stemme modem."
Men i en annen del av denne artikkelen jeg diskutere muligheten for å bruke en stemme modem som et alternativ til å bruke en tilpasset elektrisk krets.
8.2 Typiske modem
Jeg valgte å bruke et eksternt modem, produseres av Hayes kalt "Accura", en V.92 fax-modem med telefonsvarer evne.
Alle modem kan brukes for systemet beskrevet i denne artikkelen.
Jeg ønsket et eksternt modem rett og slett fordi det er enkelt å koble til en hvilken som helst datamaskin, og jeg kan bringe den til en venns hus til bruk med sine bærbare eller stasjonære datamaskinen.
Selv om det er neppe viktig, jeg også vurdert muligheten for at kanskje en Basic Stamp 2 maskinen kan bruke RS-232 modem.
Advarsel: serielle porter (RS-232) porter, som PS/2 porter, blir faset ut, og USB er den nye standarden.
En ekstern USB modem kan ofte bli åpnet av programvare som om det var en arv "COM" port enheten av enhetsdrivere som følger med modemet.
Det er en liten USB/RS-232 adapter (~$30) som kan brukes til å koble moderne bærbare datamaskiner og stasjonære datamaskiner til RS-232 enheter.
En slik adapter har en tilsvarende enhetsdriver for å etterligne en arv seriell port (for eksempel "COM" enhet).

Hayes eksterne modem: boks

Hayes eksterne modem
8.3 Modem-kommandoer
Når et modem er først slått på, det går inn i en tilstand som kalles "kommando-modus."
Hvis modemet vellykket kobles til et eksternt modem eller ekstern faks enheten over telefon ledning, det går inn i en tilstand som kalles "data."
Men systemet er beskrevet i dette dokumentet vil ikke bruke modem for å etablere en "data-modus" forbindelse med en ekstern enhet, slik at modemet vil alltid være i "kommando-modus."
Når i kommando-modus, modemet aksepterer kommandoer i form av ren ASCII tegn.
Karakterer er utvekslet mellom modemet og datamaskinen via en seriell kabel, eller via en enhetsdriver som gjør en intern kort (for eksempel PCI kortet) tilgjengelig som en seriell enhet.
I begge tilfeller, programmene som bruker API samtaler for å få tilgang til serielle enheter (for eksempel "COM1" eller "/dev/modem").
En stor del av modem kommandoer kalles "AT" (ay-tee) kommandoer, og disse kommandoene alle begynne med tegn "at" (eller "AT").
Som modemer utviklet seg, listen over kommandoer utvidet, og tilbyr i økende grad esoteriske funksjoner. Systemet er beskrevet i denne artikkelen kun krever evne til å ta modemet "av kroken" og senere returnere modem til "på kroken." Muligheten til å ringe sifre, og eventuelt slå på en høyttaler for å overvåke samtalen, er nyttige funksjoner, men er ikke avgjørende. Følgende tabell viser modem kommandoer som trolig vil bli brukt med systemet beskrevet i denne artikkelen:
| Action | Command |
| On-Hook ("Hang Up") | ATH [zero] [return] |
| Off-Hook ("Pick Up") | ATH [one] [return] |
| "Dial" Digits | ATDT [digits,#,*] ; [return] |
| "Dial" Digit | ATDT [digit,#,*] ; [return] |
| Speaker Off | ATM [zero] [return] |
| Speaker On | ATM [two] [return] |
Følgende tabell viser en hypotetisk sekvens av kommandoer som brukes til å plassere en telefon samtale, samhandle med et automatisk system som bruker "touch-toner" (DTMF), og deretter avslutte samtalen "(henge opp):"
| Command | Action |
| ATM 2 [return] | Speaker On |
| ATH 1 [return] | Off-Hook ("Pick Up") |
| ATDT 5551212 ; [return] | "Dial" 5551212 |
| ATDT 3 ; [return] | "Press" 3 |
| ATDT # ; [return] | "Press" Pound (#) |
| ATDT * ; [return] | "Press" Star (*) |
| ATH 0 [return] | On-Hook ("Hang Up") |
| ATM 0 [return] | Speaker Off |
8.4 AT kommandoen set
Den "AT kommandoen sett er gjennomført av nesten alle modemer i eksistens.
Dette settet av kommandoer ble opprinnelig gjennomført ved Hayes modemer.
De fleste modemer er klassifisert som "Hayes kompatible, fordi de gjennomfører sett AT kommandoer.
Alle AT kommandoer må begynne med AT prefikset, etterfulgt av en kommando brev, og endte med ENTER(*) nøkkelen.
(*...ENTER, CARRIAGE RETURN, CR, RETURN, '\r', 13, 0xd, Control-M, ^M)
Mellomrom er tillatt i kommandoen strengen for å øke kommandolinje lesbarhet, men blir ignorert av modem under kommando kjøres.
Alle kommandoer kan være skrevet i enten store bokstaver eller lavere tilfelle, men har aldri blandet.
En kommando som sendes uten noen parametere anses som angir den samme kommandoen med en parameter av 0 (null).
Følgende er en kondensert liste over AT kommandoer.
En mer fullstendig og detaljert liste kan lett bli funnet på Internett via et søk ved hjelp av søkeord "at modem kommandoer.
| Cmd | Action |
| A | Answer incoming call |
| D | 0-9, A-D, # and * (e.g., AT T D 5551212*#) |
| P | Pulse dial |
| T | Tone dial |
| W | Wait for second dial tone |
| , | Pause |
| @ | Wait for 5 secs of silence |
| ! | Flash (very brief on-hook) |
| ; | Return to command mode after dialing |
| E0 | Command echo disabled |
| E1 | Command echo enabled |
| F0 | Autoscan mode |
| F1 | 300 bps connection only |
| F3 | V.23 connection only |
| F4 | 1200 bps connection only |
| F5 | 2400 bps connection only |
| F6 | 4800 bps connection only |
| F7 | 7200 bps connection only |
| F8 | 9600 bps connection only |
| F9 | 12000 bps connection only |
| F10 | 14400 bps connection only |
| H0 | Modem on-hook (hang up) |
| H1 | Modem off-hook (pick up) |
| I0 | Product code |
| I1 | Checksum code |
| I2 | ROM test |
| I3 | Firmware and device ID |
| L0 | Low speaker volume |
| L1 | Low speaker volume |
| L2 | Medium speaker volume |
| L3 | High speaker volume |
| M0 | Speaker off |
| M1 | Speaker on until carrier detect |
| M2 | Speaker on |
| M3 | Speaker off during dialing, on until carrier detected |
| N0 | Connect only at DTE rate |
| N1 | Auto rate negotiation |
| O0 | Return to data mode |
| O1 | Initiate an equalizer retrain and return to data mode |
| P | Pulse dial |
| Q0 | Result codes enabled |
| Q1 | Result codes disabled |
| T | Tone dial |
| V0 | Numeric responses |
| V1 | Text responses |
| W0 | Report DTE speed only |
| W1 | Report wire speed, error correction protocol, and DTE speed |
| W2 | Report DCE speed only |
| X0 | Hayes Smartmodem 300 compatible responses/blind dialing |
| X1 | Same as X0 plus all CONNECT responses/blind dialing |
| X2 | Same as X1 plus dial tone detection |
| X3 | Same as X1 plus busy signal detection/blind dialing |
| X4 | All responses and dial tone and busy signal detection |
| Y0 | Long space disconnect disabled |
| Y1 | Long space disconnect enabled |
| Z0 | Reset and recall user profile 0 |
8.5 Testing av modem
Denne delen beskriver metoder for raskt å bekrefte muligheten til å styre et modem koblet til datamaskinen.
Den første metoden er egnet for Windows 98/NT/Me/2K/XP.
Den grunnleggende ideen er å starte "seriell kommunikasjon" programvare som kan bli funnet i nesten hvilken som helst vanlig installasjon av Windows operativsystem: "HyperTerminal".
Windows 98 : "C:\Program Files\Accessories\HyperTerminal\Hypertrm.exe"
Windows 2000\XP: "C:\Program Files\Windows NT\hypertrm.exe"
(Dobbel-anføres vist ovenfor er nødvendig når du gjør snarveiene eller når du starter fra ledeteksten, fordi filen baner inneholde mellomrom.)
HyperTerminal kan bli lansert fra ledeteksten eller ved å navigere i menyene.
Under Windows 2000\XP, for eksempel, programvare kan bli funnet på slutten av banen av følgende menyer:
Start -> Programs -> Accessories -> Communications -> HyperTerminal -> HyperTerminal
Meny hierarkiet ledende fra Start menyen til HyperTerminal
Når du starter HyperTerminal flere dialogbokser vises:
HyperTerminal dialoger:
1. Connection Description: Angi vilkårlig navn;
2. Connect To: Velg porten med modem (for eksempel COM1);
3. COM1 Properties: Bit rate for kommunikasjon mellom PC og modem, etc.
Jeg anga en lav bit rate (2400 bits per sekund) mellom PC og modemet rett og slett fordi dette trolig vil fungere for alle modem som ikke er offisielt en antikk.
Det er vanlig for moderne modemer til å kommunisere med PC på priser rundt 115200 biter per sekund, selv når data rate på telefon ledningen er så lav som 9600 bits per sekund.
Følgende bilde viser et enkelt modem ved hjelp HyperTerminal:

Bruke HyperTerminal å prøve å bruke forskjellige modem kommandoer
Dette merknader ovenfor viser en enkel måte å teste et modem med Windows operativsystemet.
Det finnes utallige andre "seriell kommunikasjon" software-programmer for Windows og Linux.
For Linux (eller UNIX varianter) kan du være i stand til å gjøre noe lignende til "echo atm2 > /dev/modem" på en kommandolinje eller fp = fopen( "/dev/modem", "w" ); etterfulgt av utsagn som fprintf( fp, "atm2" ); på en enkel C programmet.
8.6 Kildekoden til å styre et modem
Den C/C++ datamaskin koden vist nedenfor demonstrerer overfører tekst-kommandoer for modem.
Selv om datamaskinen koden vist nedenfor er for Windows operativsystem, ideer blir lett generalisert til andre operativsystemer.
#include < windows.h >
HANDLE hCom = ((HANDLE)(0));
int main()
{
DCB dcb;
unsigned long int n = 0;
char * str = "COM1";
hCom = CreateFile( str, (GENERIC_READ ¦ GENERIC_WRITE),
0, NULL, OPEN_EXISTING, 0, NULL );
GetCommState ( hCom, (&(dcb)) );
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState ( hCom, (&(dcb)) );
WriteFile( hCom, "ATM2\r", strlen("ATM2\r"), (&(n)), 0 );
FlushFileBuffers( hCom );
Sleep(1000);
WriteFile( hCom, "ATH1\r", strlen("ATH1\r"), (&(n)), 0 );
FlushFileBuffers( hCom );
Sleep(1000);
WriteFile( hCom, "ATDT5551212;\r", strlen("ATDT5551212;\r"), (&(n)), 0 );
FlushFileBuffers( hCom );
Sleep(3000);
WriteFile( hCom, "ATH0\r", strlen("ATH0\r"), (&(n)), 0 );
FlushFileBuffers( hCom );
Sleep(1000);
WriteFile( hCom, "ATM0\r", strlen("ATM0\r"), (&(n)), 0 );
FlushFileBuffers( hCom );
Sleep(1000);
CloseHandle( hCom );
return(0);
}
Programvaren ovenfor får tilgang til en seriell kommunikasjon port (dvs. "COM1"), og vi antar en modemet er koblet til denne porten.
Programvaren sender tekst-kommandoer til modemet til å gjøre følgende ting:
1. Slå på den interne høyttaleren ("ATM2\r");
2. Ta telefon leder "av kroken" ("ATH1\r");
3. Tast et telefonnummer ("ATDT5551212;\r");
4. Sett telefon ledningen tilbake "på kroken" ("ATH0\r");
5. Slå av den interne høyttaleren ("ATM0\r").
Eksempelet datamaskin koden ovenfor viser noen av de relevante Windows API funksjoner.
Men eksempelet datamaskin koden er svært fleksible og ikke se etter eventuelle feil.
Den Sleep() funksjon invocations sikre at modemet har tid til å fullføre kommandoer før fremme til neste kommando.
Ideelt sett ville vi sjekke for tekst-svar fra modemet (for eksempel "OK" eller "ERROR").
8.7 Modem kontroll C++ class (Windows operativsystem)
Følgende ZIP arkivfilen inneholder en C++ class egnet for å styre et modem via Windows operativsystemet.
Det er i hovedsak en mer utførlig versjon av demonstrasjon koden presentert ovenfor.
Also, the C++ class omslag modem funksjonalitet på en slik måte at porting til andre plattformer (f.eks Linux) er gjort enklere.
En Microsoft Visual C++ 6.0 prosjektet filen som følger med kildekoden, slik at en kan bygge og kjøre koden umiddelbart som en test.
Men alt du trenger er de to relevante kilde filer ( modem_control.cpp, modem_control.h ) å bruke koden på din egen programvare.
9. Ved hjelp av grensesnitt
9.1 Ved hjelp av grensesnitt med en datamaskin

Konfigurasjonen som brukes i mine eksperimenter
Legg ved en splitter til telefon wire, med en gren som går til et modem, og den andre grenen går til telefon grensesnittet krets.
Koble de to audio ledninger fra krets til "mikrofonen inn" og "høyttaler utgang" på lydkortet eller lyd socketer på personlig datamaskin eller annen lydenhet.
Bruke modemet koden beskrevet andre steder i denne artikkelen kan du bruke modemet til å "plukke opp telefonen" og "knotten telefonnumre."
Deretter datamaskinen kan lagre og spille av lyd i alle ønsket måte.
Modemet kode kan deretter brukes til å "henge opp telefon" for å avslutte samtalen.
Du er ansvarlig for å varsle innringere hvis du har tenkt å spille inn en del av samtalen.
(... Hvis du ikke er regjeringens! Ellers, gjør som de sier, og ikke som de gjør!)
9.2 Bruke grensesnittet med audioutstyr
Legg ved en splitter til telefon wire, med en gren som går til en vanlig telefon, og den andre grenen går til telefon grensesnittet krets.
Koble enten lydsignal fra krets til en mikrofon-inngang til en forsterker eller opptak enheten.
Koble til produksjon av en hvilken som helst enhet som produserer lav-amplitude lyd (for eksempel +/-1.0 Volts) til enten lyd socket på krets.
Ikke koble lyd ut av en stereoforsterker til krets, fordi spenning er svært sannsynlig til å bli svært høye for telefon-lyd.
Stereo forsterkere vanligvis har spesielle utganger (for eksempel RCA utgangene) for sending output audio til andre typer lyd utstyr som godtar lydinngang (for eksempel VCR, tape recorder, TV, osv.); disse lav-volt utganger er egnet for bruk med krets beskrevet i denne artikkelen.
Dermed kan man godta eller sted samtaler ved hjelp av telefon, og ta opp og spille av lyd under bruk av telefon.
Du er ansvarlig for å varsle innringere hvis du har tenkt å spille inn en del av samtalen.
(... Hvis du ikke er regjeringens! Ellers, gjør som de sier, og ikke som de gjør!)
10. Telefon nettverk konsepter
10.1 Study referanser
Driften av telefon-systemet er utenfor omfanget av denne artikkelen.
Sjekk referanser på slutten av denne artikkelen for litt informasjon om emnet.
Men jeg diskutere interessante høydepunkter i denne delen.
10.2 Grunnleggende elektriske aspekter
10.2.1 Telefon eller modem i den "på kroken" staten
Det er to målsettinger som førte til telefon design:
(1) En telefon bør være elektrisk "usynlig" for likestrøm (DC), akkurat som en åpen krets eller en frakobling, når den er i på kroken stat;
(2) The vekselstrøm (AC) toppene brukes til å lage telefoner ring skal være godkjent av telefoner i på kroken staten slik at de vil ringe.
Begge disse målene er oppnådd ved å ha telefon utformet slik at en ikke-polarized kondensator (eller to) er telefon er bare koble til telefon ledningen når de på kroken.
Dermed likespenning (DC) ikke kan passere gjennom, og vekselspenning (AC) ringing signal kan passere gjennom til bells ringing eller krets.
Da jeg målte den DC motstand av en telefon i den kroken staten, det overskredet 40 Megaohms.
Da jeg målte den DC motstand av et modem i den på kroken staten, men også overskredet 40 Megaohms.
Den DC spenning levert av telefon for å oppdage eventuelle motstand på grunn av telefoner som blir off-kroken er noen ganger rapporteres som 48 Volts.
Jeg målte +23.02 Volts (DC), hvor jeg ringte den "røde ledningen" positiv, og den "grønne ledningen" bakken.
Merk at dette DC spenning synker dramatisk når telefonen er tatt av-krok, jeg målt +7.17 Volts (DC) når telefonen er i off-kroken.
Ringevolum spenning er rapportert å være 90 Volts (16-60 Hz vekselstrøm), som kan skremme eller skade folk under visse omstendigheter.
10.2.2 Telefon eller modem i den "av kroken" staten
Telefoner og modem be om bruk av telefon ledningen ved å redusere sine egne DC elektrisk motstand.
Denne tilstanden er oppdaget av telefon-leverandør og wire blir aktiv.
Da jeg målte den DC motstand av en telefon i off-krok staten, var det ca 6.83 Megaohms.
Da jeg målte den DC motstand av et modem i off-krok staten, det var nesten nøyaktig 1.500 Megaohms.
Husk at begge disse enhetene hadde resistances at overskredet 40 Megaohms når de på kroken.
Interessant, denne motstanden er ganske høy, nær et menneske er elektrisk motstand når berøre ledninger med tørre hender.
For eksempel, hvis jeg holder en ledning i min venstre hånd, og en ledning i min høyre hånd, med relativt tørre hender, kan jeg få en motstand så lav som 0.5 Megaohms ved å klemme tett på ledninger.
Klemme veldig lett gir meg en høyere DC motstand, ca 1.5 Megaohms, som er tilsynelatende fortsatt lav nok til å fortelle telefon som jeg en telefon.
(Never touch telefon ledninger!)
Dermed kan man simulere å ta en telefon eller modem off-krok bare ved å innføre en 1 Megaohm motstand over telefon ledningen.
Man kan gjøre dette gjennom en krets med et relé styrt av en port på en datamaskin (RS-232, parallel port, USB, osv.), men et modem er en enkel, billig og fleksibelt alternativ til en tilpasset relé krets.
Som nevnt ovenfor, telefon selskapet holder en likespenning (DC) potential difference (voltage) over telefon ledning til å gjenkjenne telefoner går off-kroken og tilbake til den på kroken.
Jeg målte denne spenning som +23.02 Volts (DC) til på kroken, og +7.17 Volts (DC) for off-kroken.
10.3 Audiosignaler
Med telefonen i off-krok stat, "summetone" synes å ha en vekselspenning (AC) Root-Mean-Square (RMS) spenning av 0.139 Volts AC.
Hele signalet er partisk av en betydelig DC spenning på om lag +5 Volts DC; Jeg målt +7.17 Volts DC under et eksperiment.
Lyd-signaler er svært lite avvik (bare noen få prosent) rundt denne DC spenning.
Dette betyr for eksempel at audiosignaler ikke svinge rundt et null spenning, audiosignaler aldri gjør gjeldende flyt i motsatt retning på telefon ledningen.
Det viser seg at min telefon interface circuit konverterer 0.139 VAC signal til rundt 0.030 VAC (dvs. 30 mV AC) for bruk av audio utstyr (for eksempel mikrofon inngang på et lydkort).
10.4 Audio båndbredde
Den primære funksjon av en telefon systemet er å gi stemme kommunikasjon mellom mennesker.
Følgende diagram viser gjennomsnittlig Spectral energi for noen få sekunder med tale-lyd.

Gjennomsnitt Spectral energi (decibel scale) i flere sekunder av tale over hele hørbar utvalg (20 Hz til 20 kHz). Den vertikale skalaen er i desibel, slik at selv en beskjeden nedgang på denne grafen viser en dramatisk reduksjon i lyd energi.
Den decibel omfanget av figuren over betyr det lavere verdier på figuren er faktisk bestillinger av mindre omfang at høyere verdier på figuren.
Det er åpenbart at en betydelig del av den totale energien i tale Lyden er i intervallet fra 0 Hz til 4000 Hz.
Mennesker kan sikkert forstå tale, selv når alle audio energi utenfor intervallet 300 Hz til 3000 Hz er eliminert.
Men den subjektive effekten av å begrense lyd-energi til denne serien er at stemmene høres dempet og mangel articulation.
Den subtile forskjellen mellom 'F' og 'S' er lett tapt over en telefon.
The telefon systemet i USA har en stemme kanal som bare bærer frekvenser mellom 0 Hz til 4000 Hz.
Men stemmen passband er begrenset til området 300 Hz til 3000 Hz, og det er raskt økende attenuation av stemmen energi utenfor dette båndet.

Voice båndbredde ( 300 Hz - 3000 Hz ) innen Voice Channel ( 0 Hz - 4000 Hz ) av telefon-systemet i USA
Følgende bilde er en Spectral plot av noen sekunder av en typisk registreres telefon samtale.

Spectral plot av noen sekunder av en typisk registreres telefon samtale (mannlig stemme)
Selv om frekvensen oppløsningen er relativt lav, vil effekten av den begrensede båndbredden til telefon-systemet er åpenbar.
For eksperimentelle formål, lyd egenskapene for en telefon systemet kan bli simulert med en grafisk equalizer, eller en Båndpassdesign filter i en lyd redigering programvare pakken, ganske enkelt ved å filtrere ut alt under 350 Hz og alt over 3500 Hz.
10.5 Viktig lyd frekvenser
Den "kontakten toner" brukes til å "ringe tall" og samhandle med automatiserte systemer er kjent som Dual-Tone Multi-Frequency (DTMF) signaler.
Disse tonene kan bli generert ved å legge to sinus bølger sammen med de riktige frekvenser, som vist i følgende matrise av frekvenser.
Merk at minimum hold tid når du sender en DTMF Lyden er 50 milliseconds, og minimum release tid (stille gapet mellom DTMF lyder) er 50 milliseconds.
Bruke forsinkelser av 200 milliseconds vil trolig være pålitelig.
Den "summetone, opptatt signal," og "ring-tilbake-lyder" også har definert frekvens kombinasjoner i USA:
11. Alternativ telefon grensesnittet metoder
Jeg investert $30 og fire timer å bygge krets for å tillate en personlig datamaskin til å sende og motta lyd-signaler via en telefon ledning.
Dette krever en cetain slags kompetanse og utstyr.
Also, med mindre du er villig til å gå inn i virksomheten av produksjon denne krets, kan du ikke lage et produkt (billige stemme-post eller telefonsvarer) som krever dette grensesnittet.
Den enkleste, rimelig alternativ til maskinvaren jeg beskrevet i denne artikkelen er å bruke en programvare metode for å få tilgang til tale evner av en "stemme modem."
Men jeg må si at i forhold til å bruke en tilpasset krets, med en stemme modem i forbindelse med spesiell programvare er trolig bli svært plattform-spesifikk og generelt svært smertefullt å programmere, konfigurere og bruke.
Fordelen (forutsatt at du har en stemme modem) er at dette ville være en ren programvareløsning.
Hvis du bruker en stemme modem og en spesiell programvare, vil systemet kunne være så enkelt som følgende diagram.

System ved hjelp av en indre "stemme modem" og programvare
Avhengig av behovene dine, stemmen data aspekt av stemmen modemet kan være en halv dupleks (dvs. programvare kan "snakke" eller "lytte," men ikke begge samtidig), eller full-duplex.
Halv-dupleks kan legge til noen kompleksitet til å kontrollere programvare fordi du må bestemme når du skal sende og motta lyd.
The voice modem digitizes telefon wire lyd og overfører data over USB eller RS-232 hvis ekstern eller over PCI buss, hvis interne.
12. Microsoft Telephony API (TAPI)
Microsoft operativsystemer har TAPI 2.0 og TAPI 3.0 DLLs.
TAPI 3.0 kan ha mange software problemer, og de fleste som har brukt Microsoft TAPI har bare brukt TAPI 2.0 (som har nesten alle ønsket funksjonalitet) i stedet for TAPI 3.0.
Bruk "wave/in" og "wave/out" enheter for å få tilgang til en stemme modemet audio streamer.
Se TAPI boken i referanser i denne artikkelen. Boka er gammel, men den beskriver TAPI 2.0 i detalj.
13. Java Telephony API
Jeg vet ikke noe om Java Telephony API.
Men jeg anta at det har fordelen av å være uavhengig av operativsystemer, og sannsynligvis har mye enklere abstractions enn Microsoft TAPI!
14. Ulike kommersielle produkter
Næring, rack-montert maskin grensesnitt til flere eksterne telefon ledninger er i stand til å utveksle tale med datamaskiner.
"Voice Over IP" (VoIP) produkter, for eksempel "Internett-telefoner," er nå overalt (for eksempel "Skype)."
Tydelig dataprogram kan enkelt få tilgang til lyd for en slik telefon tilkoblinger.
15. Referanser
Beste, mest omfattende guide til telefon kretser jeg har støtt på Internett:
En annen interessant henvisning:
Munter (og sinnssyke) guide til betal-telefoner rundt om i USA og Canada:
(Se "øverst bidragsytere" av betal-telefonnumre, telefon lyd vareprøver og telefon bilder.)
16. Bøker
16.1 Understanding Telephone Electronics (4th ed)
Understanding Telephone Electronics (4th ed);
Newnes; 2001;
Stephen J. Bigelow, Joseph J. Carr, Steve Winder;
$25.45 US (2001)
Denne boken beskriver mange aspekter av telefon kretser og drift av telefon-nettverket i USA.
Det er mange detaljer om kretser og protokoller; alt fra telefon til telefon nettverket selv.
Utvilsomt teknologien er svært annerledes nå, men denne boken er trolig noe mer praktisk enn en historie bok.
16.2 Windows Telephony Programming: A Developer's Guide to TAPI
Windows Telephony Programming: A Developer's Guide to TAPI;
Addison-Wesley; 1998;
Chris Sells;
$33.95 US (1998)
Den Microsoft Telephony API (TAPI) er unødvendig rotete og forvirrende, og er nå svært foreldet. Boken som er nevnt ovenfor kan være den eneste boka noensinne utgitt om Microsoft Telephony API (TAPI).