如何用SIMcom A7670C GSM模块发送以字母数字文本为发件人的短信?
SIMcom A7670C 自定义短信发件人(字母数字标识)解决方案
关键前提
自定义字母数字发件人(比如BLUDRT)不是模块本身能单独实现的——必须运营商支持短信网关提交权限。普通终端发送的MO短信,运营商会强制把发件人替换为SIM卡号码,你之前用PDU报错,要么是格式不对,要么是没走网关模式。
实操步骤
1. 开启UCS2编码
先让模块支持Unicode编码,因为自定义标识需要用UCS2传输:AT+CSCS="UCS2"
返回OK就没问题。
2. 替换短信中心为运营商网关地址
普通短信中心是给终端短信用的,要自定义发件人得用运营商提供的专属短信网关地址(不同地区/运营商不一样,需企业资质申请后获取)。设置命令:AT+CSCA="网关地址"
3. 构造网关模式的PDU数据包
和普通终端PDU不同,网关PDU需要在用户数据头里指定自定义发件人。给你一个适配需求的示例PDU(目标号码替换成实际接收号):
- 自定义发件人:
BLUDRT - 短信内容:
Your Shipment is Delivered. - 示例PDU(字节数需根据实际内容调整):
0011000D916831XXXXXXXXXX0008001E5B424C554452545D0000000000000000596F757220536869706D656E742069732044656C6976657265642E
PDU字段核心解释:
11:开启用户数据头标识(必须开启,才能嵌入自定义发件人)08:指定UCS2编码格式5B424C554452545D...:自定义发件人BLUDRT的UCS2编码头- 后半段是短信内容的UCS2编码
4. 发送PDU短信
执行命令:AT+CMGS=30 (30是PDU的字节数,要和你构造的数据包长度严格匹配)
模块返回>后,粘贴PDU内容,最后按Ctrl+Z触发发送。
报错排查
- 直接返回
ERROR?优先检查这几点:- 你的SIM卡是否有运营商的自定义发件人权限?个人SIM卡基本不支持,需企业资质申请短信签名
- PDU的长度计算是否准确?TP-UDL字段必须和实际用户数据字节数一致
- 短信网关地址是否正确,模块能否正常访问该网关
替代方案(无需运营商权限)
如果拿不到网关权限,只能在短信内容开头加标识,比如:[BLUDRT] Your Shipment is Delivered.
虽然发件人还是SIM卡号码,但用户能快速识别来源。
内容的提问来源于stack exchange,提问作者Heisenberg




