使用AT命令操作Modem 3G/4G模塊

1. 引言

AT命令是一種通信協議,用于控制和配置各種設備,尤其在通信領域中具有重要性。它的名稱來源于"ATtention"(注意),因為命令通常以"AT"開頭。AT命令最早被用于調制解調器,用于與計算機通信并進行設置。隨著技術的進步,AT命令逐漸在移動通信、嵌入式設備等領域得到廣泛應用。本文將深入探討AT命令的概念和應用,以及它在通信領域中的重要性。

2. AT命令的起源

AT(Attention)指令是由 Dennis Hayes 發明的,所以也稱為 Hayes command set。
AT命令作為一種通信協議,源于調制解調器的早期發展。在通信領域的發展過程中,AT命令逐漸演化成一種通用的控制方式,用于控制和配置各種設備。讓我們回顧一下AT命令的歷史和來源,以及它最早應用于調制解調器控制的情況。

2.1 調制解調器時代

AT命令最早的應用場景是在調制解調器(Modem)中。調制解調器是一種用于將數字信號轉換成模擬信號(調制)和將模擬信號轉換成數字信號(解調)的設備。在調制解調器的早期,通過串口連接到計算機的方式,用戶可以使用終端軟件與調制解調器進行交互。

2.2 AT命令的引入

AT命令最初是由調制解調器制造商引入,作為一種交互方式,允許用戶通過終端軟件向調制解調器發送各種指令。這些指令用于執行各種操作,如撥號、連接到遠程服務器、查詢設備狀態等。由于命令通常以"AT"開頭,因此被稱為AT命令,其中"AT"表示"ATtention"(注意)。

2.3 演進和應用擴展

隨著通信技術的發展,AT命令的應用范圍逐漸擴展到不僅限于調制解調器,還包括各種通信設備和嵌入式系統。它逐漸成為控制和配置設備的一種通用方式。AT命令被用于調制解調器、移動通信設備、藍牙模塊、GPS模塊等各種設備中。

2.4 AT命令的歷史價值

盡管通信技術已經取得了巨大的進步,但AT命令作為一種簡單而有效的控制協議仍然具有歷史價值。它的應用已經超越了調制解調器的范疇,成為通信領域中不可或缺的一部分。同時,AT命令的歷史也讓我們了解到通信技術的發展歷程和變革。

通過了解AT命令的起源,我們可以更好地理解它在通信領域中的重要性和應用價值,以及它如何從最早的調制解調器時代演化成今天的通信設備控制方式。

2.4 AT命令應用框圖
通常,我們把 AT 模塊端的解析處理程序稱為 AT Server,而將控制 AT 模塊的處理器端的解析處理程序稱為 AT Client。由 AT Client 發起命令請求,AT Server 回應處理結果。另外 AT Server 通過 URC(Unsolicited result code) 來主動給 AT Client 發送數據。

2.5 AT指令標準

  • V.250:該標準于 1995 年建立,1998 年重命名為 V.250
  • ETSI GSM 07.07(3GPP TS 27.007):用于控制 GSM modem 的 AT 指令集GSM 07.07 是基于 V.250 標準的。是目前最新的 AT 標準。

http://www.arib.or.jp/english/html/overview/doc/STD-T63v9_30/5_Appendix/Rel10/27/27007-a70.pdf

3. AT命令的基本結構

AT命令作為一種通信協議,具有統一的基本結構,為設備控制和配置提供了一種簡單而有效的方式。本節將深入探討標準AT命令的基本結構,以及AT指令、參數和結果的組成。
AT request
AT response

3.1 AT指令的基本格式

AT命令的基本格式通常以"AT"開頭,后面緊跟具體的命令內容。例如,撥打電話的AT命令為"ATD",發送短信的AT命令為"AT+CMGS"。這個"AT"前綴告訴設備要執行一個命令。
由于每個廠家的模塊不一樣,實現的功能不一樣,導致每個 AT 模塊廠家有自己的一套私有的 AT 命令集,每一個 AT 模塊廠家實現的 AT 指令集解析器也不一樣(解析器實現的 AT 標準功能也參差不齊)。

3.2 參數的使用

AT命令可以包含參數,這些參數用于指定要執行的操作或配置。參數的具體格式和含義取決于每個命令。例如,發送短信的AT命令"AT+CMGS"需要指定短信內容和接收方號碼作為參數。

