Quectel EC20 R2.1 AT指令集(TCP/部分)
1、介紹
Quectel EC2x 模塊具有嵌入式 TCP/IP堆棧,使主機可以通過 AT 命令直接上網。可以實現TCP客戶端、UDP客戶端、TCP服務器和UDP服務器。
1.1 使用 AT 命令的過程
開啟模塊電源,發送 AT指令,等待模塊返回 OK。
?? ?開機過程:保持電源鍵拉低 2 秒,然后拉高。
?? ??? ?關機過程:發送 AT + QPOWD 命令,再過12 秒后,切斷電源。
?? ?
?? ?查詢 SIM 卡狀態(AT + CPIN?),如果 20 秒后還無法識別 SIM 卡,重新啟動模塊。
?? ?如果返回 1 或 5 ,代表 CS 服務注冊成功。
?? ?
?? ?查詢 CS 服務(AT + CREG?),如果 90秒后未能在 CS 上注冊域名服務,重新啟動模塊。
?? ?在 60秒內成功注冊CS域名服務后,查詢 PS 服務(AT + CGREG?/AT + CEREG?)
?? ?如果返回 1 或 5 ,代表 PS 服務注冊成功。
?? ?
?? ?配置 PDP 上下文和 Qos(AT+QICSGP/AT+CGQREQ/AT+CGEQREQ/AT+CGQMIN/AT+CGEQMIN)
?? ?激活 PDP 上下文(AT+QIACT=<CONTEXTID>和 AT+QiACT?)
?? ?如果 150 秒內沒有回應,則需重啟模塊。
?? ??? ?如果重試 3 次都無法激活 PDP,則需停用 PDP 上下文(AT+QIDEACT=<CONTEXTID>),停止成功,轉到第 2 步(查詢SIM卡狀態)重新執行。如果 3 次都沒停止成功或超過40秒沒有回應,則重啟模塊。
?? ?
?? ?打開連接(AT+QIOPEN),返回 connectID,err
?? ?如果重試 5 次或 150 秒內都沒連接成功,則需停止 PDP后,轉到第 6 步(激活 PDP 上下文)。
?? ?
?? ?發送數據(AT+QISEND=<connectID>)
?? ?發送數據后,每 5 秒 發送一次確認,如果 24 次后仍未確認,可能 TCP 連接異常,需要關閉當前連接,轉到第 7 步(打開連接)重新建立連接。
?? ??? ?TCP心跳:定時發送小數據包,來檢測 TCP 連接是否正常。
?? ?
?? ?關閉連接(AT+QICLOSE=<connectID>)
?? ?如果 10 秒內無法關閉連接,需要重新啟動模塊。
? ??
1.2 數據訪問模式
Buffer access mode ?(緩沖區訪問模式)
?? ?可以通過 AT+QISEND命令發送數據,收到互聯網數據時,先保存到緩沖區,并發送 URC 報告(+QIURC:“recv”,<connectID>)。客戶端可以通過 AT+QIRD 命令讀取數據。
?? ?
?? ?Direct push mode ?(直推模式)
?? ?可以通過 AT+QISEND命令發送數據,收到互聯網數據時,數據直接輸出到客戶端(+QIURC:“recv”,<connectID><CR><LF><data>)。
?? ?
?? ?Transparent access mode (透明訪問模式,透傳)
?? ?客戶端直接發送數據到互聯網,接收的數據直接輸出到客戶端。
?? ??? ?模塊切換到緩沖區訪問模式。客戶端可以使用 “+++”退出透傳模式。返回 OK 。退出透傳模式時,為了防止 “+++” 被解釋為數據,輸入 “+++” 之前和之后,1 秒內不能輸入任何字符。
?? ??? ?可以通過 AT+QISWTMD 命令返回透傳模式。將<access_mode>設為 2。如果成功進入透傳模式,將返回 CONNECT。
?? ??? ?如果ATO從透明訪問模式退出后。如果成功重新進入透明訪問模式,將返回“CONNECT” 。如果沒有進入透明訪問模式,ATO將返回“NO CARRIER”。
? ??
2、TCP / IP AT命令的描述
2.1、AT命令的描述
AT+QICSGP 配置TCP / IP參數
該命令可用于配置<APN>,<username>,<password>等TCP / IP上下文參數。QoS設置可以由AT + CGQMIN,AT + CGEQMIN,AT + CGQREQ和AT + CGEQREQ配置 。
AT+QICSGP=?:查詢命令參數。
?? ?AT+QICSGP=<contextID>:查詢 contextID的配置信息。
?? ?AT+QICSGP=<contextID>[,<context_type>,<APN>[,<username>,<password>)[,<authentication>]]]:配置 contextID信息。
?? ?<contextID>:整數類型。上下文ID。范圍是1-16。
?? ??? ?<context_type>:整數類型。協議類型。1(IPV4)、2(IPV4V6)。?
?? ??? ?<APN>:字符串類型。接入點名稱。
?? ??? ?<username>:字符串類型。用戶名。?
?? ??? ?<password>:字符串類型。密碼。
?? ??? ?<authentication>:整數類型。身份驗證方法。0(沒有)、1(PAP)、2(CHAP)、3(PAP或CHAP)。
?? ??? ?返回信息:OK 或 ERROR。
? ?
AT+QIACT 激活 PDP 上下文
在PDP上下文激活之前,應該配置TCP/IP參數。激活后,通過 AT+QIACT 可以查詢IP地址。根據3GPP規范中,該模塊同時只支持三個PDP上下文激活,所以客戶必須確保PDP上下文激活的數量小于3。根據網絡,在 150 秒內返回 OK 或 ERROR,然后執行 AT+QIACT?。在這之前不能執行任何命令。
AT+QIACT=? :查詢命令參數
?? ?AT+QIACT?:查詢當前激活的 PDP 上下文信息。
?? ?<contextID>:激活的 PDP 上下文 ID。
?? ??? ?<context_state>:整數類型。上下文狀態。0(停用)、1(活動)
?? ??? ?<context_type>:協議類型。1(IPV4)、2(IPV4V6)。
?? ??? ?<IP_address>:本地 IP 地址。
?? ?
?? ?AT+QIACT=<contextID>:激活 PDP 上下文。
?? ?<contextID>:激活的 PDP 上下文 ID。
?? ??? ?返回信息:OK 或 ERROR、超時時間 150 秒。
? ??
AT+QIDEACT 停用 PDP 上下文
AT+QIDEACT=?:查詢命令參數。
?? ?AT+QIDEACT=<contextID> :停用指定 PDP 上下文。返回 OK 或 ERROR,超時時間 40 秒。
AT+QIOPEN 打開 Socket 服務
該命令用于打開套接字服務。
AT+QIOPEN=?:查詢命令參數。
?? ?AT+QIOPEN=<contextID>,<connectID>,<service_type>,<IP_address>/<domain_name>,<remote_port>[,<local_po CONNECTrt>[,<access_mode>]] :打開 Socket 服務。
?? ?<contextID> ?:整數類型。上下文ID。范圍是1-16。 ?
?? ??? ?<connectID> ?:整數類型。套接字服務索引。范圍是0-11。 ?
?? ??? ?<SERVICE_TYPE>:字符串類型。套接字服務類型。 ?
?? ??? ?“ TCP ” :作為客戶端啟動TCP連接 ?
?? ??? ??? ?“ UDP ”:作為客戶端啟動UDP連接 ?
?? ??? ??? ?“TCP LISTENER” ?:啟動TCP服務器以偵聽TCP連接 ?
?? ??? ??? ?“UDP SERVICE” :啟動UDP服務 ?
?? ??? ?
?? ??? ?<IP_address>:字符串類型。?
?? ??? ?如果<service_type>是TCP或UDP ,則表示遠程服務器的IP地址,例如 “220.180.239.212”。?
?? ??? ??? ?如果<service_type>是TCP LISTENER或UDP SERVICE 地址,請輸入“127.0.0.1”。 ?
?? ??? ?
?? ??? ?<domain_name>:字符串類型。遠程服務器的域名地址。 ?
?? ??? ?<remote_port> :遠程服務器的端口,僅在<service_type>為“TCP”或“UDP”時有效。范圍是0-65535。 ?
?? ??? ?<LOCAL_PORT> ?:本地端口。范圍是0-65535。?
?? ??? ?如果<service_type>是“TCP LISTENER”或“UDP SERVICE”,則此參數必須指定。
?? ??? ??? ?如果<service_type>是“TCP”或“UDP”。如果<local_port>為0,那么本地端口將是自動分配。否則,將按指定分配本地端口。
?? ??? ?
?? ??? ?<access_mode> :整數類型。套接字服務的數據訪問模式。?
?? ??? ?0: 緩沖區訪問模式?
?? ??? ??? ?1:直推模式 ?
?? ??? ??? ?2:透明訪問模式
?? ??? ?
?? ??? ?<err>:整數類型。操作的錯誤代碼。請參閱第4章。
? ??
A T + QICLOSE關閉套接字服務
該命令用于關閉指定的套接字服務。根據網絡的不同,最多需要一次 10秒(默認值,可以通過<timeout>修改)在執行后 ? 返回“ OK ” 或“ ERROR ”AT + QICLOSE。在返回響應之前,無法執行其他AT命令。
AT + QICLOSE =?:返回命令參數。
?? ?AT + QICLOSE = <connectID> [,<timeout>]:如果成功關閉,響應: OK, 如果未能關閉,則回復: ?錯誤?
?? ?<connectID> ?:整數類型。套接字服務索引。范圍是0-11。
?? ??? ?<timeout>:整數類型。如果在<timeout>內沒有收到其他對等體的FIN ACK,則 ?
?? ??? ?模塊將強制關閉套接字。范圍是1-65535,默認值是10。 ?單位:秒。
? ? ? ? ? ??
AT+QISTATE 查詢套接字服務狀態
該命令用于查詢套接字服務狀態。如果<query_type>為0,則返回所有現有套接字服務狀態 。如果<query_type>為1,則返回指定的套接字服務狀態 。
AT+QISTATE=?:測試模塊返回是否正常。
?? ?AT+QISTATE? or AT+QISTATE:返回所有套接字的信息。
?? ?AT+QISTATE=<query_type>,<contextID>:查詢指定上下文的所有套接字的連接狀態。
?? ?<query_type>:整數類型。查詢類型。
?? ??? ?0:查詢指定上下文的連接狀態 ?
?? ??? ??? ?1:查詢指定套接字服務的連接狀態
?? ??? ?
?? ??? ?<contextID> ?:整數類型。上下文ID。范圍是1-16。 ?
?? ??? ?<connectID> ?:整數類型。套接字服務索引。范圍是0-11。 ?
?? ??? ?<SERVICE_TYPE>:字符串類型。套接字服務類型。 ?
?? ??? ?“ TCP ” :作為客戶端啟動TCP連接 ?
?? ??? ??? ?“ UDP ”:作為客戶端啟動UDP連接 ?
?? ??? ??? ?“TCP LISTENER” ?:啟動TCP服務器以偵聽TCP連接?
?? ??? ??? ?“TCP INCOMING”:啟動TCP服務器接受的TCP連接
?? ??? ??? ?“UDP SERVICE” :啟動UDP服務 ?
?? ??? ?
?? ??? ?<IP_address>:字符串類型。?
?? ??? ?如果<service_type>是TCP或UDP ,則表示遠程服務器的IP地址,例如 “220.180.239.212”。?
?? ??? ??? ?如果<service_type>是TCP LISTENER或UDP SERVICE 地址,請輸入“127.0.0.1”。 ?
?? ??? ?
?? ??? ?<remote_port> :遠程服務器的端口,僅在<service_type>為“TCP”或“UDP”時有效。范圍是0-65535。 ?
?? ??? ?<LOCAL_PORT> ?:本地端口。范圍是0-65535。?
?? ??? ?如果<service_type>是“TCP LISTENER”或“UDP SERVICE”,則此參數必須指定。
?? ??? ??? ?如果<service_type>是“TCP”或“UDP”。如果<local_port>為0,那么本地端口將是自動分配。否則,將按指定分配本地端口。
?? ??? ?
?? ??? ?<socket_state>:整數類型。套接字服務狀態
?? ??? ?0:“初始”:尚未建立連接
?? ??? ??? ?1:“打開”:客戶端正在連接或服務器正在嘗試l isten
?? ??? ??? ?2:“已連接”:已建立客戶端/傳入連接
?? ??? ??? ?3:“偵聽”:服務器在偵聽客戶端連接”
?? ??? ??? ?4:“關閉”:連接正在關閉?
?? ??? ?
?? ??? ?<serverID>:僅在<service_type>為“TCP INCOMING”時有效。<serverID>代表哪個服務器接受此TCP傳入連接,其值與之相同此服務器的“TCP LISTENER”的<connectID>。
?? ??? ?<access_mode> :整數類型。套接字服務的數據訪問模式。?
?? ??? ?0: 緩沖區訪問模式?
?? ??? ??? ?1:直推模式 ?
?? ??? ??? ?2:透明訪問模式
?? ??? ?
?? ??? ?<AT_port>:字符串類型。套接字服務的COM端口。 ?
?? ??? ?“usbmodem” ?:USB MODEM端口
?? ??? ??? ?“USBAT” ?:USB AT PORT
?? ??? ??? ?“UART1” ?:UART PORT1
?? ??? ??? ?“cmux1” ?:MUX PORT 1
?? ??? ??? ?“cmux2” ?:MUX PORT 2
?? ??? ??? ?“cmux3” ?:MUX PORT 3 ?
?? ??? ??? ????????“cmux4”:MUX PORT ?4
?? ??? ?
? ?
A T + QISEND發送數據
如果指定套接字服務的<access_mode>是緩沖區訪問模式或直接推送模式,則數據可以是通過AT + QISEND發送。如果數據成功發送到模塊,將返回“ SEND OK ” 。否則它將返回“ SEND FAIL ” 或“ ERROR ” 。“ SEND FAIL ” 表示發送緩沖區已滿客戶可以嘗試重新發送數據。“ERROR”表示在發送過程中遇到錯誤 ?數據。客戶應該延遲一段時間來發送數據。最大數據長度為1460字。“SEND OK”并不意味著數據已成功發送到服務器。客戶可以查詢數據是否通過AT + QISEND = <connectID>,0命令到達服務器。透傳模式下不需要AT指令發送數據
AT + QISEND =? :所有命令的這種格式(=?)的作用是測試模塊是否支持此指令。
?? ?AT+QISEND=<connectID>:指定通過那個連接發送不定長的數據。輸入完數據后按 CTRL+Z 發送,或按ESC取消發送,如果緩沖區滿 返回 SEND FAIL,如果連接關閉或參數錯誤則返回 ERROR。
?? ?AT+QISEND=<connectID>,<send_length>:發送定長的數據,在提示符 “>" 后輸入數據,長度到達指定值時將自動發送數據。如果緩沖區滿 返回 SEND FAIL,如果連接關閉或參數錯誤則返回 ERROR。
?? ?AT+QISEND=<connectID>,<send_length>,<remoteIP>,<remote_port> :當服務類型是UDP SERVICE時,使用這條語句發送。流程同上。
?? ?AT + QISEND = <connectID>,0:當數據長度為0時,語句的作用就是查詢發送緩沖區狀態。
?? ?<connectID>:整數類型。套接字服務索引。范圍是0-11。
?? ??? ?<send_length>:整數類型。要發送的數據長度,不能超過1460字節。?
?? ??? ?<remoteIP>:字符串類型。遠程IP地址(必須是點格式),僅在<service_type>是“UDP SERVICE”時才有效。
?? ??? ?<remote_port> :整數類型。遠程端口,僅在<service_type>為“UDP SERVICE”時有效。
?? ??? ?<total_send_length>:整數類型。發送數據的總長度。單位:字節。
?? ??? ?<ackedbytes>:整數類型。確認數據的總長度。單位:字節。
?? ??? ?<unackedbytes>:整數類型。未確認數據的總長度。單位:字節。
?? ??? ?<err>:整數類型。操作的錯誤代碼。請參閱第4章。
? ?
AT+QIRD 檢索 TCP/IP 數據
在緩沖區訪問模式下,模塊接收數據后,將數據存入緩沖區,并報告“ + QIURC:“recv”,<connectID>“ ,然后AT + QIRD可以檢索數據。 ?請注意,如果緩沖區不為空,并且模塊再次接收數據,則不會報告新的數據URC,直到通過AT + QIRD從緩沖區檢索到所有接收到的數據。
AT+QIRD=?:測試命令
?? ?AT+QIRD=<connectID>[,<read_length>]:當<service_type>是“TCP” / “ UD P” / “TCP INCOMING”時如果指定的連接已收到數據,則響應:+ QIRD:<read_actual_length> <CR> <LF> <data>?
?? ?AT + QIRD = <connectID>:當<service_type>是“UDP服務”時,如果數據存在則相應+ QIRD:<read_actual_length> <REMOTEIP>,<REMOTE_PORT><CR> <LF> <data> 。
?? ?<connectID>:整數類型。套接字服務索引。范圍是0-11。
?? ??? ?<read_length>:要檢索的最大數據長度。范圍是0-1500字節。?
?? ??? ?<read_actual_length>:接收數據的實際長度。單位:字節。
?? ??? ?<remoteIP>:字符串類型。遠程IP地址(必須是點格式),僅在<service_type>是“UDP”時才有效。
?? ??? ?<remote_port> :整數類型。遠程端口,僅在<service_type>為“UDP”時有效。
?? ??? ?<data> :檢索到的數據。
?? ??? ?<total_receive_length>:接收數據的總長度。單位:字節。
?? ??? ?<have_read_length>:讀取數據的長度。單位:字節。
?? ??? ?<unread_length> :未讀數據的長度。單位:字節。
? ?
A T + QISENDEX發送十六進制字符串
AT+QISENDEX=?:測試命令
?? ?AT+QISENDEX=<connectID>,<hex_string>:返回 Send OK,SEND FAIL 或 ERROR。
?? ????????<connectID>:整數類型。套接字服務索引。范圍是0-11。
?? ??? ???????? <hex_string> ?:字符串類型。十六進制字符 最大長度為512字節。
? ?
AT + QISWTMD切換數據訪問模式
該命令可用于切換數據訪問模式:緩沖區訪問模式、直接推送模式和透明訪問模式。啟動套接字服務時,可以通過以下方式指定數據訪問模式 ?AT + QIOPEN的<access_mode>參數。打開套接字后,數據訪問模式可以通過AT + QISWTMD進行更改。
AT + QISWTMD =?:測試命令
?? ?AT+QISWTMD=<connectID>,<access_mode>:如果<access_mode>為0或1時,切換成功返回 OK,如果<access_mode>為2時,切換成功返回 CONNECT。如果發生錯誤返回 ERROR。
?? ?<connectID> :整數類型。套接字服務索引。范圍是0-11。
?? ??? ?<access_mode>:整數類型。連接的數據訪問模式。 0 緩沖區訪問模式、1 直推模式 、2 透明訪問模式。
?? ?
A T + QPING Ping遠程服務器?
AT + QPING =?測試命令
?? ?AT+QPING=<contextID>,<host>[,<timeout>[,<pingnum>]]:Ping遠程服務器。
AT+QNTP 從NTP服務器同步本地時間
AT+QNTP=?:測試命令,如果在同步時,則返回 NTP 服務器地址。
AT+QIDNSCFG 配置DNS服務器
AT+QIDNSCFG=?:測試命令。
?? ?AT+QIDNSCFG=<contextID>:查詢DNS服務器地址。
?? ?AT+QIDNSCFG=<contextID>,<pridnsaddr>[,<secdnsaddr>] :配置DNS服務器地址。
AT+QIDNSGIP 通過域名查詢IP地址
AT+QIDNSGIP=? :測試命令。
?? ?AT+QIDNSGIP=<contextID>,<hostname>:查詢域名對應的 IP 地址。
A T + QICFG 配置可選參數
AT+QICFG=?:測試命令。
?? ?AT+QICFG="transpktsize"[,<transpktsize>]:發送數據包大小。默認1024。
?? ?AT+QICFG="transwaittm"[,<transwaittm>] :透明模式下如果發送數據未到數據包大小時,時間超過設定值時自動發送。默認值 2,單位:100毫秒。
?? ?AT+QICFG="dataformat"[,<send_data_format>,<recv_data_format>]:發送和接收的默認數據格式,0 文本、1 16進制。
?? ?AT+QICFG="viewmode"[,<view_mode>]:接收到的數據的輸出格式,0=data header\r\ndata、1= data header,data。
?? ?AT+QICFG="tcp/retranscfg"[,<max_backoffs>,<max_rto>] :整數類型。TCP重傳的最大數量。范圍是 3-20,默認值為12。這個值無法保存到NV,將對于所有TCP套接字生效。
?? ?AT+QICFG="dns/cache"[,dns_cache] :0 禁用DNS緩存、1 啟用 DNS 緩存。
?? ?AT+QICFG="qisend/timeout"[,time]:AT + QISEND的超時時間,默認 0 ,單位毫秒。
?? ?AT+QICFG="passiveclosed"[,closed] :0 ?關閉服務器時禁用TCP連接的被動關閉。1 關閉服務器時啟用TCP連接的被動關閉。
?? ?AT+QICFG="udp/readmode"[,mode]:0 禁用阻止模式。1 啟用流模式。?
?? ?AT+QICFG="udp/sendmode"[,mode] :0 禁用阻止模式。1 啟用流模式。?
?? ?AT+QICFG="tcp/accept"[,state]:0 禁用自動接受來自客戶端的TCP連接。1 啟用自動接受來自客戶端的TCP連接。
AT+QISDE 用于控制是否回顯AT + QISEND的數據
AT + QISDE =?:測試命令。
?? ?AT+QISDE=<echo> :0 不回顯數據,1 回顯數據。
A T + QIGETERROR 查詢上一個錯誤代碼
如果在執行TCP / IP命令后返回“ERROR”,則可以通過查詢錯誤的詳細信息 ?AT + QIGETERROR。請注意,AT + IGETERROR只返回最后一個TCP / IP AT命令的錯誤代碼 。
AT + QIGETERROR =?:測試命令。
?? ?AT + QIGETERROR:查詢錯誤詳細信息。
2.2、URC 的描述
TCP / IP AT命令的URC將以“+ QIURC:” 開頭的格式報告給主機。 它包含有關傳入數據,連接已關閉和傳入連接等的報告。實際上,在URC之前和之后都有“<CR> <LF>” ,但可以省略 “<CR> <LF>” 。
連接關閉:+QIURC: "closed",<connectID>。
?? ?當有傳入的數據:
?? ?+QIURC: "recv",<connectID>:緩沖區訪問模式下的傳入數據的URC。可以通過AT + QIRD接收數據。
?? ??? ?+QIURC:"recv",<connectID>,<currentrecvlength><CR><LF><data>:直接訪問模式下的URC。
?? ??? ?+QIURC:"recv",<connectID>,<currentrecvlength>,<remoteIP>,<remote_port><CR><LF><data>:UDP SERVICE模式下的URC。
?? ?
?? ?傳入連接已滿:+QIURC: "incoming full"
?? ?有新的連接:+QIURC:"incoming",<connectID>,<serverID>,<remoteIP>,<remote_port> 。
?? ?PDP停用:+QIURC: "pdpdeact",<contextID>。???????
3、代碼示例(略)
4、錯誤代碼(略)
5、術語和縮寫
APN:接入點名稱
?? ?CHAP:挑戰握手認證協議
?? ?CS:電路交換
?? ?DNS:域名系統
?? ?ID:互聯網協議
?? ?IP:互聯網協議
?? ?NTP:網絡時間協議
?? ?NV:永久存儲,不消失
?? ?PAP:密碼驗證協議
?? ?PDP:分組數據協議
?? ?PPP:點對點協議
?? ?PS:分組交換
?? ?QoS:網絡通訊服務質量
?? ?TCP:傳輸控制協議
?? ?UART:通用異步收發器
?? ?UDP:用戶數據報協議
?? ?URC:未經請求的結果代碼
?? ?USB:通用串行總線
?? ?(U)SIM:(通用)用戶身份識別卡
?? ?UTC:世界標準時間
****************************結束********************************
————————————————
版權聲明:本文為CSDN博主「じоνё靁〃」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/jingliuting/article/details/90368779
總結
以上是生活随笔為你收集整理的Quectel EC20 R2.1 AT指令集(TCP/部分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML5专属解释
- 下一篇: 简单介绍RESTful风格