GSM模塊_PDU中文格式發送短信息

本文以一個實例來解說AT指令發送PDU短信的全過程,假如我要發送下面的短信: 

接收號碼:+8613602433649 

短信內容:工作愉快! 

杭州短信中心號碼:

聯通:+8613010360500

移動:+8613800571500

一、短信中心號碼處理:用字符串 addr 表示 

1、將短信息中心號碼去掉+號,看看長度是否爲偶數,如果不是,最後添加F 

即 addr = "+8613800200500" 

=> addr = "8613800200500F" 

2、將奇數位和偶數位交換。 

=> addr = "683108020005F0" 

3、將短信息中心號碼前面加上字符91,91是國際化的意思 

=> addr = "91683108020005F0" 

4、算出 addr 長度,結果除2,格式化成2位的16進制字符串,16 / 2 = 8 => "08" 

=> addr = "0891683108020005F0"

二、手機號碼處理:用字符串 phone 

1、將手機號碼去掉+號,看看長度是否爲偶數,如果不是,最後添加F 

即 phone = "+8613602433649" 

=> phone = "8613602433649F" 

2、將手機號碼奇數位和偶數位交換。 

=> phone = "683106423346F9"

三、短信息部分處理:用字符串 msg 表示 

1、轉字符串轉換爲Unicode代碼,例如“工作愉快!”的unicode代碼爲 5DE54F5C61095FEBFF01

2、將 msg 長度除2,保留兩位16進制數,即 5DE54F5C61095FEBFF01 = 20 / 2 => "0A",再加上 msg 

=> msg = "0A5DE54F5C61095FEBFF01"

四、組合 

1、手機號碼前加上字符串 11000D91(1100:固定,0D:手機號碼的長度,不算+號,十六進制表示,91:發送到手機爲91,發送到小靈通爲81), 

即 phone = "11000D91" + phone 

=> 11000D91683106423346F9 

2、手機號碼後加上 000800 和剛纔的短信息內容,000800也寫死就可以了 

即 phone = phone + "000800" + msg 

即 11000D91683106423346F9 + 000800 + 0A5DE54F5C61095FEBFF01 

=> phone = 11000D91683106423346F90008000A5DE54F5C61095FEBFF01 

3、phone 長度除以2,格式化成2位的十進制數 

即 11000D91683106423346F90008000A5DE54F5C61095FEBFF01 => 50位 / 2 => 25

五、所以要發送的內容爲

 //PDU格式發送

AT+CMGF=0 <回車>//格式選擇,PDU

OK 

AT+CMGS=25<回車> //信息長度

> addr+phone <Ctrl+Z發送>//發送完PDU編碼之後,在不回車的情況下以Hex的格式發送0x1A

//文本格式發送

AT+CMGF=1 <回車>//格式選擇,文本

OK 

AT+CMGS=+86139xxxxxxxx<回車> //輸入手機號

>ABCD1234(短信信息,回車)

hex格式下發送0x1A 

注意點:格式選擇和信息發出後的換行操作

六、PDU格式在線轉換鏈接:

http://www.multisilicon.com/blog/a22201774~/pdu.htm    

發佈了17 篇原創文章 · 獲贊 19 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章