參數可以是數字、字符串、甚至是特殊字符,具體取決于命令的需求。例如,以下是一些AT命令的示例,其中包含了不同類型的參數:

  • “ATD1234567890;”:撥打電話到號碼1234567890。
  • “AT+CMGS=“Hello”,123”:發送短信內容為"Hello",接收方號碼為123。

3.3 結果的反饋

執行AT命令后,設備會返回一個結果,反映了命令的執行狀態和相關信息。這些結果通常用于判斷操作是否成功,或者獲取進一步的細節。例如,執行成功的AT命令可能返回"OK",表明操作已成功完成。如果命令執行失敗,可能會返回"ERROR"或其他錯誤信息。

3.4 示例代碼

以下是一個簡單的示例代碼,使用Kotlin模擬發送AT命令并獲取結果的過程:

fun sendATCommand(command: String): String {// 此處為模擬,實際應用中需將AT命令發送至實際設備并獲取結果val simulatedResponse = if (command == "ATD1234567890;") {"Dialing..."} else {"Unknown command"}return simulatedResponse
}fun main() {val atCommand = "ATD1234567890;"val response = sendATCommand(atCommand)println("Response: $response")
}

上述示例代碼模擬了一個撥打電話的AT命令,并根據命令返回相應的模擬結果。實際應用中,開發者需要將AT命令發送至實際設備,并從設備獲取真實的結果。

通過理解AT命令的基本結構,開發者可以更好地與通信設備進行交互和控制,實現各種功能和應用。

4. AT命令的應用領域

AT命令作為一種通用的控制協議,在多個領域中都有廣泛的應用。本節將深入探討AT命令在不同領域的應用,包括調制解調器、移動通信、嵌入式設備等,并特別強調了AT命令在移動通信中的重要性。

4.1 調制解調器

AT命令最早是用于調制解調器的控制和配置。調制解調器是將數字信號轉換為模擬信號,以實現計算機之間的數據通信。在調制解調器領域,AT命令用于控制撥號、掛斷、設置連接速率等操作。

4.2 移動通信

在移動通信領域,AT命令的應用尤為廣泛。移動設備使用AT命令進行各種操作,如發送短信、撥打電話、查詢網絡狀態等。一些常見的移動通信AT命令包括:

  • 發送短信:AT+CMGS=“PhoneNumber”,用于發送短信到指定號碼。
  • 撥打電話:ATD"PhoneNumber";,用于撥打指定號碼的電話。
  • 查詢網絡狀態:AT+CREG?,用于查詢設備是否注冊到移動網絡。

4.3 嵌入式設備

在嵌入式設備領域,AT命令被用于控制各種硬件模塊和外設。例如,GPS模塊、藍牙模塊等嵌入式設備可以通過AT命令進行配置和控制。

4.4 示例代碼

以下是一個示例代碼,演示如何使用Kotlin模擬發送AT命令并獲取結果,模擬了發送短信的操作:

fun sendATCommand(command: String): String {// 此處為模擬,實際應用中需將AT命令發送至實際設備并獲取結果val simulatedResponse = if (command.startsWith("AT+CMGS=")) {"Message sent successfully!"} else {"Unknown command"}return simulatedResponse
}fun main() {val atCommand = "AT+CMGS=\"1234567890\",Hello"val response = sendATCommand(atCommand)println("Response: $response")
}

上述示例代碼模擬了一個發送短信的AT命令,并根據命令返回相應的模擬結果。實際應用中,開發者需要將AT命令發送至實際移動設備,并從設備獲取真實的結果。

總之,AT命令在不同領域的應用使其成為通信和控制的重要工具。通過理解和掌握不同領域中的AT命令,開發者可以更好地利用這一協議實現各種功能和應用。

5. 常見的AT命令

5.0 AT命令分類
AT命令分為4類:

  • Test 命令:AT+<x>=?
    測試指令類似于命令行里的 help 指令,用于提供該命令的使用信息,以及命令參數的取值范圍。
  • Read 命令:AT+<x>?
    用于查詢該指令對應功能的當前值。
  • Set 命令:AT+<x>=<...>
    設置用戶指定的參數到對應的功能里。
  • Execute 命令:AT+<x>
    執行相關操作。

AT命令是通信領域中的重要工具,用于配置和控制各種設備和模塊。本節將介紹一些常見的AT命令示例,以及每個命令的簡要解釋和示例用法。

5.1 AT+CGSN(獲取IMEI)

AT+CGSN命令用于獲取移動設備的IMEI(國際移動設備標識)號碼,IMEI是設備的唯一標識符。

