// PDU编码,用于编制、发送短消息 // 输入: pSrc - 源PDU参数指针 // 输出: pDst - 目标PDU串指针 // 返回: 目标PDU串长度 int gsmEncodePdu(const SM_PARAM* pSrc, char* pDst) { int nLength; // 内部用的串长度 int nDstLength; // 目标PDU串长度 unsigned char buf[256]; // 内部用的缓冲区 // SMSC地址信息段 nLength = strlen(pSrc->SCA); // SMSC地址字符串的长度 buf[0] = (char)((nLength & 1) == 0 ? nLength : nLength + 1) / 2 + 1; // SMSC地址信息长度 buf[1] = 0x91; // 固定: 用国际格式号码 nDstLength = gsmBytes2String(buf, pDst, 2); // 转换2个字节到目标PDU串 nDstLength += gsmInvertNumbers(pSrc->SCA, &pDst;[nDstLength], nLength); // 转换SMSC号码到目标PDU串 // TPDU段基本参数、目标地址等 nLength = strlen(pSrc->TPA); // TP-DA地址字符串的长度 buf[0] = 0x11; // 是发送短信(TP-MTI=01),TP-VP用相对格式(TP-VPF=10) buf[1] = 0; // TP-MR=0 buf[2] = (char)nLength; // 目标地址数字个数(TP-DA地址字符串真实长度) buf[3] = 0x91; // 固定: 用国际格式号码 nDstLength += gsmBytes2String(buf, &pDst;[nDstLength], 4); // 转换4个字节到目标PDU串 nDstLength += gsmInvertNumbers(pSrc->TPA, &pDst;[nDstLength], nLength); // 转换TP-DA到目标PDU串
2024-01-17 15:11:00 15KB GPRS 中英文短信 PDU编码
1
基于STM3210C8T6与SIM808C通信模块开发的实施通讯系统,可以实现打电话与发短信等功能
2021-05-05 14:36:15 15.05MB STM32 SIM808C
1