# Kommandouppsättning för Hayes-modem

Här är en beskrivning av Hayes kommandouppsättning. De flesta modem följer den här kommandouppsättningen i stor utsträckning. Om du har förlorat handboken för ditt modem, eller aldrig haft en, kan den här referensen vara praktisk. Jag fick till exempel till slut reda på hur jag ska stänga av högtalaren på modemet: `ATM0` -- till sist, tystnad!

Modeminitieringssträngen består av ett antal kommandon. Det förbereder modemet för kommunikation, ställer in funktioner som uppringningsläge, väntetider, upptäckt av upptagetton och många andra inställningar. Nyare modemkommunikationsprogram återställer initieringssträngen åt dig beroende på vilka menyalternativ du väljer, vilka funktioner du aktiverar, etc.

I många år har Hayes-modem varit standard. Medan floran av modemtillverkare har växt, har de flesta hållit sig till Hayes-standarden åtminstone i någon mån. Följande är en lista med en delmängd av Hayes kommandouppsättning (som kallas AT-kommandon). Hayes kommandouppsättning kan delas upp i fyra grupper:

Grundläggande kommandouppsättning

- En stor bokstav följd av en siffra. Till exempel, `M1`.

Utökad kommandouppsättning

- En & (och-tecken) och en stor bokstav följd av en siffra. Det här är en utökning av den grundläggande kommandouppsättningen, till exempel `&M1`. Observera att `M1` skiljer sig från `&M1`.

Tillverkarspecifik kommandouppsättning

- Inleds oftast antingen med ett bakstreck (\), eller ett procenttecken (%), och varierar mycket mellan olika modemtillverkare. Av den anledningen anges bara ett fåtal av dessa kommandon nedan.

Registerkommandon

- `S`r`=`n`` där `r` är numret på registret som ska ändras, och `n` är det nya värdet som tilldelas.

  Ett register är datorspråk för en speciell fysisk plats i minnet. Modem har en liten mängd minne inbyggt. Den här fjärde gruppen av kommandon används för att skriva in värden i ett specifikt register (minnescell). Registret lagrar en speciell variabel (alfanumerisk information) som används av modemet och kommunikationsprogramvaran. Kommandot `S7=60` talar till exempel om för din dator att den ska sätta register nummer 7 till värdet 60.

Även om de flesta kommandon definieras med en kombination av bokstav och siffra (`L0`, `L1` osv.), är användningen av en nolla valfri. I det här exemplet är `L0` samma sak som enbart `L`. Kom ihåg detta när du läser tabellen nedan!

Här är några av de viktigaste tecken som kan finnas i modeminitieringssträngen. De här tecknen ska normalt inte ändras.

`AT`

- Talar om för modemet att modemkommandon kommer efteråt. Det här måste inleda varje rad med kommandon.

`Z`

- Återställer modemet till det förinställda läget

`,` (ett kommatecken)

- gör att programvaran gör en paus på en sekund. Du kan använda mer än ett `,` i rad. Till exempel `,,,,` anger att programvaran ska vänta i fyra sekunder (Pausens längd styrs av värdet i register `S8`).

`^M`

- Skickar det avslutande returtecknet till modemet. Det här är en styrkod som den flesta kommunikationsprogram tolkar som vagnretur.

## Den grundläggande Hayes kommandouppsättningen

I alfabetisk ordning

## Grundläggande Hayes kommandouppsättning

