做过短信收发程序的请进(100分)

  • 主题发起人 主题发起人 qiuqiu133
  • 开始时间 开始时间
Q

qiuqiu133

Unregistered / Unconfirmed
GUEST, unregistred user!
做短信收发,有几个问题不明白:
1.接收到的短信,采用的编码方式,是由移动决定的,还是接收方的手机决定的?还是发送方的手机决定的?
2.对于pdu模式下接收短信,有三种编码: 7-bit 编码、8-bit 编码和UCS2 编码。对于前2种,不甚了解,请提供点资料!
 
没做过此类的应用,帮顶一下!
 
你自己去看看短信设备的说明
发送短信的编码应该是统一的,短信设备保存编码的方式可能会不同。
如:编码肯定是国家标准的,保存编码我就看过2种,一是按原2进制保存,一种是按字符显示16进制保存。
 
up.......顶一下
 
1、编码方式是有一个标准的,这个与设备无关。
2、资料我有一些,是关于用AT指令收发短信。网上也有一些发短信的免费控件可以下载,但是觉得稳定性不是很好,我都是用AT指令来发短信。
 
有协议的。
 
大家能否具体讲讲啊
我现在只见到过UCS2 编码的,程序的算法也是针对UCS2来做的
我怕碰到不是UCS2编码的,我程序解码不出!
 
你的程序是怎么用的,是直接连GSM终端还?是连与别人做的程序做接口?又或者是与其它设备连接?
如果用是边GSM终端,你可以下载控件,又或者用AT指令通过串口收发短信。
如果你是与别人的程序做接口,这个好办,大家写好协议就行了。
如果和其它设置作接口,那你找厂家要资料就行了。
------关于GSM 的AT指令的部分资料------------
GSM(Global System for Mobile communication)系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的一种系统。目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式。基于GSM的短信息服务,是一种在移动网络上传送简短信息的无线应用,是一种信息在移动网络上储存和转寄的过程。由于公众GSM网络在全球范围内实现了联网和漫游,建立上述系统不须再组建专用通信网络,所以具有实时传输数据功能的短信应用将得到迅速普及。

1、 MODEM的收发短信的工作原理

现有无线MODEM都支持GSM07.05规定的AT指令集。该指令集是ETSI(欧洲通信技术委员会)发布的,其中包含了对SMS的控制。MODEM一般采用RS232/USB串行通信接口,通信速度可根据需求与无线模块串口数据处理能力设定,PC与MODEM的串行接口建立起物理连接,通过串行口向MODEM收发一系列的AT命令,就能达到控制MODEM收发SMS的目的。GSM的短信息业务SMS利用信令信道传输,这是GSM通信网所特有的。它不用拨号建立连接,把要发的信息加上目的地址发送到短信息服务中心,经短消息服务中心完成存储后再发送给最终的信宿。所以当目的GSM终端没开机时信息不会丢失。每个短消息的信息量限制为140字节。

MODEM通过通信接口实现对SMS的控制共有三种接入协议:Block Mode;基于AT命令的TextMode;基于AT命令的PDU Mode。PDU模式是发送或接收SMS信息的一种方法,短信息正文经过十六进制编码后被传送。目前,PDU Mode应用最为广泛,基本上全国所有的电信局都提供支持PDU Mode的短消息业务。有些地址则不支持Text Mode和Block Mode,这就限制了这两种接入协议的应用,而且PDU Mode已有取代Block Mode的趋势。为了保证系统具有广泛的适用性,本文主要介绍PDU模式收发SMS。

常用AT指令:


AT+CSMS 选择短信息服务

AT+CPMS 选择短信息内存

AT+CMGF 选择短信息格式

AT+CSCA 短信息中心地址
AT+CNMI 显示新收到的短信息
AT+CMGR 读短信息
AT+CMGS 发送短信息
AT+CMGL 列出SIM卡中短信息
AT+CMSS 从SIM内存中发短信息
AT+CMGW 向SIM内存中写入待发短信息
AT+CMGD 删除SIM内存中的短信息
AT+CSCB 选择蜂窝广播信息

2、 短信息的接收
接收短消息实质上就是从SIM或缓存中读出信息。这主要利用AT+CMGR和AT+CMGL两条指令来完成,由于无线模块不同的厂商对AT指令集的解释代码和响应信息不一样,所以首先要确认能否与MODEM建立起通信,一般用AT指令完成此确认;然后用AT+CMGF指令选定短消息的数据格式;在收到MODEM的正确回答反以AT指令完成读出功能。一般用AT+CMGL读取以前的信息,在收到MODEM的RING(振铃)数据时,用AT+CMGR读取实时信息。以下是用H6221-W的接收SMS的一个实例,它说明了PDU模式的应用。

操作过程如下({}内为注释):

发送:AT

