本文详细解析了中英文短信PDU(协议数据单元)编码原理,并提供了可以直接下载和使用的完整版本文档。
发送短信时使用SM_PARAM结构体初始化如下:`pSrc_sms = {{0},{86133333},0x00,GSM_UCS2,{0},{4f60597d},0};`
- SCA(服务中心地址)设置为 0 即可,表示使用 SIM 卡默认的短信发送功能。
- TPA(目标电话号码),在中国区号应设为86。
- TP_PID 设置为标识符 0 表示标准点到点通信方式。
- TP_DCS 使用 GSM_UCS2 编码格式,即 Unicode 编码形式。
- TP_SCTS 可以设置为空值 NULL,在接收短信时会用到该字段来记录时间戳信息。
- TP_UD 是要发送的具体消息内容。例如,“你好”转为Unicode编码是4f60597d(去掉\u)。汉字需要提前转换,如果是字母,则可以使用Ascii2Unicode工具进行转换。
在实际操作中:
1. 使用`gsmEncodePdu()`函数对短信数据进行编码,并获取到编码后的长度。
2. 通过发送AT指令设置要发送的SMS消息大小:`sprintf(GSMSMS_buff,AT+CMGS=%d,size_sms);`
3. 发送此 AT 指令,等待返回确认信息>后继续:
4. 将实际短信内容(之前编码过的数据)传输给手机模块。
5. 最终发送结束符 0x1a。