天天看點

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    

繼續閱讀