金笛工业手机论坛  

返回   金笛工业手机论坛 > 开发者乐园 > 短信开发资料

短信开发资料 短信开发技巧,代码分析

回复
 
LinkBack 主题工具 显示模式
旧 2010-07-22   #1 (permalink)
初级会员
 
注册日期: 2010-07-14
帖子: 5
abiandbel 正向着好的方向发展
默认 短信猫命令短信GPS设备无法识别

查询金笛短信猫的手册,其中发送短消息的AT指令为(其中<Ctrl/Z>的Ascii码是[1A]):
AT+CMGS=”13988888888”<CR>Send Message by Text-Mode<Ctrl/Z>
首先尝试并排除了7bit、8bit、UCS2等编码的原因后,突然想到回车符<CR>有Windows、Unix两种形式。Windows中回车符<CR>可以是 [0D]、[0D0A]、[0A]三种方式,Unix中回车符<CR>只能是[0D]。为了确认原因,分别发送了几条短消息到GPS设备,结果如下表所示:
结果
1 AT+CMGS=15051444381[0D0A] *HQ,8002020147,R8,170621,15962179447#[1A] 不识别
2 AT+CMGS=15051444381[0D] *HQ,8002020147,R8,170621,15962179447# [1A] 识别
3 AT+CMGS=15051444381[0D] *ErrorCommand# [1A] 不识别
4 AT+CMGS=15051444381[0D] *HQ,8002020147,R8,170621,15962179447#X[0D0A] [1A] 识别
从上表中可以看出,只要中间的回车是[0D] ,命令就能识别,如果是[0D0A] ,则不能识别,由此可以推测出,GPS设备上短信解析采用Unix形式,取出回车符[0D]后,判定第一个字符是不是[*],然后查找结尾符[#],再解析开始符与结尾符之间的命令。如果成功就接受命令,否则不接受命令。
以此推测,第一行不接受的原因是,回车符[0D] ,后面的第一个字符不是[*],而是[0A] 。
第二行是GPS设备标准的格式。
第三行是因为[*]与[#]之间的命令不合法,所以不接受。
第四行则说明,命令结束符[#]之后的内容是忽略的,有没有都不影响命令的接受与否。
同理,根据直接发短消息不能识别,通过手机转发后能识别的最可能原因是:原来直接发送时,回车符是以[0D0A] 的形式发送的,手机能识别出这种形式,并不会把[0A]存成命令内容的第一个字符。并以[0D] 的形式发送到GPS设备。

解决这个问题:
1、 短信猫发送命令短消息的时候,回车符<CR>须以Unix形式[0D]编码,这样GPS车载设备就能直接识别。

请问,怎么样修改源代码,让回车符<CR>须以Unix形式[0D]编码??????
abiandbel 当前离线   回复时引用此帖
回复

书签


当前查看此主题的会员: 3 (0 位会员和 3 位游客)
 

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为北京时间。现在的时间是 02:34


Powered by vBulletin® 版本 3.8.3
版权所有 ©2000 - 2024,Jelsoft Enterprises Ltd.