示例用法:

AT+CGSN

響應:

123456789012345

5.2 AT+CMGS(發送短信)

AT+CMGS命令用于發送短信到指定號碼。

示例用法:

AT+CMGS="1234567890"
> Hello, this is a test message.
Ctrl+Z

響應:

+CMGS: 123
OK

5.3 AT+CREG?(查詢網絡狀態)

AT+CREG?命令用于查詢設備是否已注冊到移動網絡。

示例用法:

AT+CREG?

響應:

+CREG: 0,1
OK

5.4 AT+DIAL(撥號)

ATD命令用于撥打電話到指定號碼。

示例用法:

ATD"1234567890";

(設備將嘗試撥打號碼為"1234567890"的電話)

5.5 AT+CPIN?(查詢SIM卡狀態)

AT+CPIN?命令用于查詢SIM卡的狀態。

示例用法:

AT+CPIN?

響應:

+CPIN: READY
OK

5.6 示例代碼

以下是一個使用Kotlin模擬發送AT命令并獲取響應的示例代碼:

fun sendATCommand(command: String): String {// 此處為模擬,實際應用中需將AT命令發送至實際設備并獲取結果val simulatedResponses = mapOf("AT+CGSN" to "123456789012345","AT+CMGS" to "+CMGS: 123\nOK","AT+CREG?" to "+CREG: 0,1\nOK","AT+CPIN?" to "+CPIN: READY\nOK")return simulatedResponses[command] ?: "Unknown command"
}fun main() {val atCommands = listOf("AT+CGSN", "AT+CMGS", "AT+CREG?", "AT+CPIN?")for (command in atCommands) {val response = sendATCommand(command)println("Command: $command\nResponse: $response\n")}
}

上述示例代碼模擬了發送不同的AT命令,并根據命令返回相應的模擬結果。在實際應用中,開發者需要將AT命令發送至實際設備并獲取真實的響應。

總之,這些常見的AT命令示例涵蓋了移動通信和設備控制的多個方面,開發者可以根據需要使用這些命令來實現各種功能。

6. AT命令的執行與響應

AT命令是通過串行通信接口向設備發送的一系列字符,用于配置和控制設備的各種功能。本節將解釋設備如何執行AT命令并產生響應,并介紹一些常見的響應碼的含義。

6.1 AT命令的執行過程

當一個AT命令被發送至設備時,設備會根據命令進行相應的操作。一般情況下,設備會對命令進行解析和執行,并根據執行結果生成一個響應,然后通過通信接口將響應返回給發送方。

6.2 AT命令的響應

AT命令的響應通常以字符形式返回,常見的響應碼有:

  • OK: 表示命令執行成功。
  • ERROR: 表示命令執行失敗或命令格式錯誤。
  • +CME ERROR: <code>: 用于表示擴展的錯誤情況,后跟錯誤代碼。
  • +CMS ERROR: <code>: 用于表示短信相關的錯誤情況,后跟錯誤代碼。

6.3 示例代碼

以下是一個使用Kotlin模擬發送AT命令并獲取響應的示例代碼:

fun sendATCommand(command: String): String {// 此處為模擬,實際應用中需將AT命令發送至實際設備并獲取結果val simulatedResponses = mapOf("AT+CGSN" to "123456789012345","AT+CMGS" to "+CMGS: 123\nOK","AT+CREG?" to "+CREG: 0,1\nOK","AT+CPIN?" to "+CPIN: READY\nOK","AT+DIAL" to "Dialing...",// 其他AT命令及響應)return simulatedResponses[command] ?: "Unknown command"
}fun main() {val atCommands = listOf("AT+CGSN", "AT+CMGS", "AT+CREG?", "AT+CPIN?", "AT+DIAL")for (command in atCommands) {val response = sendATCommand(command)println("Command: $command\nResponse: $response\n")}
}

上述示例代碼模擬了發送不同的AT命令并獲取相應的模擬結果,包括常見的OKERROR響應。在實際應用中,開發者需要將AT命令發送至實際設備并獲取真實的響應。

總之,AT命令的執行過程涉及設備解析和執行命令,并產生相應的響應。開發者需要根據設備的文檔和規范來理解不同命令的執行方式和響應碼的含義。

7. AT命令的擴展

AT命令的標準覆蓋了許多基本和常見的功能,但不同廠商可能會根據自己的需求擴展和自定義AT命令,以滿足特定的應用場景和設備功能。本節將討論廠商自定義的AT命令和擴展,并介紹AT+命令和AT%命令之間的區別。

