sim900a中英文短信發(fā)送步驟
第一:AT+CNMI,用于設置新消息指示。發(fā)送:AT+CNMI=2,1,設置新消息提示,當收到新消息,且 SIM 卡未滿的時候,SIM900A 模塊會返回數(shù)據(jù)給串口,如:+CMTI: “SM”,2,表示收到接收到新消息,存儲在 SIM 卡的位置 2。
第二:AT+CMGF,用于設置短消息模式,SIM900A 支持 PDU 模式和文本(TEXT)模式等 2種模式,發(fā)送:AT+CMGF=1,即可設置為文本模式。
第三:AT+CSCS,用于設置 TE 字符集,默認的為 GSM 7 位缺省字符集,在發(fā)送純英文短信的時候,發(fā)送:AT+CSCS=“GSM”,設置為缺省字符集即可。在發(fā)送中英文短信的時候,需要發(fā)送:AT+CSCS=“UCS2”,設置為 16 位通用 8 字節(jié)倍數(shù)編碼字符集。
第四:AT+CSMP,用于設置短消息文本模式參數(shù),在使用 UCS2 方式發(fā)送中文短信的時候,需要發(fā)送:AT+CSMP=17,167,2,25,設置文本模式參數(shù)。AT+CMGR,用于讀取短信,比如發(fā)送:AT+CMGR=1,則可以讀取 SIM 卡存儲在位置1 的短信。
第五:AT+CMGS, 用于發(fā)送短信, 在“GSM”字符集下, 最大可以發(fā)送 180 個字節(jié)的英文字符,在“UCS2”字符集下,最大可以發(fā)送 70 個漢字(包括字符/數(shù)字) 。該指令我們在后面詳細介紹。
第六:AT+CPMS, 用于查詢/設置優(yōu)選消息存儲器, 通過發(fā)送: AT+CPMS?, 可以查詢當前 SIM卡最大支持多少條短信存儲,以及當前存儲了多少條短信等信息。如返回:+CPMS:
中英文短信的發(fā)送我們將利用 ATK-SIM900A 模塊來給指定手機號碼發(fā)送一條中英文短信。同樣,我們用到 AT+CMGS 指令來發(fā)送中英文短信。還是采用文本模式發(fā)送,發(fā)送步驟如下:
首先,發(fā)送:AT+CMGF=1,設置為文本模式。然后,發(fā)送:AT+CSMP=17,167,2,25,置文本模式參數(shù)。最后發(fā)送:AT+CSCS=“UCS2”,設置為 UCS2 編碼字符集。
此時,我們便可以發(fā)送 AT+CMGS 指令來發(fā)送中英文短信了,不過由于使用了 UCS2字符集,所有字符/數(shù)字/漢字,都必須使用 UNICODE 編碼。假定我們要給手機號:13922348612,發(fā)送一條中英文短信,內(nèi)容為“ATK-SIM900A 中英文短信發(fā)送測試” 。我們首先要用:漢字 UNICODE 互換工具.exe,
這個軟件將號碼和發(fā)送內(nèi)容轉(zhuǎn)換為 UNICODE 字符串(需要手動去掉空格) ,得到:13922348612,轉(zhuǎn)換后的 UNICODE 字符串(去掉空格后)為:00310033003900320032003300340038003600310032
ATK-SIM900A 中英文短信發(fā)送測試,轉(zhuǎn)換后的 UNICODE 字符串為:00410054004B002D00530049004D00390030003000414E2D82F1658777ED4FE153D190016D4B8BD5
然后,發(fā)送:AT+CMGS=“00310038003100370035003600380034003700390039”,這個指令, 然后模塊返回: 》, 此時我們輸入我們需要發(fā)送的內(nèi)容: 00410054004B002D00530049004D00390030003000414E2D82F1658777ED4FE153D190016D4B8BD5。
注意,此可以不用發(fā)送回車了。在發(fā)送完內(nèi)容以后,最后以十六進制(HEX)格式單獨發(fā)送(不用添加回車) :1A(即0X1A) ,啟動一次短信發(fā)送,如圖 2.3.4.4.1 所示:
等到模塊發(fā)送完成,返回如:+CMGS: 158,表示短信已成功發(fā)送。此時,我們在目標手機(13922348612)上面,就可以看到模塊發(fā)送過來的中英文短信了。
英文短信的發(fā)送我們將利用 ATK-SIM900A 模塊來給指定手機號碼發(fā)送一條英文短信。這里,我們用到 AT+CMGS 指令來發(fā)送短信,發(fā)送全英文/數(shù)字短信的時候,我們先設置為:“GSM”字符集(AT+CSCS=“GSM”) ,文本模式(AT+CMGF=1) 。
假設我們要給手機號: 13922348612, 發(fā)送一條短信, 則發(fā)送: AT+CMGS=“13922348612”,然后模塊返回:》,此時我們輸入我們需要發(fā)送的內(nèi)容:ATK-SIM900A MSG SEND TEST,注意, 此可以不用發(fā)送回車了。 在發(fā)送完內(nèi)容以后, 最后以十六進制(HEX)格式單獨發(fā)送 (不
用添加回車) :1A(即 0X1A) 1 ,即可啟動一次短信發(fā)送。注 1:0X1A, 即 “CTRL+Z” 的鍵值, 用于告訴 SIM900A, 要執(zhí)行發(fā)送操作。 另外還可以發(fā)送: 0X1B,即“ESC”的鍵值,用于告訴 SIM900A,取消本次操作,不執(zhí)行發(fā)送。
稍等片刻,在短信成功發(fā)送后,模塊返回如:+CMGS: 156,的確認信息,表示短信成功發(fā)送,其中 156 為模塊內(nèi)部的短信計數(shù)器,一般不用理會。如圖 2.3.4.2.1 所示:
從上圖可以看出,我們在短信發(fā)送的最后,輸入的是十六進制的 1A,將這個數(shù)據(jù)發(fā)送給 SIM900A 模塊后,啟動短信發(fā)送,然后發(fā)送成功后,模塊返回了:+CMGS: 156,說明短信發(fā)送成功了。