⑴ AT命令的AT命令集
AT 即Attention,AT指令集是從終端設備(Terminal Equipment,TE)或數據終端設備(Data Terminal Equipment,DTE)向終端適配器(Terminal Adapter, TA)或數據電路終端設備(Data Circuit Terminal Equipment,DCE)發送的。通過TA,TE發送AT指令來控制移動台(Mobile Station,MS)的功能,與GSM 網路業務進行交互。用戶可以通過AT指令進行呼叫、簡訊、電話本、數據業務、傳真等方面的控制。90年代初,AT指令僅被用於Modem操作。沒有控制行動電話文本消息的先例,只開發了一種叫SMS BlockMode的協議,通過終端設備(TE)或電腦來完全控制。由Hayes公司發明,已成為事實上的標准並被所有數據機製造商採用的一個數據機命令語言。每條命令以字母AT開頭,因而得名。AT後跟字母和數字表明具體的功能。 SMS。之後,主要的行動電話生產廠商諾基亞、愛立信、摩托羅拉和HP共同為GSM研製了一整套AT指令,其中就包括對SMS的控制。AT指令在此基礎上演化並被加入GSM07.05標准以及的GSM07.07標准,完全標准化和比較健全的標准。如:對SMS的控制共有3種實現途徑:最初的BlockMode;基於AT指令的TextMode;基於AT指令的PDUMode。到PDUMode已經取代BlockMode,後者逐漸淡出。GSM模塊與計算機之間的通信協議是一些AT指令集,AT指令是以AT作首,字元結束的字元串,AT指令的響應數據包在中。每個指令執行成功與否都有相應的返回。其他的一些非預期的信息(如有人撥號進來、線路無信號等),模塊將有對應的一些信息提示,接收端可做相應的處理。 互聯網剛出現時,人們都是用modem來進行連接。modem通常是在電話線兩端,由一個modem開始連接並結束操作。無論modem是「發起」還是「應答」模式,數據傳輸的兩套頻率之間的手動切換,一般由發出呼叫的用戶將其modem切換為「發起」,然後手動撥打號碼。當遠程modem應答時,應已經設置為「應答」模式,電話聽筒被關閉,通信一直持續到呼叫方手動斷開。
當需要自動化時,通常只需要在應答方 - 例如,一家銀行可能需要從支行號碼呼入以結束日常處理。為了填補這一角色,某些modem包含了當其在應答模式時的自動摘機功能,其他用戶手動斷開時的清線功能。需要進行自動呼出撥號的情況相當少,並且是通過一個單獨的外圍設備—一個「撥號器」來處理的。這通常插是在電腦上的一個單獨的輸入/輸出埠(通常是一個RS-232埠)並需要modem本身單獨編程。
這種操作方法在20世紀60年代和70年代初工作的很好,當時modem通常被用來連接終端設備如電腦(撥出)或智能電腦主機(應答)。然而,20世紀70年代的微型計算機革命導致了低成本modem的引入並使這個半專用的點對點連接的想法已不在適用。成千上萬的潛在用戶可能要撥打任意的其他數千名用戶,並且在當時唯一的解決辦法就是讓用戶手動撥號。
計算機行業需要一種方式來告訴modem通過軟體來撥什麼號。較早的單獨撥號器有這個功能,但它只能使用一個單獨的埠,而微型計算機可能沒有。另一種解決辦法是使用一個單獨的一套「命令引腳」專門用於發送和接收命令,另一套可以使用一個信號引腳指示modem應該將收到的數據解釋為命令。這些都在RS-232標准有硬體支持。然而,微機的RS-232埠的許多實現都是非常基本的,並且為了節約成本而消除了很多引腳。 賀氏通訊在1981年推出了其通過沒有修改而重新使用現有的數據引腳的Smartmodem解決方案。 而且,modem本身可以在兩種模式之間進行切換:
1,modem發送數據到遠程modem時的數據模式。(在數據模式中,modem把它從計算機接收的任何東西作為數據通過電話線發送出去)。
2,數據被解釋為命令而給本地modem的命令模式(本地modem應執行的命令)。
從數據模式切換到命令模式,會話發出3個加號的轉義序列字元串(「+++」)並跟隨一秒鍾的暫停。轉義序列結束後的暫停是必須的,以減少入站信號所造成的問題:如果三個加號接收後的1秒內接收到任何其他數據,它就不是轉義序列並將作為數據發送。要切換回去,他們發送聯機命令,O。在實際使用中許多命令在完成後自動切換到在線模式,而對於用戶來說很少使用在線命令。
為了避免賀氏的專利授權,一些廠商實施的轉義序列沒有時間間隔保護(TIES)。這里有一個主要的影響是拒絕服務安全,它會導致計算機嘗試在數據模式中發送位元組序列「+++ATH0」時使modem掛斷連接。對於通過這種modem連接到Internet的任何計算機,這可以很容易地被通過發送包含「+++ATH0」有效載荷序列的死亡請求ping所利用。計算機操作系統會自動嘗試用相同的有效載荷回復發件人,modem會將ICMP數據包的有效載荷數據解釋作為賀氏命令而立即將自身從互聯網斷開。同樣的錯誤也可能會觸發,如,計算機用戶試圖發送包含上述字元串的電子郵件。 賀氏命令集包括各種電話線操作命令,如撥號和掛斷。它還包括用來modem設置的各種控制,包括一組寄存器指令集,允許用戶在原來的賀氏modem上直接設置各種內存位置。該指令集的其中相當一部分在很大程度上幾乎被所有早期300波特modem製造商一字不差的進行了復制,包括寄存器的含義。
1200和2400波特的擴展需要一套小的新命令集,它們中一部分用(「&」)前綴來表示支持新的功能。賀氏自身被迫在它們的1200後不久迅速推出一個2400波特模型,而作為一個省時的辦法,該命令集跟1200是相同的。基本上是偶然的,這使得現有的1200波特率modem用戶使用新的賀氏2400模型時無需改變他們的軟體,這強化了賀氏版本命令的使用。數年後,TIA/EIA將2400波特率命令集成為一個正式的標准,標題為:數據傳輸系統和設備-串列非同步自動撥號和控制,TIA / EIA-602。
然而賀氏移動通信在高速應用或壓縮的使用上進展緩慢,而其它三家公司則開始領先 - Microcom,U.S. Robotics 和 Telebit。這三個公司使用自己的擴展命令集,而不是等待賀氏。到了90年代初期,共有四個主要命令集在使用,以及基於其中之一的一些版本。20世紀90年代初,隨著14.4和28.8 kbit/s的的廣泛引入事情再次變得簡單。慢慢地,基於原賀氏命令集使用「&」擴展的命令集開始流行,然後變得普遍。只有另外一個命令集一直流行:US Robotics modem命令集。 以下文字列出了部分賀氏命令集(也叫AT命令:AT 意思是注意)。
賀氏命令可分為四組:
1.基本命令集—一個大寫字母緊跟一個數字。如:M1。
2.擴展命令集—一個「&」(and符號)和大寫字母緊跟一個數字。它是基本命令集的擴展。如:&M1。注意:M1和&M1是不同的。
3.專有命令集—通常使用一個反斜杠(「」)或者是百分號(「%」)開頭;這些命令在各modem廠商間差異很大。
4.寄存器命令—Sr=n。這里r是要改變的寄存器編號,n是要賦予的新值。
寄存器代表內存中的指定位置。Modem在主板上有一些少量的內存。第四組命令的目的是為了輸入值到一個特定的寄存器(內存位置)。該寄存器將存儲一個modem和通信軟體可以利用的特定變數(字母數字信息)。例如,S7 = 60指示計算機「設置寄存器#7的值為60」。
雖然指令集語法的大多數命令由字母數字組合(L0,L1等)定義,零則是可選使用的。本例中,「L0」等同於普通的「L」。閱讀下表時要記住這一點。
數據模式下,轉義序列可將modem返回到命令模式。正常的轉義序列是三個加號(「+++」),並為將它跟可能的真實數據消除歧義:它的前面必須有一個停頓,加號之間沒有任何停頓,並緊跟一個暫停;默認情況下,「暫停」是一秒鍾,「不停頓」則是更少。 以下語法定義: <CR>回車符,是在命令行和結果代碼終止符,其值是0到255之間的十進制ASCII碼,在參數S3中指定。默認值為13。 <LF>換行字元,是公認的換行符的字元。它的值介於十進制ASCII碼的0到255之間,在參數S4中指定。默認值為10。除非使用詳細結果代碼(使用V1選項)否則換行符在回車符之後輸出,如果使用了數字格式結果代碼(使用V0選項),它不會出現在結果代碼中。 <...>尖括弧內名稱是語法元素。尖括弧不會出現在命令行中。 [...]方括弧內是命令的可選子參數或AT信息響應的可選部分。括弧本身不會出現在命令行中。當讀取AT命令時沒有給出子參數,新值是其先前的值。在AT命令中不存儲任何子參數的值,所以沒有讀命令,也即所謂的輸入動作命令,輸入應在子參數建議的默認設置的基礎上進行。 modem初始化
其他用法,見向量初始化。
一個字元串可以包含放在一起的許多賀氏命令,從而使modem以最佳方式准備撥號或接聽,如AT&F&D2&C1S0 = 0X4。這就是所謂的初始化字元串。V.250規范要求所有的DCE接受至少40個字元的級聯命令主體(在「AT」之後)。 以前的賀氏命令集在基於modem的通信中所代表了巨大的飛躍,隨著時間的推移,許多問題開始出現,但幾乎沒有是因為貨氏本身引起的: 由於缺乏書面的標准,其他的modem製造商抄襲了外部可見的命令和(大致的)基本命令。這導致了modem在如何改變狀態時的各種各樣的微妙的差別,以及他們如何處理錯誤條件,掛起和超時。 每個製造商傾向於增加新的命令來處理新出現的需求,經常與其他modem不兼容。
例如,設置硬體或軟體握手往往需要為不同的modem設置許多不同命令。這破壞了基本「AT」命令集的普遍方便性。 許多「賀氏兼容」modem具有它們不兼容的嚴重怪癖。例如,許多modem接收到「AT Z」重置命令後需要幾秒鍾的暫停。一些modem需要命令之間有空格,有的則不需要。有些會因為自己的「意志」改變波特率而幫倒忙,這將使得電腦不知道如何處理傳入位。 由於這些結果,最終許多通信方案不得不放棄了任何能跟所有的「賀氏兼容」modem交談的想法,而不得不嘗試使用程序從響應來確定modem的類型,或提供給用戶一些辦法,使他們能夠輸入隨便什麼特殊命令以強迫他們的特殊modem正確行事。 下面的命令是幾乎所有的modem支持的AT命令集,無論是舊新。 命令 描述 備注 A0 or A 回應呼入呼叫 A/ 重復最後命令 不要使用AT前綴,不要跟回車符。回車符通常表示中止。 D 撥號 撥後面的號碼並握手
P—脈沖撥號
T—撥號音撥號
W—等待下一個撥號音。
R—撥號後的反響回應模式。
@—為二次撥號等待30秒。
,—在S8寄存器暫停指定時間(通常2秒)。
;—撥號後保持命令模式。
!- 閃光燈開關掛機(掛斷了半秒,再轉接電話。)
L—撥最後一次號碼 E0 或 E 無回顯 不會回顯命令到計算機。 E1 回顯 回顯命令道計算機(這樣一個人可以看到另一個人的輸入)。 H0 掛鉤狀態 掛鉤中掛斷電話,結束過程中的任何呼叫。 H1 掛鉤狀態 掛鉤結束摘起電話線(通常會聽到撥號音)。 I0 toI9 調查、信息或訊問 該命令返回有關模型的信息,比如它的固件或品牌名稱。每一個數字(0〜9,有時是10或以上)返回一行modem的具體信息,或如果沒有定義返回「ERROR」。今天,Windows使用即插即用檢測專用modem的類型。 L0 orLn (n=1 to 3) 揚聲器音量。只被某些modem支持,通常擴展支持。modem很少有揚聲器,或者有物理音量控制,或者聲音輸出是通過音效卡的不支持此命令。 關閉或降低音量 M0 or M 喇叭關閉,撥號時無聲 M3也很常見,但很多品牌不同 M1 遠程載波檢測揚聲器(即直到被其他modem聽到) M2 揚聲器始終打開(連接後聽到數據聲音) O 返回在線 由「+++」轉義代碼被中斷後返回modem到正常連接狀態。 Q0 or Q 安靜模式 關閉 - 顯示結果碼,用戶會看到命令響應(如OK) Q1 安靜模式 打開 - 結果代碼被抑制,用戶不會看到響應。 Sn 選擇當前寄存器
需要注意的是Sn,?和=r實際上是三個單獨的命令,並且可以在單獨的AT命令中給予。 選擇寄存器n作為當前寄存器 Sn? 選擇寄存器n作為當前寄存器,並查詢它的值。使用?對自己查詢而不管最近選擇了那個寄存器。 Sn=r 選擇寄存器n作為當前寄存器,並在其中存儲r。使用=?對自己存儲而不管最近選擇了那個寄存器。 V0 or V 數字結果代碼 V1 詳細 英文結果代碼(例如CONNECT BUSY,NO CARRIER等) X0 or X 賀氏Smartmodem 300兼容的結果代碼 X1 Smartmodem 通常增加連接速度到基本結果代碼(如CONNECT 1200) X2 通常添加了撥號音檢測(防止盲目撥號,有時防止ATO) X3 通常增加忙音檢測。 X4 通常添加忙音和撥號音檢測 Z0 or Z 復位modem存儲的配置。對於多個配置文件使用Z0,Z1etc。這是跟沒有NVRAM的modem(非易失性存儲器)一樣的出場配置&F。 重置 註:一個命令字元串由一個CR(
)字元決定 寄存器 描述 范圍 預設值 S0 自動應答前的振鈴次數 0-0從不 0 S1 振鈴計數器 0-255振鈴次數 0 S2 轉義字元 0–255, 十進制ASCII碼 43 (+) S3 負載返回字元 0-127, 十進制ASCII碼 13 (負載返回) S4 換行符 0-127, 十進制ASCII碼 10 (換行) S5 退格符 0-32, 十進制ASCII碼 8(退格) S6 盲撥前的等待時間 2–255秒 2 S7 撥號後等待負載 1–255秒 50 S8 停頓時間(撥號等待) 0–255秒 2 S9 負載檢測回應時間 1–255個十分之一秒 6(0.6秒) S10 負載丟失和掛斷之間的延遲 1–255個十分之一秒 14(1.4秒) S11 DTMF撥號持續 50–255毫秒 95毫秒 S12 取消代碼守衛時間 0–255 個五十分之一秒 50(1秒) S18 測試定時器 0–255秒 0秒 S25 DTR延遲 0–255(同步模式時為秒,其他模式是百分之一秒) 5 S26 RTS到CTS延遲間隔 0–255個百分之一秒 1個百分之一秒 S30 不活動連接定時器 0–255個十分之一秒 0(禁止) S37 所需的電信線路速度 0–10
命令選項:
· 0嘗試自動連接模式
· 1嘗試使用300bit/s的連接速度
· 2嘗試使用300bit/s的連接速度
· 3嘗試使用300bit/s的連接速度
· 5嘗試使用1200bit/s的連接速度
· 6嘗試使用2400bit/s的連接速度
· 7嘗試使用V.23 75/1200模式
· 8嘗試使用9600bit/s的連接速度
· 9嘗試使用12000bit/s的連接速度
· 10嘗試使用14400bit/s的連接速度 S38 強制斷開連接前的延遲 0–255秒 20秒 ETSI GSM 07.07(3GPP TS 27.007)規定的AT命令式控制GSM手機或modem。ETSI GSM 07.05(3GPP TS 27.005)規定的AT命令式管理GSM的SMS簡訊功能。
GSM的命令示例: 命令 描述 AT+CPIN=1234 輸入PIN 碼 AT+CPWD=SC,old,new 將「舊的」PIN碼「新的」 AT+CLCK=SC,0,1234 刪除PIN碼 AT&V 狀態 ATI 狀態(製造商,型號,版本,IMEI功能) AT+COPS=? 列出可用的網路0-Unknown/2-Current/3-Forbidden,LONGNAME,SHORTNAME,數值-ID,「ACT」 AT+CSQ 得到的信號強度。應答+CSQ:<rssi(more=better)>,<ber, less=better> ATD*99# 撥號接入點 AT+CGDCONT=1,IP,access.point.name 定義PDP上下文 GSM/3G medom通常支持ETSI GSM 07.07/3GPP TS 27.007 AT指令集擴展,盡管有很多命令執行有所不同。
大多數USB modem廠商,如華為,Sierra Wireless,Option,還定義了專有無線模式選擇擴展(GSM/3G偏好)或類似擴展。因為性能的原因,某些最新的高速modem提供了一個虛擬乙太網介面而不是使用PPP連接,(PPP連接只在計算機和modem之間而不通過網路使用)。該設置需要供應商的AT命令擴展。有時候這些特定擴展規范是公開,而其他時候供應商則要求有一個NDA才能訪問它們。
⑵ AT指令集數據命令
AT指令集包含一系列數據命令,它們在不同場景下提供特定的功能控制。首先,AT+CBST用於選擇信差類型,確保通信的精確性。接下來,AT+FCLASS命令允許模塊在數據或傳真模式下工作,以適應不同的操作需求。
對於服務報告的詳細程度,AT+CR提供了控制選項,使得用戶能夠獲取更豐富的服務反饋信息。而當電話呼叫接入時,AT+CRC允許通過鈴聲指示更細致的劃分結果。
對於本地DTE-DCE速率的監測,AT+ILRR確保了通信速率的實時報告,有助於優化網路性能。在無線通信線路協議設置方面,AT+CRLP和AT+DOPT提供了必要的參數調整。
數據壓縮選項是通過AT+C來實現的,用戶可以使用它來選擇是否啟用V42二度數據壓縮。此外,AT+DR命令可以報告壓縮狀態,這對於數據傳輸的效率至關重要。