comgt 發送AT指令
comgt 是一個 GPRS/EDGE/3G/HSDPA 和 3G/GPRS 模塊配置工具。它更像是一個腳本語言解釋器,通過調用內建、或者外部腳本與 GPRS 和 3G 模塊通訊。
語法
comgt -d device -ehstvVx script
參數
- -d device :指定模塊的通訊口,例如 /dev/ttyUSB2 或 /dev/modem
- -e :打開串口通信的 echo
- -h :顯示幫助信息
- -s :在外部腳本執行前,不要運行內建的默認腳本
- -t :使用備用線路終端
- -v :運行詳細模式,會顯示詳細的通訊過程
- -V :顯示版本信息
- -x :將內建和外部腳本中的波特率 115200 改為 57600
內建腳本
- comgt :運行默認的內建腳本。如果運行 comgt 時沒有指定任何腳本,例如
comgt -d /dev/ttyS1,它會依次執行幾個內建的腳本 PIN 、reg、sig 。 - comgt help :列出所有幫助信息。
- comgt info :列出當前模塊的配置。
- comgt sig :獲取信號強度。
- comgt reg :顯示注冊狀態。
- comgt 3G :將模塊設為 3G only (UMTS/HSDPA) 模式。
- comgt 2G :將模塊設為 2G only (GSM/GPRS/EDGE) 模式。
- comgt 3G2G :將模塊設為 3G preferred (UMTS/HSDPA and GSM/GPRS/EDGE) 模式
外部腳本
以 sendmsg.gcom 為例,該腳本實現了發送短信的功能:
opengt
set com 115200n81
set comecho off
set senddelay 0.02
waitquiet 0.2 0.2
flash 0.1
:start
send "AT+CMGF=1^m"
get 1 "" $s
print $s
send "AT+CSCS=GSM^m"
get 1 "" $s
print $s
send "AT+CSMP=17,168,0,0^m"
get 1 "" $s
print $s
print "Input message:\n"
input $m
send "AT+CMGS=+8613824741490^m"
send $m+"^Z"
get 1 "" $s
print $s
:continue
exit 0
opengt 段用於設置串口的各項參數,之后會一次執行 start 段的命令,這里涉及到幾個常用的命令:
- send : 向串口發送字符串。這個字符應該以
^m結尾,表示一個回車符。幾個字符串可以用加號連接。有時一個 AT 命令后會等待用戶輸入,比如AT+CMGS后會等待輸入短信內容,此時繼續調用 send 命令即可。^Z表示 Ctrl+Z 組合鍵。 - input : 等待用戶輸入,輸入的字符串放入變量 $x 中。
- print : 在終端打印一行字符串。
- get : 獲取串口返回從字符串。語法是
get timeout "terminators" $string
執行該腳本:
gcom -d /dev/ttyUSB2 -s sendmsg.gcom
各USB端口的作用
- ttyUSB0用於moderm
- ttyUSB1用於發AT指令
- ttyUSB2用於VoUSB
- ttyUSB3用於Debug
AT命令集
AT命令,用來控制TE(TerminalEquipment)和MT(Mobile Terminal)之間交互的規則,如下圖所示。在GSM網絡中,用戶可以通過AT命令進行呼叫、短信、電話本、數據業務、傳真等方面的控制。
AT命令是以AT作首,字符結束的字符串,AT命令的響應數據包在中。每個命令執行成功與否都有相應的返回。AT指令集可分為三個類型:

大部分模組支持3GPP TS27.007 AT命令集,並在此基礎上擴展出自定義指令集。以C開頭的命令如AT+CFUN是是通用的命令,以N開頭的命令是模組廠商自定義的命令,不同的模組廠商可能使用不同的命令實現相同的功能。
在物聯網中,AT指令集可用於通信模塊調測、控制&調測設備等。本節將以移遠通信的BC35-G模組為例,為大家剖析常用的NB-IoT 3GPP相關命令及其常見用法,完整的文檔可找模組廠家獲取。
常用AT命令
AT+CGSN(查詢模塊序列號)
AT+CGSN=<snt>,如果沒有寫入<snt>,則只返回"OK”。
- <snt>=0,返回<sn>。
- <snt>=1,返回IMEI(國際移動設備識別碼),這個序列號每個模塊都是唯一的。物聯網平台基本都是以IMEI號或者Mac地址來區分不同的設備,包括華為OceanConnect物聯網平台。
- <snt>=2,返回IMEISV(國際移動電台設備身份和軟件版本)。
- <snt>=3,返回軟件版本號SVN。
例:查詢IMEI發送命令:
AT+CGSN=1
模塊返回:
+CGSN:868744036640526
OK
AT+CGMR(查詢固件版本)
執行該命令返回固件版本 。例:發送命令:
AT+CGMM
模塊返回:
<Revision>
OK
AT+CMEE(查詢終端報錯)
用於設置終端錯誤報告,使能后當發送AT執行錯誤時終端會返回錯誤編碼,這樣便於定位問題。例:開啟錯誤碼上報
發送命令:AT+CMEE=1
模塊返回:
OK
AT+NRB(重啟模塊)
例:
發送命令
AT+NRB
模塊返回:REBOOTING
****
Boot: Unsigned
Security B.. Verified
Protocol A.. Verified
Apps A...... Verified
REBOOT_CAUSE_APPLICATION_AT
Neul
OK
AT+CSQ(查詢信號強度)
返回值為+CSQ:<rssi>,<ber>。rssi越大,表示信號越強。信號強度和rssi換算公式為:信號強度=113dBm+(rssi*2)。
沒有信號或信號強度過低,需要聯系運營商處理。例:
發送命令:
AT+CSQ
模塊返回
+CSQ:31,99
OK
- rssi=0,表示信號非常差。
- rssi=31,表示信號質量非常強。
- rssi=99,表示沒有信號。
- ber字段未使用,恆等於99。
AT+CGATT(查詢網絡是否激活)
返回:+CGATT:1,表示網絡已激活;若返回:+CGATT:0,則表示網絡未激活,請嘗試重啟模組激活網絡。
例:
發送命令:
AT+CGATT?
模塊返回:
+CGATT:1
OK
AT+CEREG(查詢網絡注冊狀態)
該命令用於查詢終端EPS網絡注冊狀態。
當使能提示時,終端的網絡注冊狀態信息有變化,會主動上報給用戶終端。通過不同的設置可以上報EPS注冊狀態、位置區碼、小區ID、服務小區的接入技術等信息,通常情況下只需要設置為自動上報EPS注冊狀態。
例:設置網絡注冊狀態上報信息
發送命令:
AT+CEREG=1
模塊返回:
OK
設置成功后,當網絡注冊狀態信息有變化,會主動上報給用戶終端,如:
+CEREG:1,1
OK
AT+CSCON(查詢網絡當前連接狀態)
返回格式為:+CSCON:<n>,<mode>?<n>是通知設置。
取值和說明:0為取消異步通知,當網絡連接后,串口不會主動上報+CSCON命令;1為使能異步通知,串口主動上報+CSCON。<mode>是當前模塊連接狀態,取值和說明:0處於IDLE狀態,1處於已連接狀態。當處於IDLE狀態時,只要發送數據或者重啟設備,就會變成已連接狀態。例:
發送命令:
AT+CSCON?
模塊返回:
+CSCON:0,1
OK
AT+CFUN(設置模塊射頻功能)
該命令用於設置和查詢模塊的射頻功能是否開啟。例:
AT+CFUN=0 //關閉射頻功能
OK
AT+CFUN=1 //開啟模塊射頻功能
OK
AT+CFUN? //查詢模塊的射頻開啟狀態
+CFUN:1 //射頻功能已打開成功,若回復0通常是因為SIM卡的電路與模塊沒有連接成功
AT指令集調測工具
AT指令集調測工具(也稱串口調試工具)有IoT Studio、QCOM、SSCOM、XCOM、COMTool。本節為大家重點介紹常用的IoT Studio和QCOM。
【IoT Studio】
IoT Studio是基於華為LiteOS嵌入式系統軟件開發的工具,支持C,C++、匯編等多種開發語言,提供了代碼編輯、編譯、燒錄及調試等一站式開發體驗,可以對系統關鍵數據進行實時跟蹤、保存與回放。
QCOM串口調試助手是經典的AT指令調試和NB-IoT開發工具,支持多條AT命令的保存,多個命令待發送區域,每個都可以單獨設置延時,使2G、NB-IoT模塊開發更容易。

=============== End