7.1 廠商自定義的AT命令

除了標準的AT命令集,不同廠商可能會引入自定義的AT命令來支持特定的功能。這些自定義的AT命令可以用于設備的特定配置、控制和操作。例如,一個嵌入式設備制造商可能會引入用于控制設備唯一功能的AT命令。

7.2 AT+命令和AT%命令的區別

AT命令通常以AT作為前綴,但在某些情況下,廠商可能會使用AT+AT%來區分不同類型的命令。這兩種前綴的命令可能有不同的用途和語法,需要根據設備的文檔來理解其具體含義。

一般來說,AT+命令通常是標準化的命令,符合AT命令的標準規范,而AT%命令可能是廠商自定義的命令。開發者在使用這些命令時需要仔細查閱設備的文檔,了解每個命令的用途和語法。

7.3 示例代碼

以下是一個示例代碼,演示如何發送自定義的AT命令以及區分AT+AT%命令:

fun sendCustomATCommand(command: String): String {// 此處為模擬,實際應用中需將AT命令發送至實際設備并獲取結果val simulatedCustomResponses = mapOf("AT+CUSTOM" to "Custom command executed","AT%ANOTHER" to "Another custom command executed")return simulatedCustomResponses[command] ?: "Unknown command"
}fun main() {val customCommands = listOf("AT+CUSTOM", "AT%ANOTHER")for (command in customCommands) {val response = sendCustomATCommand(command)println("Command: $command\nResponse: $response\n")}
}

上述示例代碼演示了發送自定義的AT命令,模擬了對AT+CUSTOMAT%ANOTHER命令的響應。在實際應用中,開發者需要根據設備的文檔和規范,了解自定義命令的含義和用法。

總之,廠商自定義的AT命令和擴展可以幫助設備實現特定的功能和操作,而AT+AT%命令的區別需要根據設備文檔來理解。開發者在使用這些命令時應遵循設備的規范和要求。

8. AT命令在移動通信中的應用

AT命令在移動通信領域扮演著重要的角色,它被廣泛應用于呼叫控制、短信發送、網絡配置等方面。在這一節中,我們將詳細介紹AT命令在移動通信中的應用,并提供示例代碼來演示如何使用AT命令進行移動通信操作。

8.1 呼叫控制

AT命令在呼叫控制方面發揮著重要作用。通過使用不同的AT命令,設備可以執行撥號、接聽、掛斷等呼叫控制操作。以下是一些常見的呼叫控制AT命令示例:

  • ATD<number>;: 撥打指定的電話號碼。
  • ATA: 接聽當前呼叫。
  • ATH: 掛斷當前呼叫。

8.2 短信發送

AT命令也可以用于短信的發送和管理。開發者可以使用AT命令來編寫應用,實現短信的發送、接收和刪除等操作。以下是一些常見的短信操作AT命令示例:

  • AT+CMGS="<number>": 發送短信給指定的手機號。
  • AT+CMGR=<index>: 讀取指定索引的收件箱中的短信。
  • AT+CMGD=<index>: 刪除指定索引的短信。

8.3 網絡配置

AT命令還可以用于配置和管理設備的網絡連接,例如配置無線網絡、查詢網絡狀態等。以下是一些常見的網絡配置AT命令示例:

  • AT+COPS=?: 查詢可用的運營商列表。
  • AT+CGATT=1: 打開GPRS附著,用于數據連接。
  • AT+CGACT=1,1: 激活PDP上下文以建立數據連接。

8.4 示例代碼

以下是一個簡單的示例代碼,演示如何使用AT命令發送短信和查詢網絡狀態:

fun sendSMSUsingATCommand(number: String, message: String) {// 此處為模擬,實際應用中需將AT命令發送至實際設備并獲取結果println("Sending SMS to $number: $message")
}fun checkNetworkStatusUsingATCommand() {// 此處為模擬,實際應用中需將AT命令發送至實際設備并獲取結果println("Checking network status...")val networkStatus = "Connected"println("Network status: $networkStatus")
}fun main() {val phoneNumber = "1234567890"val messageText = "Hello from AT command!"sendSMSUsingATCommand(phoneNumber, messageText)checkNetworkStatusUsingATCommand()
}

上述示例代碼演示了如何使用模擬的AT命令函數來發送短信和查詢網絡狀態。實際應用中,開發者需要將AT命令發送至實際設備并根據響應處理結果。

總之,AT命令在移動通信中有著廣泛的應用,涵蓋了呼叫控制、短信發送、網絡配置等方面。開發者可以根據設備的文檔和規范,使用適當的AT命令來實現各種移動通信操作。

AT命令在移動通信中的應用非常廣泛。例如,通過AT命令可以發送短信、呼叫指定號碼、查詢網絡狀態等。以下是一個使用AT命令發送短信的Kotlin示例代碼:

fun sendSMS(message: String, phoneNumber: String) {val command = "AT+CMGS=\"$phoneNumber\""// 發送AT命令到設備sendCommandToDevice(command)// 等待設備響應val response = waitForResponse()if (response == ">")sendTextMessage(message)
}

9. AT命令的安全性和注意事項

在使用AT命令時,安全性和注意事項是非常重要的考慮因素。本節將強調在使用AT命令時需要注意的安全性問題,以及提供一些使用AT命令的注意事項,以避免誤操作和不良影響。

9.1 安全性問題

使用AT命令時需要特別注意以下安全性問題:

  • 防止濫用:AT命令具有強大的控制能力,可以對設備進行各種操作。為了防止濫用,開發者應該僅允許有權的應用或用戶執行AT命令。

  • 惡意操作:不當的AT命令操作可能導致設備故障、數據泄露等問題。開發者應該限制對AT命令的訪問,并避免惡意操作。

  • 權限控制:在移動通信設備中,一些AT命令可能需要特定的權限才能執行。開發者應該根據需要設置適當的權限控制,確保只有授權用戶可以執行敏感的AT命令。

9.2 注意事項

在使用AT命令時,開發者應該注意以下事項:

  • 文檔和規范:在使用特定設備的AT命令時,務必仔細閱讀相關文檔和規范。了解每個AT命令的用途、參數和響應是十分重要的。

  • 備份和恢復:在執行可能影響設備配置或數據的AT命令之前,務必進行備份。這樣可以在出現問題時進行恢復操作。

  • 誤操作風險:由于AT命令可以直接操作設備,誤操作可能導致不良影響。開發者應該小心操作,確認每個AT命令的用途和參數。

  • 測試和驗證:在實際應用中使用AT命令之前,建議在測試環境中進行驗證。確保AT命令的操作符合預期并不會引發問題。

9.3 示例代碼

以下是一個示例代碼,演示如何通過權限控制來限制AT命令的執行:

fun executeATCommand(command: String) {// 此處為模擬,實際應用中需根據權限判斷是否執行AT命令val isAuthorized = checkAuthorization()if (isAuthorized) {// 執行AT命令操作println("Executing AT command: $command")} else {println("Unauthorized to execute AT command: $command")}
}fun checkAuthorization(): Boolean {// 模擬權限檢查,實際應用中根據用戶或應用權限來判斷return true
}fun main() {val atCommand = "AT+CMGS=\"1234567890\", \"Hello from AT command!\""executeATCommand(atCommand)
}

上述示例代碼演示了如何通過權限控制函數 checkAuthorization 來限制對AT命令的執行。實際應用中,開發者可以根據用戶或應用的權限來判斷是否允許執行特定的AT命令。

總之,在使用AT命令時,安全性和注意事項都是需要特別關注的方面。通過合理的權限控制、文檔閱讀和驗證,開發者可以確保正確使用AT命令,避免不必要的問題和風險。

10. AT命令的未來發展

隨著通信技術的不斷進步和新興領域的崛起,AT命令也在不斷演化和發展。本節將探討AT命令在新技術和通信標準中的未來發展,特別是在5G、物聯網等領域的應用。

10.1 AT命令在5G中的應用

5G技術的到來為通信領域帶來了革命性的變化,AT命令也在適應新的5G網絡和功能。一些可能的未來發展包括:

  • 更多網絡控制:5G網絡的復雜性可能導致AT命令需要支持更多的網絡控制功能,如對網絡切換、頻譜分配等的控制。

  • 低延遲通信:5G的低延遲通信特性可能會要求AT命令在實時通信和控制方面提供更高效的支持。

  • 多媒體和AR/VR:隨著5G網絡支持更多的多媒體和增強現實/虛擬現實應用,AT命令可能需要擴展以支持這些應用的控制和通信需求。

10.2 AT命令在物聯網中的應用

