PDU短信的发送与接收

武鹏 2014-01-16 11:13:53
单片机短信数据编码方案(USC2的编码与解码),主要是中文短信的解码、编码的,不能用库函数MultiByteToWideChar(或WideCharToMultiByte),求大神讲解
...全文
130 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2014-01-16
  • 打赏
  • 举报
回复
那就得看USC2是如何编解码的。
武鹏 2014-01-16
  • 打赏
  • 举报
回复
////////////////////////////////////////////////////////////////////////// //函数名: gsmEncodeUcs2 //功能描述: UCS2编码 //入口参数: pSrc: 源字符串指针 // nSrcLength: 源字符串长度 //出口参数: pDst : 目标编码串指针 //函数返回值:目标编码串长度 ////////////////////////////////////////////////////////////////////////// int gsmEncodeUcs2(const char* pSrc, unsigned char* pDst, int nSrcLength) { int nDstLength; // UNICODE宽字符数目 U8 wchar[128]; // UNICODE串缓冲区 // 字符串-->UNICODE串 nDstLength = MultiByteToWideChar(0, 0, pSrc, nSrcLength, wchar, 128); // 高低字节对调,输出 for(int i=0; i<nDstLength; i++) { *pDst++ = wchar[i] >> 8; // 先输出高位字节 *pDst++ = wchar[i] & 0xff; // 后输出低位字节 } // 返回目标编码串长度 return nDstLength * 2; } //////////////////////////////////////////////////////////////////////// // 函数名: gsmDecodeUcs2 // 功能描述: UCS2解码 // 入口参数: pSrc: 源编码串指针 // nSrcLength: 源编码串长度 // 出口参数: pDst : 目标字符串指针 // 函数返回值:目标字符串长度 //////////////////////////////////////////////////////////////////////// int gsmDecodeUcs2(const unsigned char* pSrc, char* pDst, int nSrcLength) { int nDstLength; // UNICODE宽字符数目 U8 wchar[128]; // UNICODE串缓冲区 // 高低字节对调,拼成UNICODE for(int i=0; i<nSrcLength/2; i++) { wchar[i] = *pSrc++ << 8; // 先高位字节 wchar[i] |= *pSrc++; // 后低位字节 } // UNICODE串-->字符串 nDstLength = WideCharToMultiByte(0, 0, wchar, nSrcLength/2, pDst, 160, NULL, NULL); // 输出字符串加个结束符 pDst[nDstLength] = '\0'; // 返回目标字符串长度 return nDstLength; }
现在MultiByteToWideChar和WideCharToMultiByte两个函数用不了,不知道如何改
metohang 2014-01-16
  • 打赏
  • 举报
回复
pdu格式里面就两种编码格式,一种用UTF8,一种用USC2,单片机一般都支持USC2编码,所以把UTF8的编码转换成USC2 UTF8转USC2很好转,可根据协议自己写一个
武鹏 2014-01-16
  • 打赏
  • 举报
回复
主要是字符转宽字符不知道怎么写,网上一般都是用MultiByteToWideChar(或WideCharToMultiByte)这个库函数,但是单片机上用不了这个函数

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