Rozkazy Hayes'a i programowanie modemu
Wstęp
Modemy są to urządzenia elektroniczne służące do podłączenia komputera do linii telefonicznej. Ich zadaniem jest przy wysyłaniu danych zamiana sygnału cyfrowego na analogowy (MODulacja), a przy odbieraniu odwrotny proces czyli (DEModulacja). Stąd właśnie jego nazwa MODEM.
Ze względu na budowę modemy możemy podzielić na wewnętrzne i zewnętrzne. Wewnętrzne są to karty ze złączami ISA lub PCI i instalowane są wewnątrz obudowy komputera. Modemy zewnetrzne są zamknięte w oddzielnych obudowach, posiadają swój własny zasilacz i podłączane są do portu szeregowego. Dodatkowo modele zewnętrzne posiadają na przednim panelu szereg diód elektroluminescencyjnych (LED) sygnalizujących aktualny stan modemu. Najnowsze modele modemów wyposażone w funkcję VOICE (prowadzenia rozmów telefonicznych) posiadają gniazdka mikrofonu i słuchawek przez które można prowadzić rozmowę a także odsłuchiwać komunikaty nagrane w pamięci modemu, który pracuje jako automatyczna sekretarka.
Modemy są sterowane rozkazami Hayes'a. Wszystkie rozkazy muszą być poprzedzone prefiksem AT i zakończone przez <CR> (naciśnięcie klawisza ENTER).
Wszystkie znaki są "echowane" , co oznacza, iż modem wysyła do komputera echo każdego znaku. Rozkazy mogą być łączone w ciąg rozkazowy (liczący maksymalnie 40 znakówwyłączając spację i prefiks). Dowolny rozkaz można przerwać przez naciśnięcie klawiszy Ctrl-Z. We wszystkich rozkazach zawierających po literze, cyfry: 0, 1, 2, itd., cyfrę 0 można pominąć, a znaczenie tego znaku pozostaje bez zmian (przykład: rozkaz AT E jest równoważny rozkazowi AT E0).
Na wszystkie prawidłowo napisane i wykonane rozkazy modem odpowiada "OK". Modem może udzielać odpowiedzi w postaci słownej lub liczbowej (patrz tabela), przy czym po włączeniu ustawiony jest na udzielanie odpowiedzi słownej.
Odpowiedź słowna |
Kod cyfrowy |
Znaczenie |
OK. |
0 |
Modem wykonał rozkaz |
CONNECT |
1 |
Modem połączył się i ustalił szybkość transmisji na 300 bit/s |
RING |
2 |
Modem wykrył sygnał dzwonienia |
NO CARRIER |
3 |
Modem utracił falę nośną lub nie otrzymał odpowiedzi od modemu oddalonego |
ERROR |
4 |
Błedny rozkaz |
CONNECT 1200 |
5 |
Modem połączył się i ustalił szybkość transmisji na 1200 bit/s |
NO DIALTONE |
6 |
Brak sygnału zgłoszenia centrali |
BUSY |
7 |
Numer zajęty |
NO ANSWER |
8 |
Odpowiedź ta wysyłana jest tylko wówczas gdy użyty został parametr @ w sekwencji wybierającej i jeśli warunek (5 sekundowej ciszy) nie został spełniony |
CONNECT 2400 |
10 |
Modem połączył się i ustalił szybkość 2400 bit/s |
Rozkazy Hayes'a
A - Uaktywnia funkcję natychmiastowej odpowiedzi na rozmowę przychodzącą
B0 - Powoduje użycie połączenia V22 o szybkości 1200bps
B1 - Powoduje użycie połączenia Bell 212A o szybkości 1200bps
Dn - Powoduje wybranie numeru telefonicznego n
+L - Ponownie wybiera poprzedni numer
+P - Włącza wybieranie pulsowe
+T - Włącza wybieranie tonowe
+R - Polecenie akceptowane, ale nie wykonywane
+S=(0-3) - Powoduje wybieranie jednego z czterech numerów zapisanych za pomocą polecenia &Zn [np. DT4232985, DPS=0]
Dodatkowo można używać następujących symboli:
! - Zwalnia linię telefoniczną (czas określony w S29)
W - Uaktywnia oczekiwanie na sygnał zgłoszenia
@ - Oczekiwanie na conajmniej 5 sekundowy stan braku aktywności
& - Uaktywnia oczekiwanie na sygnał zgłoszenia karty kredytowej
, - Wprowadza przerwy podczas wybierania numeru, o czasie określonym w rejestrze S8 (domyślnie 2s)
; - Wraca do trybu poleceń po wybraniu numeru numeru (znak wstawiony po nummerze telefonicznym)
^ - Włącza ton wybierania (tylko dane)
E0 - Wyłącza echo znaków poleceń
E1 - Włącza echo znaków poleceń
H0 - Przerywa połączenie telefoniczne
H1 - Zajmuje linie telefoniczną
I0 - Zwraca kod produktu (np.: 33600)
I1 - Zwraca sumę kontrolną pamięci ROM
I2 - Oblicza sumę kontrolną i porównuje ją z wartością umieszczoną w pamięci ROM, po czym zwraca komunikat OK lub ERROR
I3 - Zwraca kod nowelizacji oprogramowania układowego
I4 - Zwraca indentyfikator modemu
I5 - Zwraca kod kraju
I6 - Zwraca kod modelu i kod nowelizacji
L1 - Ustawia małą siłę głośnika
L2 - Ustawia średnią siłę głośnika
L3 - Ustawia największą siłę głośnika
M0 - Głośnik zawsze wyłączony
M1 - Głośnik włączony do momentu wykrycia nośnej
M2 - Głośnik zawsze włączony
M3 - Głośniik wyłączony podczas wybierania numeru, a następnie włączony do momentu pojawienia się nośnej
N0 - Wyłącza tryb automatycznego ustalania modulacji - szybkość transmisji jest określona przez zawartość rejestru S37 (równoznacznie z ustawieniem parametru 0 dla +MS )
N1 - Włącza tryb automatycznego ustalania modulacji (równoznacznie z ustawieniem parametru 1 dla +MS )
O0 - Powoduje przejście do trybu danych
O1 - Powoduje przejście do trybu danych i dopasowanie modemu do lini telefonicznej
P - Włącza wybieranie pulsowe do czasu wprowadzenia T
Q0 - Włącza przesyłanie odpowiedzi do komputera (DTE)
Q1 - Wyłącza przesyłanie odpowiedzi do komputera
Sn - Określa rejestr S o numerze n
Sn=v - Umieszcza wartość v w rejestrze n
Sn? - Zwraca wartość rejestru o numerze n
T - Włącza wybieranie tonowe do czasu wprowadzenia polecenia P
V0 - Powoduje przesyłanie odpowiedzi liczbowych (krótkich)
V1 - Powoduje przesyłanie odpowiedzi słownych (długich)
W0 - Informuje tylko o szybkości DTE (między komputerem a modemem)
W1 - Informuje o szybkości DCE (między modemami), protokole korekcji błędów i szybkości DTE
W2 - Informuje tylko o szybkości DCE (między modemami)
X0 - Powoduje przesyłanie komunikatów OK, CONNECT, RING, NO CARRIER, ERROR, NO ANSWER
X1 - Powoduje przesyłanie komunikatów X0 i komunikatu CONNECT o szybkości połączenia
X2 - Powoduje przesyłanie komunikatów X1 i komunikatu NO DIALTONE (brak sygnału zgłoszenia)
X3 - Powoduje przesyłanie komunikatów X1 i komunikatu BUSY (zajęty)
X4 - Powoduje przesyłanie wszystkich komunikatów
Y0 - Wyłącza opcję długiego oczekiwania przed rozłączeniem połączenia
Y1 - Włącza opcję długiego oczekiwania przed rozłączeniem połączenia przy korekcji błędów powoduje rozłączenie po czasie 1,6 sekundy od zaniku sygnału, przy braku korekcji błędów oczekuje 4 sekundy przed rozłączeniem połączenia
Z0 - Powoduje wyzerowanie modemu z załadowaniem konfiguracji z profilu 0(&W0)
Z1 - Powoduje wyzerowanie modemu z załadowaniem konfiguracji z profilu 1(&W1)
&C0 - Ustawia stan aktywny RLSD (DCD)
&C1 - Sygnał RLSD (DCD) zmienia stan w zależności od obecności lub braku zdalnej nośnej
&D0 - Przyjmowany jest stan aktywny sygnału gotowości terminala DTR. Pozwala na współpracę z urządzeniami nie wykorzystującymi sygnału DTR
&D1 - Modem interpretuje znak DTR jako otrzymanie sekwęcji wyjścia - następuje przejście do trybu poleceń bez rozłączenia połączenia
&D2 - Zanik sygnału DTR powoduje rozłączenie połączenia przez modem. Funkcja odpowiedzi automatycznej jest zablokowana
&D3 - Zanik sygnału DTR powoduje logiczne wyzerowanie modemu; parametr polecenia &Y określa, który profil zostanie załadowany
&F - Powoduje załadowanie ustawień fabrycznych
&G0 - Wyłącza ton kontrolny
&G1 - Wyłącza ton kontrolny
&G2 - Włącza ton kontrolny o częstotliwości 1800 Hz
&K0 - Wyłącza kontrolę transmisji
&K3 - Włącza kontrolę transmisji RTS/CTS (sprzętową)
&K4 - Włącza kontrolę transmisji XON/XOFF (programową)
&K5 - Włącza kontrolę transmisji transparenty XON/XOFF
&K6 - Włącza kontrolę transmisji RTS/CTS, jak i XON/XOFF
&M0 - Wybiera tryb asynchroniczny (&Q0)
&P0 - Ustawia stosunek "puls/przerywa" wybierania numeru telefonicznego na 39/61 przy 10 pps
&P1 - Polecenie akceptowane, ale nie wykonywane
&P2 - Polecenie akceptowane, ale nie wykonywane
&P3 - Polecenie akceptowane, ale nie wykonywane
&Q0 - Wybiera bezpośredni tryb asynchroniczny (bez korekcji błędów oraz buforowania komputer-modem)
&Q5 - Modem negocjuje typ połączenia z korekcją błędów
&Q6 - Wybiera tryb asynchroniczny z buforowaniem komputer-modem (bez korekcji błędów)
&S0 - Uaktywnia na stałe DSR (gotowość wysłąnia danych)
&S1 - Sygnał DSR staje się aktywny po wykryciu tonu odpowiedzi,natomiast zanika po utracie nośnej
&T0 - Kończy rozpoczęty test
&T1 - Uruchamia lokalny test analog loopback
&T2 - Zwraca błąd
&T3 - Uruchamia lokalny test digital loopback
&T4 - Odpowiada nażądanie przeprowadzenia testu digital loopback przez modem zdalny
&T5 - Powoduje zignorowanie żądania przeprowadzenia cyfrowego testu zwrotnego przez modem zdalny
&T6 - Żąda przeprowadzzenia testu digital loopback bez wykonania autotestu
&T7 - To samo co w wypadku &T6, ale wraz z autotestem
&T8 - Uruchamia lokalny test analog loopback razem z autotestem
&V - Powoduje wyświetlenie bieżącego (aktywnego) profilu oraz list i numerów telefonicznych zapisanych w pamięci modemu
&W0 - Zapamiętuje bieżącą konfigurację jako profil 0
&W1 - Zapamiętuje bieżącą konfigurację jako profil 1
&Y0 - Po włączeniu zasilania modem używa profilu 0 (&W0)
&Y1 - Po włączeniu zasilania modem używa profilu 1 (&W1)
&Zn=Dx - Zachowuje numer telefoniczny x (max.35-cyfrowy) w nieulotnej pamięci faxmodemu n (0-3)
%C0 - Wyłącza kompresję danych
%C1 - Włącza kompresję MNP5
%C2 - Włącza kompresję V.42bis
%C3 - Włącza kompresję MNP5, jak i V.42bis
%E0 - Wyłącza śledzenie jakości połączenia telefonicznego oraz automatyczne renegocjowanie szybkości transmisji
%E1 - Włącza śledzenie jakości połączenia telefonicznego oraz automatyczne renegocjowanie szybkości transmisji
%E2 - Włącza śledzenie jakości połączenia telefonicznego oraz płynne dopasowanie szybkości transmisji do zmiennych warunków połączenia
%E3 - Włącza śledzenie jakości połączenia telefonicznego, automatyczne renegocjowanie szybkości transmisji oraz funkcję szybkiego zerwania połączenia
%L - Informuje o poziomie odbieranego sygnału (w -dBm)
%Q - Informuje o jakości sygnału w lini telefonicznej
\A0 - Ustawia maksymalny rozmiar bloku MNP na 64 znaki
\A1 - Ustawia maksymalny rozmiar bloku MNP na 128 znaki
\A2 - Ustawia maksymalny rozmiar bloku MNP na 192 znaki
\A3 - Ustawia maksymalny rozmiar bloku MNP na 256 znaki
\Bn - W trybie bez korekcji błędów transmituje sygnał przerwania do modemu zdalnego w modułach po 100ms (liczba modułów n jest zawarta w zakresie 1-9 przy czym 3 jest wartością domyślną)
\G0 - Wyłącza kontrolę transmisji XON/XOFF (między midemami)
\G1 - Uruchamia kontrolę transmisji XON/XOFF (między midemami)
\Kn - Definiuje typ przerwania
\N0 - Normalna transmisja danych z buforowaniem komputer-modem, brak korekcji błędów
\N1 - Wybiera interfejs szeregowy, to samo co w przypadku &Q0
\N2 - Wybiera tryb transmisji z korekcjią błędów (LAP-M, MNP)
\N3 - Automatycznie wybiera tryb transmisji (LAP-M, MNP, bez korekcji błędów)
\N4 - Aktywna jedynie korekcja błędów LAP-M
\N5 - Aktywna jedynie korekcja błędów MNP
\V=0 - Wyłącza jednowierszowy komunikat opisujący połączenie
\V=1 - Uaktywnia jednowierszowy komunikat opisujący połączenie, o następującym formacie:
CONNECT <szybkość DTE>></Modulacja></Protokół></Kompresja>< Szybkość transmisji>
$$R0 - Wyłącza funkcję rozróżnialnego sygnału dzwonienia
$$R2 - Uaktywnia funkcję rozróżnialnego sygnału dzwonienia sekwencje są następujące:
A dzwonienie 2s, przerwa 4s
B dzwonienie 0.8s, przerwa 0.4s, dzwonienie 0.8s, przerwa 0.4s
D dzwonienie 0.4s, przerwa 0.2s, dzwonienie 0.2s, przerwa 0.2s, dzwonienie 0.8s, przerwa 0.4s
lub
D dzwonienie 0.3s, przerwa 0.2s, dzwonienie 1s, przerwa 0.2s, dzwonienie 0.3s, przerwa 4s
-K0 - Wyłącza konwersję z V.42 LAP-M na MNP10
-K1 - Włącza konwersję z V.42 LAP-M na MNP10
-K2 - Włącza konwersję z V.42 LAP-M na MNP10; blokuje uruchamianie dodatkowych funkcji MNP w czasie rozpoznawania trybu odpowiedzi LAP-M V.42
-Q0 - Wyłącza przełączanie na szybkość 2400bps w trybie MNP10=0
-Q1 - Włącza przełączanie na szybkość 2400bps w trybie MNP10=0
-SDR=0 - Wyłącza funkcję rozróżnialnego sygnału dzwonienia
-SDR=1 - Uaktywnia typ 1
-SDR=2 - Uaktywnia typ 2
-SDR=3 - Uaktywnia typ 1, 2
-SDR=4 - Uaktywnia typ 3
-SDR=5 - Uaktywnia typ 1, 3
-SDR=6 - Uaktywnia typ 2, 3
-SDR=7 - Uaktywnia typ 1, 2, 3
typ 1: dzwonienie 2s, przerwa 4s
typ 2: dzwonienie 0.8s, przerwa 0.4s, dzwonienie 0.8s, przerwa 4s
typ 3: dzwonienie 0.8s, przerwa 0.4s, dzwonienie 0.4s, przerwa 0.2s, dzwonienie 0.4s, przerwa 0.2s, dzwonienie 0.8s, przerwa 4s
-SEC=0 - Wyłącza korekcję MNP10-EC
-SEC=1 - Włącza korekcję MNP10-EC
:E0 - Wyłącza korektor V.32
:E1 - Włącza korektor V.32
+MS=<mod>[,[<tryb_auto>],<min_szybkość>],<max_szybkość>
tryb_auto
0 - Wyłącza tryb automatycznego ustalania modulacji (równoznacznie z wykonaniem polecenia N0)
1 - Uaktywnia tryb automatycznego ustalania modulacji (równoznacznie z wykonaniem polecenia N1)
min_szybkość - (patrz tabela poniżej) domyślna 300bps
max_szybkość - (patrz tabela poniżej) domyślna 33600bps
np.:
+MS=11,1,300,33600
+MS=,0,,28800
mod |
rodzaj |
szybkość |
0 |
V.21 |
300 |
1 |
V.22 |
1200 |
2 |
V.22bis |
2400, 1200 |
3 |
V.23 |
1200 |
9 |
V.32 |
9600, 4800 |
10 |
V.32bis |
14400, 12000, 9600, 7200, 4800 |
11 |
V.34 |
33600, 31200, 28800, 26400, 24000, 19200, 16800, 14400, 12000, 9600, 7200, 4800, 2400 |
64 |
Bell 103 |
300 |
69 |
Bell 212 |
1200 |
74 |
V.FC |
28800, 26400, 24000, 21600, 19200, 16800, 14400 |
Programowanie modemu
Oto kilka przykładów posługiwania się rozkazami Hayes'a podczas konfigurowania modemu:
Jeśli zamierzamy zapamiętać cztery najczęściej używane numery telefonów w pamięci NOVRAM, musimy użyć następujących rozkazów:
AT &Z0=P0W7163371 <CR>
AT &Z1=P6254781 <CR>
AT &Z2=P6320124 <CR>
AT &Z3=P0W7164224 <CR>
Teraz wybranie abonenta o numerze telefonicznym 6254781 nastąpi po użyciu poniższego rozkazu:
AT DS=1 <CR>
Włączenie funkcji "automatycznego odzewu" np. po dwóch dzwonkach, nastąpi po załadowaniu do rejestru S0, cyfry 2 rozkazem AT S0=2. Fakt tem można zapamiętać w pamięci NVRAM na pozycji 0 ciągiem rozkazowym:
AT S0=2 &W <CR>
Generalnie wszelkie zmiany zawartości rejestrów programowych mogą być zapamiętane jako własna konfiguracja modemu w pamięci NOVRAM, na jednej z czterech pozycji (w naszym przypadku niech to będzie pozycja 1 w pamięci NOVRAM):
AT &W1 <CR>
Załadowanie do rejestrów własnej konfiguracji z pamięci NOVRAM nastąpi po użyciu rozkazu:
AT Z1 <CR>
Zawsze możemy powrócić do konfiguracji fabrycznej modemu, zapisanej przez producenta w pamięci EPROM na pozycji np. 1, za pomoca rozkazu:
AT &F1 <CR>
Chcąc połączyć się np. z numerem dostępowym do internetu realizowanym przez TPSA 0202122 mając możliwość tonowego wybierania numerów (DTMF) realizujemy przez rozkaz:
AT DT0W202122 <CR>
Zestawienie połączenia na łączu trwałym może być zrealizowane poprzez ciąg rozkazowy:
AT &L1 D <CR>
Słowniczek
CTS - (Clear To Send) sprzętowy sygnał informujacy o przepełnieniu bufora modemu
DSR - (Data Send Ready) sygnał gotowości modemu do wysyłania danych przez sieć telefoniczną
DTR - (Data Terminal Ready) sygnał gotowości terminala
LAP-M - (Link Access Protocol for Modem) typ sprzętowej korekcji błędów
MNP - typ sprzętowej korekcji błędów zawierający protokoły klas: MNP1, MNP2, MNP3 i MNP4
MNP1 - asynchroniczny, zorientowany znakowo protokół sprzętowej korekcji błędów o efektywności 70%
MNP2 - asynchroniczny, zorientowany bitowo protokół sprzętowej korekcji błędów o efektywności około 84%
MNP3 - synchroniczny, zorientowany bitowo protokół sprzętowej korekcji błędów o efektywności około 108%
MNP4 - synchroniczny, zorientowany bitowo protokół sprzętowej korekcji błędów, potrafiący dynamicznie zmieniać długość wysyłanych bloków danych w zależniści od stanu połączenia, a także wyposażony w optymalizację fazową danych potrafiącą zwiększyć efektywość protokołu do 120%
MNP5 - protokół sprzętowej kompresji danych potrafiący dwukrotnie pakowac dane, lecz nie potrafiacy wykryć czy przesyłany plik jest skompresowany
MNP10 - najnowszy sprzętowy protokół korekcji błędów, pozwalający realizować połączenia dotychczas niemożliwe; został opracowany w zasadzie dla telefonii komórkowej chociaż może być przydatny również dla łączy kablowych o niskiej jakości; jego podstawowe cechy to:
negocjowanie i zwiększanie prędkości transmisji
wymuszanie połączenia
dynamiczne zmiany prędkości
dopasowanie poziomu sygnału nadawczego
NOVRAM - nieulotna pamięć (EEPROM) modemu w której zapisywane są konfiguracje rejestrów sprzętowych modemu.
<>RLSD - (???) sygnał obecności częstotliwości nośnej linii telefonicznej
RTS - (Ready To Send) sprzętowy sygnał gotowości modemu do wysyłania do niego danych z komputera
V.42 - grupa zaleceń Międzynarodowego Komitetu Konsultacyjnego ds. Telefonii i Telegrafii (CCITT) definiująca parametry i procedury modemu określające korekcję błędów
V.42bis - protokół sprzętowej kompresji danych potrafiący czterokrotnie pakować dane dodatkowo wykrywający czy dany plik jest juz spakowany, aby nie pakować go powtórnie ponieważ moze to spowodować, że plik stanie się dłuższy niż przed kompresją
XON - programowy sygnał gotowości modemu do wysyłania do niego danych z komputera (bitowo - 00010001)
XOFF - programowy sygnał informujacy o przepełnieniu bufora modemu (bitowo - 00010011)