Kommando | Beskrivning | Kommentarer
`A0` eller `A` | Svara på inkommande samtal |
`A/` | Upprepa senaste kommando | Skriv inte `AT` innan. Nyrad avbryter oftast.
`B0` eller `B` | Samtalsförhandling | V32-läge/CCITT-svarssekvens
`B1` | Samtalsförhandling | Bell 212A svarssekvens
`B2` | Samtalsförhandling | Pratig/tyst vid svar
`D` | Uppringning | Ring följande nummer och förhandla i ursprungsläge. `P` Uppringning med pulsval `T` Uppringning med tonval `W` Vänta på andra samtalstonen `,` Vänta den tid som anges i registret `S8` (oftast 2 sekunder) `;` Bli kvar i kommandoläge efter uppringning. `!` Lägg på en halv sekund, som när ett samtal kopplas vidare. `L` Ring upp senaste nummer
`E0` eller `E` | Inget eko | Ekar inte kommandon till datorn
`E1` | Eko | Ekar kommandon till datorn (så att man kan se vad man skriver)
`H0` | Status för luren | Pålagd - lägg på
`H1` | Status för luren | Inte pålagd - luren lyft
`I0` eller `I` | Efterforskning, information eller förfrågan | Det här kommandot är mycket modellberoende. `I0` returnerar ofta ett nummer eller en kod, medan högre siffror ofta ger mycket mer användbar information.
`L0` eller `L` | Ljudstyrka i högtalare. Modem med volymkontrollknappar har inte de här alternativen. | Av eller låg volym
`L1` |  | Låg volym
`L2` |  | Medelhög volym
`L3` |  | Stark eller hög volym
`M0` eller `M` | Högtalaren avstängd | `M3` är också vanlig, men olika för olika märken
`M1` |  | Högtalaren på till fjärrbärvågen har upptäckts (dvs. till det andra modemet hörs)
`M2` |  | Högtalaren är alltid på (dataljud hörs efter CONNECT)
`N0` eller `N` | Förhandlingshastighet | Förhandla bara med hastighet i `S37`
`N1` |  | Förhandla bara med högsta hastighet större än `S37`
`O0` eller `O` | Återgå till uppkopplat läge | Se också `X1` eftersom detektering av samtalston kan vara aktiverad.
`O1` |  | Återgå till uppkopplat läge efter en sekvens för att lära upp tonkontrollen
`Q0` eller `Q1` | Tyst läge | Av - Visar resultatkoder, användaren ser kommandosvar (t.ex. `OK`)
`Q1` | Tyst läge | På - Resultatkoder undertrycks, användaren ser inte svar.
`S`n`?` |  | Fråga efter innehållet i S-register `n`
`S`n`=`r`` | Lagra | Lagra värdet av `r` i S-register `n`
`V0` eller `V` | Pratig | Numeriska resultatkoder
`V1` |  | Resultatkoder på engelska (t.ex. `CONNECT`, `BUSY`, `NO CARRIER` etc.)
`X0` eller `X` | Smartmodem | Hayes Smartmodem 300 resultatkoder
`X1` |  | Lägger oftast till anslutningshastighet till de grundläggande resultatkoderna (t.ex. `CONNECT 1200`)
`X2` |  | Lägger ofta till detektering av samtalston (som förhindrar uppringning i blindo och ibland `AT0`)
`X3` |  | Lägger ofta till detektering av upptagetton
`X4` |  | Lägger ofta till detektering av både samtalston och upptagetton
`Z0` eller `Z` | Återställ | Återställer modemet till den lagrade inställningen. Använd `Z0`, `Z1` etc., för flera profiler. Det här är samma sak som `&F` för fabriksinställningar för modem utan NVRAM (ickeflyktigt minne)

## Den utökade Hayes kommandouppsättningen

Kommandon med och-tecken

## Den utökade Hayes kommandouppsättningen