物聯網(IoT)領域的迅速發展也對AT命令提出了新的挑戰和機遇:

  • 設備連接:AT命令在物聯網中的應用范圍可能會擴展到更多類型的設備,包括傳感器、智能家居設備等,以支持設備之間的連接和控制。

  • 能耗優化:物聯網設備通常需要在有限的電池壽命下運行,因此AT命令可能需要優化以減少能耗,延長設備的使用壽命。

  • 安全性:物聯網中的設備安全性至關重要,AT命令可能需要加強安全性功能,以確保設備和數據的安全。

10.3 示例代碼

以下是一個示例代碼,演示了如何使用AT命令來控制物聯網設備的連接和通信:

class IoTDevice(private val port: SerialPort) {fun sendATCommand(command: String) {val response = executeCommand(command)println("AT Command: $command")println("Response: $response")}private fun executeCommand(command: String): String {// 此處為模擬,實際應用中需通過串口通信發送AT命令并接收響應return "OK"}
}fun main() {val serialPort = SerialPort("COM1")val iotDevice = IoTDevice(serialPort)// 控制物聯網設備發送AT命令iotDevice.sendATCommand("AT+CONNECT")
}

上述示例代碼演示了一個簡單的物聯網設備類 IoTDevice,它通過串口與主機通信。通過調用 sendATCommand 方法,可以向設備發送AT命令并獲取響應。在實際應用中,開發者需要根據設備的通信方式和協議來實現相應的AT命令交互。

總之,AT命令作為通信領域的基礎工具,隨著技術的進步和應用領域的擴展,也在不斷演進和應用。在未來,AT命令可能會在5G、物聯網等領域發揮更多的作用,為設備連接、控制和通信提供更強大的支持。

11. GWN上AT命令的應用

GWN可以通過外掛USB dongle使用3G/GSM Modem撥號上網、發送短信或者發送郵件。
這種方法相當簡單,只使用串行/dev/ttyUSB0端口和"AT"命令來發送短信。
幾乎任何基于OpenWrt版本都可以使用,并且任何支持USB的OpenWrt設備都可以使用。

如果您的設備類似于WL-520Gu,并且具有較小的內置閃存,則需要使用以下模塊構建自己的OpenWrt固件映像(通常通過opkg安裝它們會因為內存不足而失敗):

kmod-usb2 kmod-usb-ohci kmod-usb-serial kmod-usb-serial-option usbutils usb-modeswitch kmod-usb-storage kmod-scsi-core kmod-scsi-cdrom kmod-scsi-generic picocom

當我插入USB調制解調器時,它檢測到scsi驅動器和4個tty設備–/dev/ttyUSB0ttyUSB3

我使用picocom連接到調制解調器:picocom -b 9600 -f n -p n -d 8 -r /dev/ttyUSB0

鍵入"AT"后,得到響應:“OK”

然后使用以下命令發送短信:

AT+CMGF=1 [set pdu mode to text]
AT+CMGS="+12345678900"  [use a valid cell phone number]
Type some message<Ctrl-z> [type a message terminated with <Ctrl-z>]

過了一會兒,我得到了響應:“+CMGS: 18”

使用該設備只需以上操作。

模式切換(mode switch)

對于ZTE新款dongle來說,情況會更復雜一些。ttyUSB設備沒有被檢測到。這是因為許多(大多數?)手機調制解調器會以scsi設備啟動,在Windows中,scsi設備會自動加載驅動程序并切換模式以啟用調制解調器。但在Linux中,您必須執行模式切換。有一個專門用于模式切換的程序,即usb-modeswitch,還有usb-modeswitch-data。在GWN上,我需要使用lsusb(來自usbutils)獲取供應商號和產品ID。然后執行usb-modeswitch -v nnnn -p nnnn。執行此操作后,dmesg將顯示ttyUSB設備0-3,然后我就可以像上面那樣進行操作。

對于其他設備,modeswitch過程可能更復雜。各種網站都有解釋。

MPR-A8–無需modeswitch,在MPR-A8上,使用自行編譯的trunk版本,在串行控制臺上觀察,先識別了scsi驅動器,然后大約30秒后,識別了4個ttyUSB設備。我再次登錄/dev/ttyUSB0(使用microcom),并使用上面展示的命令發送了短信消息。

發送郵件

對于我的供應商T-Mobile,您還可以使用以下命令發送帶有地址號碼"500"的電子郵件(在"AT+CMGF=1"之后):

AT+CMGS="500"
myAddress@myProvider.com/Subject2/sending text.<Ctrl+z>

主題位于“/”或“#”之間。

12. 結論

AT命令作為通信領域中的重要工具,在多個領域和技術中發揮著關鍵的作用。從調制解調器到移動通信,再到物聯網和嵌入式設備,AT命令為通信設備的控制、配置和管理提供了便捷的途徑。本文對AT命令的概念、起源、基本結構、應用領域、執行與響應、擴展以及未來發展進行了深入的探討和介紹。

通過了解AT命令的基本原理和用法,開發者可以在實際應用中靈活地使用AT命令,從而實現各種通信需求。不論是通過標準的AT命令還是廠商自定義的擴展命令,都能夠為開發者提供強大的工具來控制和管理設備。當然,在使用AT命令時也需要注意安全性和注意事項,以確保設備和通信的穩定和安全。

13. 參考資料

