搜索
bottom↓
回复: 12

gpm900b----短信格式---苹果猫还得您帮忙解决一下

[复制链接]

出0入0汤圆

发表于 2009-5-19 17:30:19 | 显示全部楼层 |阅读模式
一个PDU短信的实例:

        本文以一个实例来解说AT指令发送PDU短信的全过程,假如我要发送下面的短信:  
接收号码:+8613602433649  
短信内容:工作愉快!  
短信中心号码:+8613800200500  

一、短信中心号码处理:用字符串  addr  表示  
    1、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F  
          即  addr  =  " +8613800200500"   
          =>   addr  =  " 8613800200500F"   
    2、将奇数位和偶数位交换。  
          =>   addr  =  " 683108020005F0"   
    3、将短信息中心号码前面加上字符91,91是国际化的意思  
          =>   addr  =  " 91683108020005F0"   
    4、算出  addr  长度,结果除2,格式化成2位的16进制字符串,16  /  2  =  8  =>   " 08"   
          =>   addr  =  " 0891683108020005F0"   

二、手机号码处理:用字符串  phone  
    1、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F  
          即  phone  =  " +8613602433649"   
          =>   phone  =  " 8613602433649F"   
    2、将手机号码奇数位和偶数位交换。  
          =>   phone  =  " 683106423346F9"   

三、短信息部分处理:用字符串  msg  表示  
    1、转字符串转换为Unicode代码,例如“工作愉快!”的unicode代码为  5DE54F5C61095FEBFF01,  
          (转换函数见最后附录)  
    2、将  msg  长度除2,保留两位16进制数,即  5DE54F5C61095FEBFF01  =  20  /  2  =>   " 0A" ,再加上  msg  
          =>   msg  =  " 0A5DE54F5C61095FEBFF01"   

四、组合  
    1、手机号码前加上字符串  11000D91(1100:固定,0D:手机号码的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81),  
          即  phone  =  " 11000D91"   +  phone  
          =>   11000D91683106423346F9  
    2、手机号码后加上  000800  和刚才的短信息内容,000800也写死就可以了  
          即  phone  =  phone  +  " 000800"   +  msg  
          即  11000D91683106423346F9  +  000800  +  0A5DE54F5C61095FEBFF01  
          =>   phone  =  11000D91683106423346F90008000A5DE54F5C61095FEBFF01  
    3、phone  长度除以2,格式化成2位的十进制数  
          即  11000D91683106423346F90008000A5DE54F5C61095FEBFF01  =>   50位  /  2  =>   25  

五、所以要发送的内容为  
      AT+CMGF=0  < 回车>   
      OK  
      AT+CMGS=25< 回车>   
      >   addr+phone  < Ctrl+Z发送>   

六、如果返回不是ERROR,恭喜你,发送成功了^_^  


我按照上面的内容的却发短信成功了,但是gtm900b的文档给出的格式是这样的
AT+CNMI=2,2     NOTE:收到短信,直接给出短信内容
OK
+CMT: "8613902288001",,"07/04/19,22:36:19+32",145,4,0,0,"8613912345500",145,4
TEST

我也看一些源程序,好像是在msg之前还加上自己的手机号还有数据个数
这是怎么回事,有没有详细的资料

出1070入962汤圆

发表于 2009-5-19 17:46:25 | 显示全部楼层
华为的文档中就有描述,可以查阅AT+CMGF命令。短信格式一般有TEXT模式和PDU模式,楼主你的实例是PDU模式(AT+CMGF=0)的,而你贴的华为的例子是TEXT模式(AT+CMGF=1)的。TEXT模式只能发送一些字母数字和标点,不能发送中文,PDU则通吃。TEXT模式每个短信最大可以发送160字节,而PDU模式最大只有70个字符(汉字和字母都当成一个字符)
两种模式GTM900都是支持的,就靠这个CMGF参数,开机上电后默认是CMGF=0,也就是PDU模式。
你可以实验一下,开机上电30秒后:
AT+CGMF=1

AT+CNMI=2,2

然后用你的手机给模块发个短信,都用字母数字,你就看到你贴的类似的结果了+CMT: "8613902288001",,"07/04/19,22:36:19+32",145,4,0,0,"8613912345500",145,4

出0入0汤圆

 楼主| 发表于 2009-5-19 17:54:00 | 显示全部楼层
我如果把用这个AT+CGMF=0用pdu模式 会是什么样的情况。我这里一个手机卡停机了串口线还没找到。你那里方便的话给出pdu出现的情况。

发送是addr+phone  这种格式 接受也是完全一样吗? 发送的时候可是没有发自己的手机号的啊。接受的时候肯定是有的,是不是模块自动加上的还有数据个数

出1070入962汤圆

发表于 2009-5-19 17:59:30 | 显示全部楼层
CMGF=0不就是你自己贴的实例吗,讲得很好了

你给人发短信顺带发自己的手机号码?人家收到短信的肯定能知道你的手机号,这是GSM的功能,和GTM900B无关。至于接收的格式,与发送肯定不一样的,要带上对方手机号,时间戳和编码方式以及短信本身。简单描述还是在华为的AT指令手册接收短信那块。具体PDU接收格式网络上很多。如果你愿意,还可以直接看我贴的短信猫SDK的源代码,里边就有解码接收PDU串的程序。

出0入0汤圆

 楼主| 发表于 2009-5-19 18:05:20 | 显示全部楼层
谢谢了 好像我刚才下载了
+CMT([<alpha>],<length><CR><LF><pdu>
(启用 PDU模式))或者+CMT(<oa>,
[<alpha>],<scts>
[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<le
ngth>]<CR><LF><data> (启用文本模
式));
这个是华为手册上面的alpha oa 这些都是什么意思 在那里能找到他们代表什么意思 这个是接受的格式把 pdu包括什么也没说清楚啊

出1070入962汤圆

发表于 2009-5-19 18:13:07 | 显示全部楼层
华为手册高度抽象化,我自己也是当字典看,查一下某个参数取值的含义,要看他的语法,比较累的。你完全可以找找PDU接收格式什么的,通俗易懂。http://www.gfdtu.com/download/GM/短信开发之PDU格式详解.pdf

出0入0汤圆

 楼主| 发表于 2009-5-19 18:20:40 | 显示全部楼层
好的谢谢了 我看论坛上面说可以根据短信来全球定位的 是不是就卡中心号码啊

出1070入962汤圆

发表于 2009-5-19 18:22:54 | 显示全部楼层
短信来全球定位不了解,说不定就是营运商的增值服务,根据手机注册的基站来定位。和GSM的短信收发无关。

出0入0汤圆

 楼主| 发表于 2009-5-19 18:28:35 | 显示全部楼层
+CMT: "@",22
0891683108302745F9240D91683102CE27
+CMT: "@",22
0891683108301705F0240D9168
我atd100861打不通 但是收到的信息格式是这样的 我删掉一些后面的数据

出0入0汤圆

 楼主| 发表于 2009-5-19 18:30:43 | 显示全部楼层
atd100861
NO CARRIER
ATD100861
NO CARRIER
ATD10086
NO CARRIER

出1070入962汤圆

发表于 2009-5-19 18:31:44 | 显示全部楼层
ATD10086;
漏了分号了

出0入0汤圆

 楼主| 发表于 2009-5-19 18:42:55 | 显示全部楼层
我怎么打不出去电话 但是能收到ring 也能挂断啊

出0入0汤圆

发表于 2010-1-3 19:54:22 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 07:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表