這個發短信問題已經糾結筆者快兩個月了,陸陸續續產生一些奇怪的問題,這裡筆者對使用此模塊要特別注意的地方進行一些總結和說明,希望用這個模塊發短信的朋友們能夠從中得到參考,提高開發進度。
1.與MC8331A不同的是,MC8630是交互式發短信的。什麼意思?
MC8331A是直接一條AT指令,過去,其中包括發送短信的號碼,內容和長度,而8630則不是這樣,它是這樣:
[cpp]
at^hcmgs="15868152889"CR //CR是回車
> //>號是模塊返回的
hello //這是你要發送的數據
[cpp]
0x1a //結束符
[cpp]
^HCMGS:1 //如下是模塊返回的
OK
^HCMGSS:1 www.2cto.com
它是交互式的,首先輸入要發送的號碼,然後等待模塊回應:“>”這個字符,然後在輸入要發送的數據,這樣完成發送短信。
2.第一個問題倒不是什麼難事,最讓人糾結的就是結束符問題,看過手冊的人都知道,如果是英文的要發送0x1a這個結束符,如果是中文要發送0xaa 0x1a這兩個結束符。
大家也許會想這個不是很簡單嗎?是的,一開始筆者也認為很簡單,於是對於構造at指令的最後一個字符的時候賦值為:
[cpp]
cmd[end] = 0x1a
這樣弄吧,很長一段時間程序就一直阻塞在這個地方,經過檢查發現不了問題,為什麼?其實它的意思是:
[cpp]
cmd[end] = "\x1a"
這點要特別注意,估計大多數人都是死在這個地方!
3.AT指令“\r”問題
也許你有過這個錯誤,也許你沒有,但是發送AT指令一定要加"\r",pdf上沒有,也不會特別說明,所以at指令必須有回車符,以保證指令開始的時候是頂頭開始。如:
[cpp]
atCmdSend("AT\r");
這個是小細節問題,不過如果編程編到頭昏眼花的時候,可能不注意,也會讓人百思不得其解