回答:OK {已建立联接}
发送:AT+CMGF=0 {选用PDU格式}
回答:OK {允许选择PDU格式}
发送:AT+CMGL=2 {列出已有的短信息}
回答:+CMGL:1,2,,24{1表示信息个数,2表示未发信息,24表示信息总容量}
0D71683108370105F004000D81683179133208F10000026080410033802632184CF682D
95E0DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608
OK
以上这组PDU格式的十六进制字符串,不但包含了短消息的内容,同时包含了发送者的号码、短信息中心号码、短消息发送时间等。
下面对信息内容进行分析:
0D:短信息中心地址(号码)长度。
91:短信息中心号码类型,91是TON/NPI。TON/NPI遵守International/E.164标准,指在号码前需加'+'号;此外还可直有其他数值,但91最常用。
683108370105F0:SMSC 短信息所使用的服务中心号码13807310500。它经过十六进制以字节为单位的高低半字节换位处理,号码是奇数的添F,构成一个HEX字节。
04:PDU类型,文件头字节。
0B:主叫号码长度。
81:主叫号码类型。
3179133208F1:0A主叫号码,也经过了处理,实际号码为13973123801。
00:PID,为协议标识。
00:DCS短信息编码类型是GSM Default Alphabet,即由7位ASCII码移位组成8位十六进制码(octet),其方法见表2。
1sthex B0 A6 A5 A4 A3 A2 A1 A0
2ndhex C1 C0 B6 B5 B4 B3 B2 B1
3rdhex D2 D1 D0 C6 C5 C4 C3 C2
4thhex E3 E2 E1 E0 D6 D5 D4 D3
5thhex F4 F3 F2 F1 F0 E6 E5 E4
6thhex G5 G4 G3 G2 G1 G0 F6 F5
6thhex H6 H5 H4 H3 H2 H1 H0 G6
02608041003380:SCTS短信息发送时间,02/06/08/14:00:33.08。
26:UDL经处理后的8位码(octet)短信息字节长度,它小于消息ASCII码的长度。
32184CF682D95E30DC2B36D3D170A0243106933D97A0243106933D97A02451068B1983492608:UD 编码后的PDU数据,短信息内容“2002/06/08/13:48ID102OKID103OK ID201FAIL”。

3、 短信的发送
与接收短信息一样,发送时也要先建立联接,传送一些初始化指令,然后发送短消息内容。
下面是H6221-W发送一个短信息的例子,内容为:“你好”。其ASCII码为:“4F60597D”。
发送:AT {请求建立联接}
应答:OK {已建立联接}
发送:AT+CMGF=0 {选择PDU模式}
应答:OK
发送:AT+CSMS=0{检测是否支持SMS命令}
应答:OK
发送:AT+CMGS=019{发送短信息,19 octets}
应答:>{允许上传数据}
发送:0011000D91683119325476F8000801044F60597D
AT+CMGS仅说明了SMSC信息内容的长度,在收到回答的>符号后才发送PDU数据串,并以(CTRL^Z)结束。
PDU数据串的内容说明如下:
00 :为SCA预留
11 :FO 设置PDU 类型
00 :MR 发送参考号
0D :DA 目的号码长度
91 :DA 目的号码类型
68 :DA 中国的区号
3119325476F8 :DA 目的号码编码13912345678
00 :PID 发送方式
08 :DCS 编码模式
01 :VP 有效期
PDU 中用户数据前的PDU 头的长度是15 字节
04 :UDL 数据长度
4F60597D:编码后的PDU数据,短信息内容为“你好”。
4、短消息中心号码设置
输入当地移动局的短消息号码:
+8613800xxx500("+"号必须输入),
其中xxx为当地的电话区号。
--- 电话区号是三位的地区:

直接用电话区号替换xxx即可。


例如:深圳电话区号是755,

移动的短消息中心号码是:+8613800755500


--- 电话区号是两位的地区:

请在区号后加"0"补足三位替换xxx。

例如:北京电话区号是10,

移动的短消息中心号码是:+8613800100500

目前联通165网已在全国范围内开展业务。

在使用短信业务之前,需设置短信中心服务号码:


    北京 +8613010112500
    上海 +8613010314500
    深圳 +8613010888500
    山东 +8613010171500
    江苏 +8613010341500
    浙江 +8613010360500
    福建 +8613010380500
    四川 +8613010811500
    重庆 +8613010831500
    海南 +8613010501500
    黑龙江 +8613010980500
    吉林 +8613010911500
    天津 +8613010130500
    河北 +8613010180500
    内蒙古 +8613010950500
    山西 +8613010701500
    安徽 +8613010305500
    新疆 +8613010969500
    青海 +8613010776500

    甘肃 +8613010879500

    宁夏 +8613010796500

    贵州 +8613010788500

    云南 +8613010868500

    湖南 +8613010731500

    湖北 +8613010710500

    广东 +8613010200500

    广西 +8613010591500

    河南 +8613010761500

    江西 +8613010720500

    辽宁 +8613010240500
 
如果你担心编码不一样,做的程序不通用
那么,你就要多收集一些资料,判断一下,应该调用哪个模块。
 
我是软件直接连西门子 mc35at
我就是资料不够,希望各位能提供点资料啊
 
你用google 捜索mc35at你就可以找到这台机的指令集.
我下了来看,它的SMS发送指令也是GSM 7.05.网上的短信控件都可以用.
捜->AT指令发送短信 可以找到你想要的.
 
如果你的软件只是针对西门子,那你自己去啃书

要不,多收集也短信模块的协议
 
7-bit 编码就是我们ASCII编码的前128个字符去掉最高位
如 'A' ascii编码为 01000001 7-bit 编码为 1000001
 
后退
顶部