使用AT命令進行簡訊收發 電話本查詢

2021-05-12 09:54:43 字數 3106 閱讀 2071

概述:在jb00+bt專案的sms demo中使用了藍芽的dun服務來對手機傳送at命令,主要用at命令實現2個方面的功能:傳送簡訊、查詢手機**本。dun連線成功後,就可以直接對手機傳送at命令了。使用at命令之前,一般通過傳送"at"進行at命令初始化,如果成功返回ok,即說明手機已可正常響應at命令。

除錯at命令有乙個比較簡便的方法就是使用pc的超級終端進行除錯:如果手機有串列埠介面,直接連線到pc的串列埠;如果手機無串列埠介面,可以使用usb藍芽介面卡和手機進行藍芽配對,然後通過在超級終端使用dun服務的藍芽虛擬串列埠傳送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)或電腦來完全控制sms。幾年後,主要的移動**生產廠商諾基亞、愛立信、摩托羅拉和hp共同為gsm 研製了一整套at指令,其中就包括對sms的控制。at指令在此基礎上演化並被加入gsm 07.05標準以及現在的gsm07.07標準,完全標準化和比較健全的標準。如:對sms的控制共有3種實現途徑:最初的block mode;基於at指令的text mode;基於at指令的pdu mode。到現在pdu mode已經取代blockmode,後者逐漸淡出。gsm 模組與計算機之間的通訊協議是一些at指令集,at指令是以at作首,字元結束的字串,at指令的響應資料報在中。每個指令執行成功與否都有相應的返回。其他的一些非預期的資訊(如有人撥號進來、線路無訊號等),模組將有對應的一些資訊提示,接收端可做相應的處理。

示例:cdma modem dte

at< cr>

< lf> ok < lf>

attest< cr>

< cr> error < lf>

如果at指令執行成功,"ok"字串返回;

如果at 指令語法錯誤或at 指令執行失敗,

"error"字串返回。

二、如何使用at命令發簡訊、查詢**本(紅色部分改為實際內容)

1、傳送簡訊步驟:

如果返回"ok"表明手機支援簡訊收發的at命令,否則返回"error"。

step2、選擇簡訊模式為文字模式:at+cmgf=1

如果返回"ok",設定成功。

除了文字模式,還可以設定為pdu編碼模式,其指令為:at+cmgf=0

step3、傳送簡訊目標號碼:at+cmgs=phone number

如果返回"> ",號碼傳送成功,繼續傳送簡訊文字內容。

step4、直接將簡訊文字內容傳送到手機,並以ctrl+z或者對應的ascii碼0x1a作為結束符。

step5、如果短訊息傳送成功,則返回"ok",並顯示資訊號:+cmgs: [,]

如果短訊息傳送失敗,則返回"+cms error: "。

2、查詢**本步驟:

如果返回"ok"表明手機支援**本查詢相關的at命令,否則返回"error"。

step2、選擇查詢**本,設定為手機儲存體:at+cpbs="me"

如果返回"ok",設定成功。

step3、根據聯絡人姓名查詢**號碼:at+cpbf=name

如果查詢成功,則返回相應的描述字段"+cpbf:......."。

這裡也可以根據聯絡人id進行查詢:at+cpbr=id

如果查詢成功,則返回"+cpbr:......."。

三、常用的簡訊、**本命令

1、短訊息命令

at+csms

選擇訊息服務。支援的服務有gsm-mo、sms-mt、sms-cb。

at+cnma

新資訊確認應答。

at+cpms

優先資訊儲存。這個命令定義用來讀寫資訊的儲存區域。

at+cmgf

優先資訊格式。執行格式有text方式和pdu方式。

at+csas

儲存設定。儲存+csas和+csmp的引數。

at+cres

恢復設定。

at+csdh

顯示文字方式的引數。

at+cnmi

新資訊指示。這個命令選擇如何從網路上接收簡訊息。

at+cmgr

讀簡訊。資訊從+cpms命令設定的儲存器讀取。

at+cmgl

列出儲存的資訊。

at+cmgs

傳送資訊。

at+cmgw

寫簡訊息並儲存。

at+cmss

從儲存器中傳送資訊。

at+csmp

設定文字模式的引數。

at+cmgd

刪除簡訊息。刪除乙個或多個簡訊息。

at+csca

簡訊服務中心位址。

at+cscb

選擇單元廣播資訊型別。

at+wcbm

單元廣播資訊標識。

at+wmsc

資訊狀態(是否讀過、是否傳送等等)修正。

at+wmgo

資訊覆蓋寫入。

at+wuss

不改變sms狀態。在執行+cmgr或+cmgl後仍保持unread。

2、**本命令 

at+cpbs

選擇**簿記憶儲存。

at+cpbr

讀取**簿表目。

at+cpbf

查詢**簿表目。

at+cpbw

寫**簿表目。

at+cpbp

**簿**查詢。

at+cpbn

**簿移動動作。這個特殊命令使**簿中的條目前移或後移(按字母順序)

at+cnum

簽署者號碼。

at+waip

防止在下一次重起時初始化所有的**簿。

at+wdcp

刪除呼叫**號碼。

at+csvm

設定語音郵件號碼。

電話本 新增錯誤命令處理

如果輸入錯誤命令,返回提示資訊 2.18.cpp 定義控制台應用程式的入口點。include stdafx.h include include const unsigned int max length of cmd 300 const unsigned int max length of cmd ...

電話本 改進值分離命令和引數

通過cmd 3 0 strcpy file,cmd 4 實現命令的解析,比較詭異。必須要知道命令頭只有三個位元組的秘密 若將來命令格式發生變化,麻煩大了 只有在while迴圈中改動,除了要理解命令解析外,還要理解其他很多語義 另外,其他命令解析,也需要進行strcpy,重複就是罪惡!需要把命令解析的...

android講義9之向電話本進行批處理的插入

contentvalues values new contentvalues 首先向rawcontacts.content uri執行乙個空值插入,目的是獲取系統返回的rawcontactid uri rawcontacturi context.getcontentresolver insert r...