超长短信的发送和接收有关问题
发布时间:2010-06-14 16:37:59 文章来源:www.iduyao.cn 采编人员:星星草
超长短信的发送和接收问题
我想通过手机模块SIM4222s发送如下英文短信:“1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890qwertyuiop”
总共为170字符,7-bit编码。我将这条短信分成两条发送,第一条发送152个字符,即“12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012”,
发送的PDU串为:0051000D91685188204848F70000009F0608040001020131D98C56B3DD7039584C36A3D56C375C0E1693CD6835DB0D9783C564335ACD76C3E56031D98C56B3DD7039584C36A3D56C375C0E1693CD6835DB0D9783C564335ACD76C3E56031D98C56B3DD7039584C36A3D56C375C0E1693CD6835DB0D9783C564335ACD76C3E56031D98C56B3DD7039584C36A3D56C375C0E1693CD6835DB0D9783C564
发送成功;
第二条发送18个字符:即“34567890qwertyuiop”,发送的PDU串为:0051000D91685188204848F70000001906080400010202335ACD76C3E560F17B594ECFD7D36F38
发送失败;
从测试结果看,似乎是这样:如果发送的字符为8的整数倍就可以成功,否则发送失败。另外,如果将协议头改为6字节的方式,即“05 00 03 XX MM NN”,在发送字符为8的整数倍时也可以发送,但是接收方显示乱码;
查资料说在这种情况下需要添加填充位,不知道是不是这个原因。
请问在发送超长短信时需要怎么设置才可以,PDU type字段,用户数据长度的计算,编解码需要注意些什么,请高手指点。
我使用的7-bit编码函数:
// psrc: 源字符串指针
// pdst: 目标编码串指针
// srclen: 源字符串长度
// 返回: 目标编码串长度
static int encode_7bit(const char *psrc, uchar *pdst, int srclen)
{
int src; // 源字符串的计数值
int dst; // 目标编码串的计数值
int ch; // 当前正在处理的组内字符字节的序号,范围是0-7
uchar left; // 上一字节残余的数据
// 计数值初始化
src = 0;
dst = 0;
// 将源串每8个字节分为一组,压缩成7个字节
// 循环该处理过程,直至源串被处理完
// 如果分组不到8字节,也能正确处理
while(src<srclen)
{
// 取源字符串的计数值的最低3位
ch = src & 7;
// 处理源串的每个字节
if(ch == 0) {
// 组内第一个字节,只是保存起来,待处理下一个字节时使用
left = *psrc;
} else {
// 组内其它字节,将其右边部分与残余数据相加,得到一个目标编码字节
*pdst = (*psrc << (8-ch)) | left;
// 将该字节剩下的左边部分,作为残余数据保存起来
left = *psrc >> ch;
// 修改目标串的指针和计数值
pdst++;
dst++;
}
// 修改源串的指针和计数值
psrc++;
src++;
}
// 返回目标串长度
return dst;
}
------解决方案--------------------
之前用SIM300C的时候,我是在控制软件上自己做的拆分
------解决方案--------------------
楼上的兄弟能具体说明一下吗?现在卡在这个问题上了。
我也看了手机发送过来的长短信格式,用的协议头是6字节的,我去掉协议头之后用7-bit解码,但是显示乱码;但是我用的解码函数是可以解码普通短信的(短信内容不带协议头的短信)。是不是编解码的时候还要注意些什么,但是没有找到具体的资料。各位有什么经验可以分享吗?多谢!
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于3G模块上网速率的疑问
模块通过的是串口和主板连接,串口最高的波特率是115200bps,那市场上的上网卡是如何实现14Mbps的速率的?
...
-
如何window xp 或win7下的蓝牙编程
想编写一个window xp 或win7下的蓝牙小程序,却无从下手,网上找到的例子,都是在window mobie上的,...
-
有没集成wifi功能的单片机或处理器件芯片
有没集成wifi功能的单片机或处理器件芯片. 我想将该处理器做一个WIFI终端设备来用. 芯...
-
求 一种3G无线路由器,有两个SIM卡插槽,
有没有 一种3G无线路由器,有两个SIM卡插槽,同时支持联通和电信两种3G模式,同时有RJ45接口作为...
-
3G视频服务器
公司开发IPCAM,希望视频可以通过3G无线网络发送,让外访问。
已经开发了相关的板子,让联通的3G卡可以拔号上网,拔号很成...
-
GPRS模块和电脑通信
由于电脑是动态IP的,所以不知道要怎么下手!不可能每次都手动设置IP!
------解决方案--------------------
只...
-
SIM900发送AT+SAPBR=1,1返回错误!!!
用单片机给SIM900发送指令和结果返回如下,到第三条AT+SAPBR=1,1时,就返回+CME ERROR: operation n...
-
不同接口wifi的问题
wifi模块的的接口有很多比如SPI、SDIO、USB等,它们的传输数据的速率(M/S)是一样的吗?能达到多少?如果是要实时传输...
-
PC做服务端,GPRS模块做客户端,PC要配置什么才能与GPRS通信?
我们在做一个智能公交站牌,公交站牌上能显示某一站车的预计到达时间,现在...
-
【求教】华为3G模块EM770W,有哪位高人使用过或了解的吗?
EM770W无线通信模块支持WCDMA 3G
现在EM770W这个模块拿到手了,用串口连接,给...