# De Hayes commandoset voor een modem

Hier is een beschrijving van de Hayes commandoset. De meeste modems volgen grotendeels deze set commando's. Als u uw modemhandleiding of er nooit een had, dan komt deze misschien van pas. Ik vond bijvoorbeeld eindelijk hoe de speaker van het modem uit te zetten: `ATM0` -- Eindelijk: Stilte!

De tekenreeks voor het initialiseren van het modem bestaat uit een aantal commando's. Het bereidt het modem voor op communiceren, het instellen op functies zoals kiesmodus, wachten, detectie van het bezetsignaal en vele andere instellingen. Nieuwere programma's voor modemcommunicatie stelt de tekenreeks voor u in aan de hand van de menu-opties die u selecteert, welke functie u selecteert, &etc;

Vele jaren lang zijn Hayes modems de standaard geweest. Naarmate het veld van modemfabrikanten is gegroeid, hebben de meesten ten minste losjes de Hayes standaard gevolgd. Het volgende is een gedeeltelijke lijst uit de Hayes commandoset. (genaamd de AT commando's). De Hayes commandoset kan worden opgedeeld in vier groepen:

Basis commandoset

- Een hoofdletter gevolgd door een cijfer. Bijvoorbeeld, `M1`.

Uitgebreide commandoset

- Een & (ampersand) en een hoofdletter gevolgd door een cijfer. Dit is een uitbreiding van de basis commandoset. Bijvoorbeeld, `&M1`. Opmerking: `M1` verschilt van `&M1`.

Particuliere commandoset

- Deze start gebruikelijk met ofwel een backslash (\) of een procentteken (%), deze commando's verschillen veel tussen modemfabrikanten. Daarom zijn slechts enkele van deze commando's hieronder vermeld.

Register-commando's

- `S`r`=`n`` waar `r` het nummer van het te wijzigen register is en `n` is de nieuwe waarde die wordt toegekend.

  Een register is computerterm voor een specifieke fysieke locatie in geheugen. Modems hebben een kleine hoeveelheid geheugen. Deze vierde set commando's wordt gebruikt om waarden in een specifiek register (geheugenlocatie) te zetten. Het register slaat een speciale variabele (alfanumerieke informatie) op die door het modem en communicatisoftware wordt gebruikt. Bijvoorbeeld, `S7=60` instrueert uw computer om Register #7 op de waarde 60 in te stellen.

Hoewel de meeste commando's gedefinieerd zijn door een lettercijfercombinatie (`L0`, `L1` &etc;), is het gebruik van een nul optioneel. In dit voorbeeld, `L0` is hetzelfde als gewoon een `L`. Onthoud dat bij het lezen van de onderstaande tabel!

Hier zijn enkele van de belangrijkste tekens die voor kunnen komen in de tekenreeks voor initialisatie van het modem. Deze tekens zouden normaal niet moeten worden gewijzigd.

`AT`

- Vertelt het modem dat er modemcommando's volgen. Hiermee moet elke regel met commando's beginnen.

`Z`

- Zet het modem terug op zijn standaard status

`,` (een komma)

- zorgt er voor dat uw software een seconde pauzeert. U kunt meer dan één `,` op rij gebruiken. Bijvoorbeeld, `,,,,` vertelt de software om vier seconden te pauzeren. (De duur van de pauze wordt bepaald door de instelling van register `S8`.)

`^M`

- Stuurt het eindeteken 'Carriage Return' naar het modem. Dit is een besturingscode die de meeste communicatiesoftware vertaalt als Carriage Return

## De basis Hayes commandoset

In alfabetische volgorde:

## Basis Hayes commandoset

Commando | Beschrijving | Commentaar
`A0` of `A` | Binnenkomende oproep beantwoorden |
`A/` | Laatste commando herhalen | Zet er geen `AT` voor. Enter breekt gewoonlijk af.
`B0` of `B` | Onderhandeling over de oproep | V32 Mode/CCITT Answer Seq.
`B1` | Onderhandeling over de oproep | Bell 212A Answer Seq.
`B2` | Onderhandeling over de oproep | Verbose/Stil bij antwoord
`D` | Kiezen | Bel het volgende nummer en doe 'handshake in originate mode'. `P` Met pulsen bellen `T` Met tonen bellen `W` Wacht op de tweede kiestoon `,` Wacht volgens de gespecificeerd tijd in register `S8` (gebruikelijk 2 seconden) `;` Blijf in commandomodus na kiezen. `!` Voor een halve seconde ophangen, zoals bij de transfer van een gesprek. `L` Laatste nummer bellen
`E0` of `E` | Geen echo | Stuurt geen echo van commando's naar de computer
`E1` | Echo | Stuurt echo naar de computer (zodat men kan zien wat er getypt wordt)
`H0` | Status van de haak | Op de haak - Ophangen
`H1` | Status van de haak | Van de haak - hoorn opgenomen
`I0` of `I` | Afvragen, informatie of ondervragen | Deze opdracht is erg model-afhankelijk. `I0` geeft meestal een getal of een code, terwijl hogere getallen meestal meer bruikbare informatie geven.
`L0` of `L` | Volume van de luidspreker. Modems met volumebesturingsknoppen zullen deze opties niet bezitten. | Uit of laag volume
`L1` |  | Laag volume
`L2` |  | Middel volume
`L3` |  | Luide of hoog volume
`M0` of `M` | Luidspreker uit | `M3` is ook gebruikelijk, maar is verschillend bij veel merken
`M1` |  | Luidspreker aan totdat remote carrier is gedetecteerd (&ie; totdat de andere modem hoorbaar is)
`M2` |  | Luidspreker is altijd aan (data geluiden zijn hoorbaar na CONNECT)
`N0` of `N` | Snelheid Handshake | Handshake alleen op de snelheid in `S37`
`N1` |  | Handshake op hoogste snelheid die groter is dan `S37`
`O0` of `O` | Return Online | Zie ook `X1` als kiestoondetectie ingeschakeld is.
`O1` |  | Opnieuw synchroniseren en omschakelen naar Online
`Q0` of `Q1` | Stille Mode | OFF - Toont de resultaat result codes, gebruiker ziet commando responses (⪚ `OK`)
`Q1` | Stille Mode | On - Result codes zijn onderdrukt, gebruiker ziet geen responses.
`S`n`?` |  | De inhoud van S-register `n` uitvragen
`S`n`=`r`` | Opslaan | Slaat de waarde van `r` in S-register `n` op
`V0` of `V` | Verbose | Numerieke resultaat codes
`V1` |  | Engelse resultaat codes (⪚ `CONNECT`, `BUSY`, `NO CARRIER` &etc;)
`X0` of `X` | Smartmodem | Resultaat codes compatibel met Hayes Smartmodem 300
`X1` |  | Voegt meestal verbindingssnelheid aan de basic result codes toe (⪚ `CONNECT 1200`)
`X2` |  | Voegt meestal kiestoondetectie toe (voorkomt blindkiezen, en voorkomt soms `AT0`)
`X3` |  | Voegt meestal detectie van bezetsignaal toe
`X4` |  | Voegt meestal zowel detectie van bezetsignaal en kiestoondetectie toe
`Z0` of `Z` | Resetten | Reset modem naar opgeslagen configuratie. Gebruik `Z0`, `Z1` &etc; bij meerdere profielen. Dit is hetzelfde als `&F` voor de fabriek-standaard bij modems zonder NVRAM (non-volatile memory)

## De Uitgebreide Hayes commandoset

Ampersand Commando´s

## De Uitgebreide Hayes commandoset

Commando | Beschrijving | Commentaar
`&B0` of `&B` | Retrain Parameters | Auto-retrain functie uitschakelen
`&B1` | Retrain Parameters | Auto-retrain functie inschakelen
`&B2` | Retrain Parameters | Schakel auto-retrain in, maar verbreek de verbinding als er geen verbetering van de lijn is tijdens de periode opgegeven met `S7`
`&C0` of `&C1` | Carrier gedetecteerd | Signaal altijd aan
`&C1` | Carrier gedetecteerd | Remote carrier aanwezig (meestal voorkeur standaard)
`&D0` of `&D` | Data Terminal Ready (DTR) | Signaal negeren (Dit is modem afhankelijk, u moet hiervoor uw handleiding bestuderen voor informatie hierover!)
`&D1` | Data Terminal Ready (DTR) | Als DTR gaat van AAN naar UIT, dan gaat de modem in de command mode (Alleen sommige modems)
`&D2` | Data Terminal Ready (DTR) | Sommige modems hangen op als DTR gaat van AAN naar UIT (Dit is de gebruikelijke voorkeurs standaard)
`&D3` | Data Terminal Ready (DTR) | Ophangen, de modem te resetten en terug te keren naar de command mode via DTR
`&F0` of `&F` | Fabriek standaard | Algemene Hayes-compatibel standaard. Dit is meestal een goed idee om in uw init string te zetten, omdat de `&F1`-`&F3` instellingen tussen modems erg kan variëren, en ze waarschijnlijk de bron van verbinding-problemen kunnen zijn. (Omdat u nooit precies weet wat Merk X's `&F2` exact wijzigt.) Aan de andere kant, kan het van pas komen om de andere mogelijkheden hieronder uit te proberen; de problemen van veel mensen kunnen worden opgelost door een gecompliceerde init string te vervangen door een eenvoudig `&F2` of vergelijkbaar. Maar, als u een init string construeert, dan is het verstandig om met een eenvoudig `&F` te beginnen, en niet de aangepaste vorm van de standaard.
`&F1` | Fabriek standaarden | Fabriek standaard toegespitst op een IBM PC compatibel gebruiker
`&F2` | Fabriek standaarden | Fabriek standaard voor een Mac w/software handshaking
`&F3` | Fabriek standaarden | Fabriek standaard voor een Mac w/hardware handshaking
`&G0` of `&G` | Bewaking tonen | Bewaking tonen uitschakelen
`&K0` of `&K` | Lokale Flow-controle | Lokale Flow-controle uitschakelen
`&K1` | Lokale Flow-controle | RTS/CTS hardware lokale flow control inschakelen
`&K2` | Lokale Flow-controle | XON/XOFF software lokale flow controle inschakelen
`&K3` | Lokale Flow-controle | RTS/CTS hardware lokale flow control inschakelen
`&K4` | Lokale Flow-controle | XON/XOFF software lokale flow controle inschakelen
`&L0` of `&L` | Belmodus | Belmodus selecteren
`&M0` of `&M` | Foutcontrol modus | Asynchrone non-EC modus (dezelfde als `&Q0`) selecteren
`&P0` of `&P` | Kiestoon verhouding | U.S./Canada kiestoon 39% maak / 61% verbreek verhouding
`&P1` | Kiestoon verhouding | U.K./Hong Kong kiestoon 33% maak / 67% verbreek verhouding
`&Q0` of `&Q` | Foutcontrol modus | Asynchroon zonder EC. Geen data buffering. ASB uitgeschakeld.
`&Q5` | Foutcontrol modus | Selecteert V.42 EC werking (vereist flow control)
`&Q6` | Foutcontrol modus | Asynchrone modus met ASB (vereist flow control)
`&Q8` | Foutcontrol modus | Alternatief EC protocol (MNP) selecteren
`&Q9` | Foutcontrol modus | Conditionele data compressie: V.42bis = yes, MNP5 = no.
`&S0` of `&S` | Selecteer DSR actie | Altijd aan (standaard)
`&S1` | Selecteer DSR actie | Volgt de EIA specificatie (Volgt actief de draaggolf totdat deze verloren gaat.)
`&T0` of `&T` | Self test | Model specifieke self test bij sommige modems
`&U0` of `&U` | Trellis code modulatie | V.32 TCM inschakelen
`&U1` | Trellis code modulatie | V.32 TCM uitschakelen
`&V0` of `&V1` | Weergave actieve | (en vaak opgeslagen) configuratie profiel instellingen (of `ATI4`)
`&W0` of `&W` | Profiel opslaan | In NVRAM (`&W0`, `&W1` enz. bij meerdere profielen) Sommige instellingen kunnen niet worden opgeslagen. Deze zijn meestal bij `&V` or `ATI4` niet zichtbaar
`&Y0` of `&Y` | Selecteer de bij het opstarten geladen configuratie | Profiel 0 laden (standaard)
`&Y1` | Selecteer de bij het opstarten geladen configuratie | Profiel 1 laden
`&Z`n`=`x`` | Zachte reset en opgeslagen profiel nummer `n` laden | Merk op dat alle items na `&Z` op de commandoregel worden genegeerd

## Backslash en procent commando´s

Commando | Beschrijving | Commentaar
`\A0` of `\A` | Maximum karakter MNP blok formaat | Maximum 64 karakters
`\A1` | Maximum karakter MNP blok formaat | Maximum 128 karakters
`\A2` | Maximum karakter MNP blok formaat | Maximum 192 karakters
`\A3` | Maximum karakter MNP blok formaat | Maximum 256 karakters
`%C0` of `%C` | Data Compressie INschakelen/UITschakelen | Uitgeschakeld
`%C1` | Data Compressie INschakelen/UITschakelen | MNP5 ingeschakeld
`%C2` | Data Compressie INschakelen/UITschakelen | V.42bis (BTLZ) Ingeschakeld
`%C3` | Data Compressie INschakelen/UITschakelen | MNP5 & V.42bis (BTLZ) Ingeschakeld
`%D0` of `%D` | Data-compressie | 512 BLTZ dictionary grootte
`%D1` | Data-compressie | 1024 BLTZ dictionary grootte
`%D2` | Data-compressie | 2048 BLTZ dictionary grootte
`%D3` | Data-compressie | 4096 BLTZ dictionary grootte
`%E0` of `%E1` | Escape methode | ESCAPE UITGESCHAKELD
`%E1` | Escape methode | `+++AT` methode (standaard)
`%E2` | Escape methode | `Break` `AT` methode
`%E3` | Escape methode | Beide methoden ingeschakeld
`%E4` | Escape methode | `OK` voor `+++` uitschakelen
`%E5` | Escape methode | `OK` voor `+++` inschakelen
`\J0` of `\J` | DTE Data-snelheid automatisch aanpassen | Uitgeschakeld
`\J1` | DTE Data-snelheid automatisch aanpassen | DTE rate word aan de draaggolf aangepast.
`\N0` of `\N` | Verbindingstype | Normale verbinding (zie hieronder voor definitie´s)
`\N1` | Verbindingstype | Directe verbinding
`\N2` | Verbindingstype | MNP Auto-reliable verbinding
`\N3` | Verbindingstype | Auto-reliable verbinding
`\N4` | Verbindingstype | V.42bis betrouwbare verbinding met fase detectie
`\N5` | Verbindingstype | V.42bis automatisch betrouwbare verbinding met fase detectie
`\N6` | Verbindingstype | V.42 betrouwbare verbinding met fase detectie
`\N7` | Verbindingstype | V.42 automatische betrouwbare verbinding met fase detectie

Een directe verbinding is een simpele verbinding zonder foutcontrole of data compressie. In dat geval moeten de snelheden voor de computer-naar-modem en modem-naar-modem hetzelfde zijn.

Een normale verbinding gebruikt flow control (softwarematig of hardwarematig) om de verstuurde of ontvangen data te bufferen, zodat de modem data op een andere snelheid kan versturen dan de computer het verstuurt of ontvangt. Bijvoorbeeld, een computer verstuurt de data met compressie op 57kbps, en de modem verstuurt het met alleen maar 28.8kbps. Deze modus is bij de meeste modems in gebruik.

Een betrouwbare verbinding is een normaal soort verbinding; als, voor wat reden dan ook, data compressie of foutcorrectie niet kan worden uitgevoerd of toegepast, dan zal de verbinding ophangen. (De modem zorgt ervoor dat de verbinding betrouwbaar is, het verbreekt de verbinding als dat niet lukt.)

Een automatische betrouwbare verbinding is net zo iets, behalve dat de modem zal proberen de verbinding aan te passen zodat de verbinding weer betrouwbaar wordt. Dit is dan ook een methode die bij de meeste modems in gebruik is.

## S-Registers

## S Registers

Registreren | Bereik | Standaard | Functie
`S0` | 0-255 rings | 1-2 | Antwoord na aantal keren dat de bel overgaat. Antwoord niet bij 0
`S1` | 0-255 rings | 0 | Als `S0` groter is dan 0 dan telt dit register het aantal keren dat de bel overgaat.
`S2` | 0-127 ASCII | 43 + | Teken om af te breken
`S2` | >127 |  | geen ESC
`S3` | 0-127 ASCII | 13 CR | Teken voor enter
`S4` | 0-127 ASCII | 10 LF | Teken voor nieuwe regel
`S5` | 0-32, 127 ASCII | 8 BS | Backspace karakter
`S6` | 2-255 seconden | 2 | Wachttijd voor kiestoon (voor blind kiezen, zie X`n`)
`S7` | 1-255 seconden | 30-60 | Wachttijd voor remote carrier
`S8` | 0-255 seconden | 2 | Komma pauze gebruikt bij inbellen
`S9` | 1-255 1/10e seconde | 6 | Benodigde tijd voor herkennen van draaggolf
`S10` | 1-255 1/10e seconde | 7-14 | Tijd tussen verlies van draaggolf en ophangen
`S11` | 50-255 milliseconden | 70-95 | Duur en scheiding van tonen bij toon kiezen
`S12` | 0-255 1/50ste secondes | 50 | Wachttijd voor pause rond `+++` commando opdracht
`S36` | Terugval methodes als foutcorrectie mislukt: 0 - Verbinding verbreken 1 - Zet directe verbinding op 3 - Zet normale verbinding op 4 - Zet indien mogelijk een MNP verbinding op, verbreek anders verbinding 5 - Zet indien mogelijk een MNP verbinding op, anders directe verbinding. 7 - Zet indien mogelijk een MNP verbinding op, anders normale verbinding | 7 | Behandeling onderhandelingsfout
`S37` | 1 = 300 bps 5 = 1200 bps 6 = 2400 bps 7 = 1200/75 bps (v.23 mode) 8 = 4800 bps 9 = 9600 bps 10 = 12000 bps 11 = 14400 bps 12 = 7200 bps | 0 | Snelheid voor onderhandelen (Initial handshake)

Veel modems hebben tientallen, zelfs honderden S registers, maar alleen de eerste tiental zijn ongeveer standaard. U kunt ze wijzigen met een commando zoals `ATS`n`=`N``, en opgevraagd met `ATS`n`?` (⪚ ``AT` `S10``=70` `S1?`` geeft aan de modem opdracht om gedurende zeven seconde niet op te hangen als het andere modem niet antwoord, en het aantal keren dat de laatste keer de bel is overgegaan te melden.)