Kommando | Beskrivning | Kommentarer
`&B0` eller `&B` | Upplärningsparametrar | Stäng av den automatiska upplärningsfunktionen
`&B1` | Upplärningsparametrar | Aktivera den automatiska upplärningsfunktionen
`&B2` | Upplärningsparametrar | Aktivera automatiska upplärning, men koppla ner om ingen förbättring på linjen inträffar styrt av `S7`
`&C0` eller `&C1` | Bärvågsdetektering | Signalen är alltid på
`&C1` | Bärvågsdetektering | Anger fjärrbärvåg (normalt föredraget förval)
`&D0` eller `&D` | Data Terminal Ready (DTR) | Signalen ignoreras (Det här är modemspecifikt, du måste titta i din handbok för information om det här!)
`&D1` | Data Terminal Ready (DTR) | Om DTR går från på till av så går modemet till kommandoläge (enbart vissa modem)
`&D2` | Data Terminal Ready (DTR) | Vissa modem lägger på när DTR går från på till av (Det här är förvalet att föredra)
`&D3` | Data Terminal Ready (DTR) | Lägg på, återställ modemet, och återgå till kommandoläge vid DTR
`&F0` eller `&F` | Fabriksinställningar | Generella förvalda inställningar som passar ihop med Hayes Det här är ofta en bra sak att använda i din initieringssträng, eftersom `&F1`-`&F3` inställningarna kan variera bland modem, och de kan verkligen vara orsaken till anslutningsproblem (Eftersom du aldrig vet säkert vad `&F2` kommandot verkligen ändrar för märket X). Å andra sidan lönar det sig att försöka med övriga alternativ nedan. Många problem som finns kan lösas genom att byta ut en komplicerad initieringssträng med ett enkelt `&F2` eller liknande. Om du håller på att skapa en initieringssträng, är det bäst att börja med ett enkelt `&F`, och inte använda de anpassade sorternas förval.
`&F1` | Fabriksinställningar | Fabriksinställningar anpassade för användare av IBM PC
`&F2` | Fabriksinställningar | Fabriksinställningar anpassade för en Mac med programvaruflödeskontroll
`&F3` | Fabriksinställningar | Fabriksinställningar anpassade för en Mac med programvaruflödeskontroll
`&G0` eller `&G` | Vakttoner | Stäng av vakttoner
`&K0` eller `&K` | Lokal flödeskontroll | Stäng av lokal flödeskontroll
`&K1` | Lokal flödeskontroll | Aktivera RTS/CTS hårdvaruflödeskontroll
`&K2` | Lokal flödeskontroll | Aktivera XON/XOFF lokal flödeskontroll med programvara
`&K3` | Lokal flödeskontroll | Aktivera RTS/CTS hårdvaruflödeskontroll
`&K4` | Lokal flödeskontroll | Aktivera XON/XOFF lokal flödeskontroll med programvara
`&L0` eller `&L` | Uppringningsläge | Välj uppringningsläge
`&M0` eller `&M` | Felkontrolläge | Välj asynkront icke-EC läge (samma som `&Q0`)
`&P0` eller `&P` | Pulsvalshastighet | U.S.A./Kanada pulsvalsuppringning 39% sluten / 61% öppen förhållande
`&P1` | Pulsvalshastighet | Storbrittanien./Hong Kong pulsvalsuppringning 33% sluten / 67% öppen förhållande
`&Q0` eller `&Q` | Felkontrolläge | Asynkront icke-EC läge. Ingen databuffring. ASB avstängd.
`&Q5` | Felkontrolläge | Välj V.42 EC-användning (kräver flödeskontroll)
`&Q6` | Felkontrolläge | Asynkront läge med ASB (kräver flödeskontroll)
`&Q8` | Felkontrolläge | Välj alternativt EC protokoll (MNP)
`&Q9` | Felkontrolläge | Villkorlig datakomprimering: V.42bis = ja, MNP5 = nej.
`&S0` eller `&S` | DSR-åtgärdsval | Alltid på (förvalt)
`&S1` | DSR-åtgärdsval | Följer EIA-specifikationen (Aktiv följer bärvågstonen, tills bärvågen förloras).
`&T0` eller `&T` | Självtest | Modellspecifik självtest för vissa modem
`&U0` eller `&U` | Trelliskod-modulation | Aktivera V.32 TCM
`&U1` | Trelliskod-modulation | Stäng av V.32 TCM
`&V0` eller `&V1` | Visa aktiv | (och ofta lagrad) inställningsprofil (eller `ATI4`)
`&W0` eller `&W` | Lagra profil | I NVRAM (`&W0`, `&W1` etc. för flera profiler) Vissa inställningar kan inte lagras. Dessa visas ofta inte med `&V` eller `ATI4`
`&Y0` eller `&Y` | Välj inställningar som laddades vid uppstart | Ladda profil 0 (förvald)
`&Y1` | Välj inställningar som laddades vid uppstart | Ladda profil 1
`&Z`n`=`x`` | Mjuk återställning och ladda lagrad profil nummer `n` | Observera att alla tecken efter `&Z` på kommandoraden ignoreras

## Bakstreck- och procentkommandon

Kommando | Beskrivning | Kommentarer
`\A0` eller `\A` | Maximalt antal tecken för MNP-blockstorlek | Maximalt 64 tecken
`\A1` | Maximalt antal tecken för MNP-blockstorlek | Maximalt 128 tecken
`\A2` | Maximalt antal tecken för MNP-blockstorlek | Maximalt 192 tecken
`\A3` | Maximalt antal tecken för MNP-blockstorlek | Maximalt 256 tecken
`%C0` eller `%C` | Aktivera eller stäng av datakomprimering | Avstängd
`%C1` | Aktivera eller stäng av datakomprimering | MNP5 aktiverad
`%C2` | Aktivera eller stäng av datakomprimering | V.42bis (BTLZ) aktiverad
`%C3` | Aktivera eller stäng av datakomprimering | MNP5 & V.42bis (BTLZ) aktiverade
`%D0` eller `%D` | Datakomprimering | 512 BLTZ katalogstorlek
`%D1` | Datakomprimering | 1024 BLTZ katalogstorlek
`%D2` | Datakomprimering | 2048 BLTZ katalogstorlek
`%D3` | Datakomprimering | 4096 BLTZ katalogstorlek
`%E0` eller `%E1` | Metod för att avbryta | Avbryt avstängd
`%E1` | Metod för att avbryta | `+++AT`-metoden (förvald)
`%E2` | Metod för att avbryta | `Break`, `AT`-metoden
`%E3` | Metod för att avbryta | Båda metoderna aktiverade
`%E4` | Metod för att avbryta | Stäng av `OK` för `+++`
`%E5` | Metod för att avbryta | Aktivera `OK` för `+++`
`\J0` eller `\J` | DTE automatisk hastighetsjustering | Avstängd
`\J1` | DTE automatisk hastighetsjustering | DTE-hastigheten justeras för att passa bärvågsfrekvensen.
`\N0` eller `\N` | Anslutningstyp | Normal anslutning (se nedan för definitioner)
`\N1` | Anslutningstyp | Direktanslutning
`\N2` | Anslutningstyp | MNP automatiskt tillförlitlig anslutning
`\N3` | Anslutningstyp | Automatiskt tillförlitlig anslutning
`\N4` | Anslutningstyp | V.42bis tillförlitlig länk med fasdetektering
`\N5` | Anslutningstyp | V.42bis automatiskt tillförlitlig länk med fasdetektering
`\N6` | Anslutningstyp | V.42 tillförlitlig länk med fasdetektering
`\N7` | Anslutningstyp | V.42 automatiskt tillförlitlig länk med fasdetektering

En direktanslutning är en enkel rakt genomgående anslutning utan feldetektering eller datakompression. I det här fallet måste hastigheterna från dator till modem och från modem till modem vara identiska.

En normal anslutning använder flödeskontroll (antingen i programvara eller hårdvara) för att buffra data som skickas eller tas emot, så att modemet kan skicka data i en annan hastighet än datorn verkligen skickar eller tar emot det med. En dator kan till exempel skicka data med 57 kbps, men med kompression skickar modemet egentligen bara 28,8 kbps. Det här är läget som används av de flesta modem.

En tillförlitlig anslutning är en sorts normal anslutning, men om datakomprimering eller felkorrigering av någon anledning inte kan upprättas eller underhållas, så kopplas förbindelsen ner (I huvudsak garanterar ett sådant modem att alla förbindelser är tillförlitliga, eftersom det lägger på om förbindelsen inte är det).

På samma sätt, är en automatiskt tillförlitlig länk nästan samma sak, utom att modemet försöker förhandla om förbindelsen för att upprätta en tillförlitlig förbindelse. Återigen, detta är det läge som de flesta modem använder.

## S-register

Register | Intervall | Förval | Funktion
`S0` | 0-255 ringsignaler | 1-2 | Svara på ringsignal. Svara inte om 0
`S1` | 0-255 ringsignaler | 0 | Om `S0` är större än 0 räknar det här registret inkommande ringsignaler.
`S2` | 0-127 ASCII | 43 + | Tecken för avbryt till kommandoläge
`S2` | >127 |  | Avbryt inte
`S3` | 0-127 ASCII | 13 CR | Returtecken
`S4` | 0-127 ASCII | 10 LF | Nyradstecken
`S5` | 0-32, 127 ASCII | 8 BS | Backstegstecken
`S6` | 2-255 sekunder | 2 | Väntetid på samtalston (uppringning i blindo, se X`n`)
`S7` | 1-255 sekunder | 30-60 | Väntetid för fjärrbärvåg
`S8` | 0-255 sekunder | 2 | Paustiden för kommatecken som används vid uppringning
`S9` | 1-255 1/10-dels sekund | 6 | Tid för upptäckt av bärvåg som krävs för att känna igen den
`S10` | 1-255 1/10-dels sekund | 7-14 | Tid mellan förlust av bärvåg och att lägga på
`S11` | 50-255 millisekunder | 70-95 | Längd och mellanrum för toner med tonval
`S12` | 0-255 1/50-dels sekunder | 50 | Vakttid för paus omkring `+++` kommandosekvensen
`S36` | Reservalternativ när en länk med felrättning slutar fungera: 0 - Koppla ner 3 - Upprätta en direktförbindelse 3 - Upprätta en normal förbindelse 4 - Upprätta en MNP-anslutning om möjligt, annars koppla ner 5 - Upprätta en MNP-anslutning om möjligt, annars en direktanslutning 7 - Upprätta en MNP-anslutning om möjligt, annars en normal anslutning | 7 | Hantering av förhandlingsfel
`S37` | 1 = 300 bps 5 = 1200 bps 6 = 2400 bps 7 = 1200/75 bps (v.23-läge) 8 = 4800 bps 9 = 9600 bps 10 = 12000 bps 11 = 14400 bps 12 = 7200 bps | 0 | Förhandlingshastighet (inledande förhandling)

Många modem har dussintal, till och med hundratals, S-register, men bara det första dussinet är någorlunda standardiserade. De ändras med kommandon som `ATS`n`=`N``, och visas med `ATS`n`?` (t.ex. ``AT` `S10``=70` `S1?`` skulle tala om för modemet att inte lägga på förrän efter sju sekunder om det inte hör ett modem som svarar, och returnera antal gånger som telefonen ringde senast.)