使用python实现短信PDU编码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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指令发送了。

这里是老瘦家的儿子,如需转载请声明,我替老瘦感谢你。

 

以上是关于使用python实现短信PDU编码的主要内容,如果未能解决你的问题,请参考以下文章

长短信 PDU编码

GSM协议PDU编码长短信方法

在线PDU格式编码/解码

如何构建串联的短信 pdu?获取垃圾字符

支持PDU模式下的[和]字符

谁有TC35i与PC收发短信的代码 包括打开串口 启动模块 接收短信发送短信 PDU解码