  • AT Command Set for GSM Mobile Equipment
  • AT Commands
  • AT Commands for GSM Modems
  • AT Commands in 3GPP
  • Introduction to AT Commands
  • AT Commands in IoT
  • AT Command Tester
  • AT命令介紹

通過參考以上資料,讀者可以進一步深入了解AT命令在通信領域的應用和技術細節。無論是開發調制解調器、移動通信設備還是物聯網設備,AT命令都是不可或缺的工具之一。希望本文能夠為讀者提供關于AT命令的全面了解,并在實際開發中得到有益的應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36008.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36008.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36008.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

redis學習筆記(三)

文章目錄 key操作&#xff08;1&#xff09;查找鍵&#xff08;2&#xff09;判斷鍵是否存在&#xff08;3&#xff09;查看鍵的的值的數據類型&#xff08;4&#xff09;刪除鍵以及鍵對應的值&#xff08;5&#xff09;查看鍵的有效期&#xff08;6&#xff09;設置key的有效期…

springboot整合rabbitmq

rabbitmq的七種模式 Hello word 客戶端引入依賴 <!--rabbitmq 依賴客戶端--><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0</version></dependency> 生產者 imp…

STM32 LoRa源碼解讀

目錄結構&#xff1a; SX1278 |-- include | |-- fifo.h | |-- lora.h | |-- platform.h | |-- radio.h | |-- spi.h | |-- sx1276.h | |-- sx1276Fsk.h | |-- sx1276FskMisc.h | |-- sx1276Hal.h | |-- sx1276LoRa.h | -- sx1276LoRaMisc.h – src |-- fifo.c |-- lora.c |-- …

【解析postman工具的使用---基礎篇】

postman前端請求詳解 主界面1.常見類型的接口請求1.1 查詢參數的接口請求1.1.1 什么是查詢參數?1.1.2 postman如何請求 1.2 ?表單類型的接口請求1.2.1 復習下http請求1.2.2? 什么是表單 1.3 上傳文件的表單請求1.4? json類型的接口請求 2. 響應接口數據分析2.1 postman的響…

紅帽RHCA考試內容解析

紅帽RHCA考試內容解析&#xff1a;最新的RHCA有3大方向體系&#xff0c;考試內容分別為&#xff1a; 一、Platform 平臺技術 RH442&#xff1a;性能調優 使用紅帽企業Linux和紅帽網絡提供的工具來學習Linux的性能調優和規劃的技巧及方法&#xff0c;學習系統架構&#xff0c;…

什么是DNS欺騙及如何進行DNS欺騙

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、什么是 DNS 欺騙&#xff1f;二、開始1.配置2.Ettercap啟動3.操作 總結 前言 我已經離開了一段時間&#xff0c;我現在回來了&#xff0c;我終于在做一個教…

【AI】p54-p58導航網絡、藍圖和AI樹實現AI隨機移動和跟隨移動、靠近玩家揮拳、AI跟隨樣條線移動思路

p54-p58導航網絡、藍圖和AI樹實現AI隨機移動和跟隨移動、靠近玩家揮拳、AI跟隨樣條線移動思路 p54導航網格p55藍圖實現AI隨機移動和跟隨移動AI Move To&#xff08;AI進行移動&#xff09;Get Random Pointln Navigable Radius&#xff08;獲取可導航半徑內的隨機點&#xff09…

Java基礎十 - 設計模式

一、單例 1. 創建 餓漢式 package basic;public class ESingleton {// 先私有化靜態實例private static ESingleton eSingleton new ESingleton();// 私有化構造方法&#xff0c;防止外部實例化private ESingleton(){};// 提供全局訪問方法public static ESingleton geteSi…

時序預測 | MATLAB實現基于LSTM長短期記憶神經網絡的時間序列預測-遞歸預測未來(多指標評價)

時序預測 | MATLAB實現基于LSTM長短期記憶神經網絡的時間序列預測-遞歸預測未來(多指標評價) 目錄 時序預測 | MATLAB實現基于LSTM長短期記憶神經網絡的時間序列預測-遞歸預測未來(多指標評價)預測結果基本介紹程序設計參考資料 預測結果 基本介紹 Matlab實現LSTM長短期記憶神經…

識別和應對內存抖動

關于作者&#xff1a;CSDN內容合伙人、技術專家&#xff0c; 從零開始做日活千萬級APP。 專注于分享各領域原創系列文章 &#xff0c;擅長java后端、移動開發、人工智能等&#xff0c;希望大家多多支持。 目錄 一、導讀二、概覽三、案例分析3.1 使用memory-profiler3.2 使用 cp…

磁粉制動器離合器收放卷應用介紹

張力控制系統的開環閉環應用介紹,請查看下面文章鏈接: PLC張力控制(開環閉環算法分析)_張力控制plc程序實例_RXXW_Dor的博客-CSDN博客里工業控制張力控制無處不在,也衍生出很多張力控制專用控制器,磁粉制動器等,本篇博客主要討論PLC的張力控制相關應用和算法,關于繞線…

什么是 fullgc

GC GC 全稱為garbage collection,中文含義為垃圾回收&#xff0c;在jvm中的含義為回收無用內存空間 Young space 中文名為年輕代或者新生代&#xff0c;為JVM 堆的一部分&#xff0c;由分代GC概念劃分而來&#xff0c;保存生命周期較短的對象 Tenured space 中文名為老年代…

APP外包開發的iOS開發語言

學習iOS開發需要掌握Swift編程語言和相關的開發工具、框架和技術。而學習iOS開發需要時間和耐心&#xff0c;尤其是對于初學者。通過堅持不懈的努力&#xff0c;您可以逐步掌握iOS開發技能&#xff0c;構建出功能豐富、優質的移動應用。今天和大家分享學習iOS開發的一些建議方法…

【數據結構系列】鏈表

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁,持續學…

解決hbase節點已下線,但在status中顯示為dead問題

工作中需要下線4臺hbase小節點&#xff0c;下線完成后使用status 命令查看,有一臺為dead狀態: 使用status detailed 查看&#xff0c;發現“hd-03"這臺節點是dead。 檢查各節點配置文件無誤&#xff0c;并使用 /opt/hbase/bin/hbase-daemon.sh restart master 重啟兩個…

less基本使用

1 less中的變量 //對值進行聲明 link-color: #ccc//定義變量名稱 .{sleName} {}bg: background-color; //定義屬性名稱 .container {{bg}: red; }2 繼承&#xff08;復用重復樣式&#xff09; //繼承必須位于選擇器最后 //繼承選擇器名不能為變量 .a:hover:extend(.b) {}.a {…

走出迷宮(多組輸入bfs)

鏈接&#xff1a;登錄—專業IT筆試面試備考平臺_牛客網 來源&#xff1a;牛客網 題目描述 小明現在在玩一個游戲&#xff0c;游戲來到了教學關卡&#xff0c;迷宮是一個N*M的矩陣。 小明的起點在地圖中用“S”來表示&#xff0c;終點用“E”來表示&#xff0c;障礙物用“#…

淺談人工智能技術與物聯網結合帶來的好處

物聯網是指通過互聯網和各種技術將設備進行連接&#xff0c;實時采集數據、交互信息的網絡&#xff0c;對設備實現智能化自動化感知、識別和控制&#xff0c;給人們帶來便利。 人工智能是計算機科學的一個分支&#xff0c;旨在研究和開發能夠模擬人類智能的技術和方法。人工智能…

Redis: 詳解、使用教程和示例

Redis: 詳解、使用教程和示例 什么是 Redis&#xff1f; Redis&#xff08;Remote Dictionary Server&#xff09;是一個開源的、內存數據存儲系統&#xff0c;它可以用作數據庫、緩存和消息中間件。它支持多種數據結構&#xff0c;如字符串、哈希表、列表、集合、有序集合等…

Hadoop組件

前言 Hadoop 是一個能夠對大量數據進行分布式處理的軟件框架。具有可靠、高效、可伸縮的特點。 HDFS&#xff08;hadoop分布式文件系統&#xff09; 是hadoop體系中數據存儲管理的基礎。他是一個高度容錯的系統&#xff0c;能檢測和應對硬件故障。