AT komandas

AT komandas, AT komandu kopa (angļu: AT command set), jeb Heisa (Hayes) komandas, ir īpaša komandu valoda  telesakaru iekārtu vadībai un datu nosūtīšanai. Heisa komandu kopas vairākās variācijās izmanto lielākā daļa iezvanmodemu, faksa aparātu, GSM telefonu un modemu.
Komandu kopu sākotnēji Hayes Smartmodem 300 bodu modemam 1981. gadā izstrādāja ASV inženieris Deniss Heiss, lai no datora modemam varētu nodot gan komandas gan datus vienā seriālā kanālā. Vēlāk citiem iekārtu modeļiem tika izstrādāti komandu kopas paplašinājumi. Arī citi ražotāji ieviesa jaunas komandas un mainīja sintaksi.
AT komandas darbojas pieprasījuma / atbildes režīmā. Dators modemam nosūta komandu rindu, kas var sastāvēt no vienas vai vairākām komandām un modifikatoriem. Modems atbild ar komandas izpildes rezultātu.

Priekšvēsture

Senākie modemi spēja tikai nosūtīt un saņemt datus. Lai izveidotu savienojumu, bija nepieciešama sekundāra ierīce, piemēram, numuru sastādītājs. Dažreiz savienojumi tika izveidoti manuāli, izsaucot atbilstošo tālruņa numuru, un modems tika ieslēgts, tiklīdz savienojums bija nodibināts. Tā nebija problēma tajā laikā, kad datorus apkalpoja kvalificēti tehniķi, un atsevišķa iezvanītāja izmaksas bija nenozīmīgas salīdzinājumā ar termināļu, modemu un lieldatoru izmaksām.
1970. gados tirgū ienāca mazie datori, kļuva populāra ziņojuma dēļa sistēma (BBS), un cilvēki vēlējās sazināties savā starpā ar datoru starpniecību. Līdz ar to bija vajadzīgi zemu izmaksu viegli lietojami modemi. Ideālā gadījumā šiem modemiem vajadzētu būt iespējai izsaukt vēlamos tālruņa numurus, neiejaucoties lietotājam vai ārējam zvanītājam.
Tajā laikā datora savienošanai ar modemu plaši izmantoja seriālo datu pārraides standartu RS232. Tas sākotnēji tika projektēts tā, ka varētu pa atsevišķu komandu kanālu nosūtīt vadības komandas pievienotajam modemam. Diemžēl septiņdesmito gadu mājas datoros izmantotajās RS232 lētajās realizācijās šis sekundārais sakaru kanāls netika ieviests. Tādēļ bija jāizstrādā metode, lai lokālo modemu varētu vadīt un nosūtīt datus, nemainot esošo datu kanālu fizisko konstrukciju.

Heisa risinājums

Deniss Heiss 1977. gadā atrada risinājumu. Viņš izstrādāja modemu Smartmodem, kas savienojumam ar datoru izmantoja standarta RS232, vienā sakaru kanālā pārsūtot gan vadības komandas, gan datus. Modems patstāvīgi varēja pārslēgties starp diviem režīmiem: datu režīms (modems visus no datora saņemtos datus pa telefona līniju sūta uz attālināto modemu) un komandu režīms (no datora saņemtie dati tiek interpretēti kā komandas, kas jāizpilda lokālajam modemam).
Pārslēgšanās no komandu režīma datu sūtīšanas režīmā bija vienkārša, ar noteiktu komandu. Savukārt, lai pārslēgtos no datu režīma uz komandu režīmu, datu plūsmā bija jānodod atsoļa sekvence — trīs plusu zīmju (+++) virkne, kam sekoja apmēram sekundes pauze. Varēja gadīties, ka +++ ir pārsūtāmo datu sastāvdaļa. Tādējādi, ja šīs pauzes laikā datu saņemšana no datora turpinājās, modems datu plūsmu turpināja sūtīt uz citu modemu. Pārslēgšanās uz komandu režīmu notika automātiski, pēc datu plūsmas beigām, vai nosūtot tiešsaistes komandu O.
Tā kā Heisa komandu risinājums bija vienkāršs, un tā realizācija neprasīja esošās aparatūras un saslēgumu pārveidi, tas drīz tika ieviests arī citu ražotāju modemos. Modemu funkcionalitāte un sarežģītība laika gaitā palielinājās, tāpat arī AT komandu valoda, un drīz katrs modemu ražotājs ieviesa savu dialektu.

Atsoļa sekvence bez laika intervāla

1985. gadā Heiss saņēma patentu par "modemu ar uzlabotu atsoļa sekvenci ar aizsargintervāla mehānismu.
Lai izvairītos no Heisa patenta licences (1 USD lētajiem modemiem bija nozīmīga izmaksa), 1990. gadu sākumā daži ražotāji ieviesa atsoļa sekvenci bez laika intervāla (Time Independent Escape Sequence, TIES), pauzes vietā izmantojot virkni +++AT[kāda komanda]<cr>. Tam gan bija nozīmīgs trūkums, jo modems pārtrauca savienojumu, ja datu plūsmā gadījās baitu secību +++ATH0. Šāda baitu secība varēja būt nejauša vai ļaunprātīgi ievietota.

AT prefikss

Heisa risinājums paredzēja automātisku bodu ātruma noteikšanu, sūtot bitu virknes 100 0001 (ASCII kodējumā tā atbilst burtam "A") un 101 0100 (burts "T"). RS-232 interfeiss sūtīja datus ar visnenozīmīgāko bitu pirmo, ievērojot modeli 8-N-1 (astoņi datu biti, nav paritātes bita, viens stop bits). Tādējādi sinhronizācijas vārds bija 11000001011001010101. Modems analizēja no datora saņemto impulsu platumu, noteica bodu ātrumu un veica rakstzīmju garuma un paritātes iestatījumus.
Tā kā katra komanda sākās ar "AT", Heisa definētā vadības valoda drīz kļuva pazīstama kā AT komandu kopa. 
Mūsdienās tikai retas ierīces izmanto sākuma "A" automātiskai bodu ātruma noteikšanai, bet citādi fakts, ka komandas sākas ar "AT", būtībā ir vēsturiska īpatnība.