使用python實現短信PDU編碼


前幾天入手一個3G模塊,便倒騰了一下。需要發送中英文混合短信,所以采用PDU模式(不了解google ^_^)。

最大問題當然就是拼接PDU編碼(python這么強大,說不定有模塊),果不其然找到一個smspdu模塊(鏈接:https://pypi.python.org/pypi/smspdu)。但是測試發現生成的編碼和模塊文檔要求有差別的,淚奔……但還是可以看一下源碼的實現方式的。剩下的就是自己加工一下。不羅嗦,上代碼:

from smspdu import SMS_SUBMIT

def format_message(phone_number, message_content):
  tpdu = []
  if phone_number and message_content:

    #+8613010112500為短信中心號碼,通過AT指令可查詢
    pdu = SMS_SUBMIT.create('+8613010112500', phone_number, message_content)

    #00:設置使用默認短信中心號碼,11:普通GSM格式,00:默認發送號碼
    tpdu.append('001100')

    #91:+8613000000000格式 81:13000000000格式
    formatAddress = pdu.encodeAddress().replace('0B91', '0B81')
    tpdu.append(formatAddress)

    #00:協議標識,00為普通GSM類型;18:編碼方式為UCS2; 01:有效時間
    tpdu.append('000801')

    #短信內容長度接短信內容unicode編碼
    tpdu.append('%02X' % pdu.tp_udl)
    tpdu.append(''.join(['%02X' % ord(c) for c in pdu.tp_ud]))
  return ''.join(tpdu)

  

剩下的就是通過AT指令發送了。

這里是老瘦家的兒子,如需轉載請聲明,我替老瘦感謝你。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM