| 订阅 | 在线投稿
分享
 
 
 

基于Kannel构建SMS网关

来源:互联网  宽屏版  评论
2006-02-01 00:34:34

基于Kannel构建SMS网关

赵冬路

IEI科技(中国)有限公司

Kannel是Opensource的短信、WAP网关,具有较完整的协议支持能力(http://www.kannel.org)。除了能够支持SMPP等标准短信协议之外,还能够支持GSM Modem等简单、易于获得的短信发送服务。Kannel可以作为任何移动门户内容服务提供商应用基础架构中的一套短信发送基础平台。

利用Kannel适配不同种类型的短信提供商的接口(CMPP, SMPP, GSM Modem, HTTP Interface),同时向移动门户提供的应用系统提供统一的短消息发送接口。

目前Kannel能够运行在Unix架构的服务器上。

本文记录了在SUN Solaris 9上调试安装Kannel的过程,基于WaveCom GSM Modem。

一、安装

1.下载下列软件,并按次序依次安装到Solaris系统中 (利用 “pkgadd –d filename” 命令)

autoconf-2.59-sol9-sparc-local

libiconv-1.8-sol9-sparc-local

bison-1.875d-sol9-sparc-local

libxml2-2.6.16-sol9-sparc-local

make-3.80-sol9-sparc-local

gcc-3.4.2-sol9-sparc-local

可以到http://www.sunfreeware.com下载上述软件。

2. 修改csh环境,确保gcc相关的运行库能够正确找到(Boune Shell的同样应修改.profile文件)

修改/.cshrc文件,在其中添加如下内容:

setenv LD_LIBRARY_PATH /usr/lib:/usr/local/lib

set path=(/bin /sbin /usr/bin /usr/sbin /usr/dt/bin /usr/openwin/bin /usr/ucb /etc /usr/ccs/bin /usr/local/bin $ORACLE_HOME/bin .)

3. 应用修改后的环境/.cshrc

运行命令 source /.cshrc

4. 解压缩Kannel软件包 (gateway-1.4.0.zip)

运行如下命令:

unzip gateway-1.4.0.zip

5. 做编译前的配置

运行如下命令:

cd gateway-1.4.0;

./configure

6. 编译Kannel软件包

运行如下命令:

Make

7. 安装Kannel软件包

运行如下命令:

make install

安装成功后,Kannel相关的软件保存在/usr/local/sbin路径

二、配置

1.创建配置文件

在/usr/local/sbin目录下创建kannel.conf.gsm文件,内容如下:

#

# Sample configuration file for Kannel bearerbox on Debian.

# See the documentation for explanations of fields.

#

# HTTP administration is disabled by default. Make sure you set the

# password if you enable it.

group = core

admin-port = 13000

admin-password = bar

admin-deny-ip = "*.*.*.*"

admin-allow-ip = "*.*.*.*"

smsbox-port = 13001

wapbox-port = 13002

wdp-interface-name = "*"

log-file = "/var/log/kannel/bearerbox.log"

box-deny-ip = "*.*.*.*"

box-allow-ip = "*.*.*.*"

group = wapbox

bearerbox-host = localhost

log-file = "/var/log/kannel/wapbox.log"

group = smsc

smsc = at

smsc-id = GSMModem

modemtype = auto

device = /dev/ttyb

#device = /dev/modem

speed = 9600

sim-buffering = true

my-number = +86135xxxxxxxx

sms-center = +8613800100500

validityperiod = 168

#pin = 1234

group = modems

id = iTegno

detect-string = "WAVECOM"

detect-string2 = "MODEM"

speed = 9600

need-sleep = false

group = smsbox

bearerbox-host = localhost

sendsms-port = 13013

global-sender = "86135xxxxxxxx "

sendsms-chars = "0123456789 +-"

access-log = "/var/log/kannel/kannel.access"

log-file = "/var/log/kannel/smsbox.log"

log-level = 0

group = sendsms-user

username = foo

password = bar

user-deny-ip = "*.*.*.*"

user-allow-ip = "10.4.*.*;127.0.0.1"

max-messages = 3

concatenation = true

group = sms-service

keyword = default

text = "No service specified"

group = sms-service

keyword = www

get-url = "http://%S";;

group = sms-service

keyword = complex

get-url = "http://host/service?sender=%p&text=%r";;

accept-x-kannel-headers = true

max-messages = 3

注意红色部分的标示,应根据特定的设备类型、移动服务商进行相关的调整。

2. 连接GSM Modem, 并设置串口

将GSM Modem插入SIM卡后连接到串口,我使用SUN Ultra 10, 9针接口对应串口设备/dev/ttyb。

然后运行admintool, 设置串口参数,设定参数如下图所示:

基于Kannel构建SMS网关

基于Kannel构建SMS网关

3、启动Kannel SMS服务

分别运行如下命令:

cd /usr/local/sbin

./bearerbox –v 0 /usr/local/sbin/kannel.conf.gsm&

./smsbox –v 0 /usr/local/sbin/kannel.conf.gsm&

注意:在运行bearerbox 应注意相关的调试信息,并注意其中的AT指令。下表为正常的启动日志:

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CSMS: (0,1)

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: Phase 2+ is supported

2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: closing device

2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: opening device

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: device opened

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: device opened

2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: init device

2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: speed set to 9600

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: --> ATZ^M

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: --> AT^M

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- AT

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: --> AT&F^M

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- AT&F

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: --> ATE0^M

2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: <-- ATE0

2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+IFC=2,2^M

2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CPIN?^M

2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CPIN: READY

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CSCA="+8613800100500"^M

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CMGF=0^M

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CSMS=?^M

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CSMS: (0,1)

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:47 [6386] [6] INFO: AT2[GSMModem]: Phase 2+ is supported

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CSMS=1^M

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CSMS: 1,1,1

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CNMI=1,2,0,1,0^M

2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 14:57:47 [6386] [6] INFO: AT2[GSMModem]: AT SMSC successfully opened.

2005-09-22 14:57:49 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CPMS?^M

2005-09-22 14:57:49 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CPMS: "SM",0,25,"SM",0,25

2005-09-22 14:57:49 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

三、测试

测试方法非常简单,SMSBox提供基于HTTP的短信发送服务,访问如下URL:
http://hostname:13013/cgi-bin/sendsms?username=foo&password=bar&to=138xxxxxxxxx&text=TestingSMS

其中to填写手机号码,text的短信息内容。

提交后,在bearerbox的日志中应出现如下内容:

005-09-22 15:01:47 [6386] [15] DEBUG: boxc_receiver: sms received

2005-09-22 15:01:47 [6386] [15] DEBUG: send_msg: sending msg to box: <127.0.0.1>

2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: TP-Validity-Period: 2 days

2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CMGS=31^M

2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: <-- >

2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: send command status: 1

2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: --> 0011000B813108316527F90000A81346F9BB3DAD0AAB6CBA3C1C8309B35A2213

2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: --> ^Z

2005-09-22 15:01:50 [6386] [6] DEBUG: AT2[GSMModem]: <-- >

2005-09-22 15:01:50 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CMGS: 3

2005-09-22 15:01:50 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK

2005-09-22 15:01:50 [6386] [6] DEBUG: AT2[GSMModem]: send command status: 0

四、常用GSM Modem 的AT指令

计算机和GSM引擎之间采用AT指令实现互相之间的通信,因此有必要了解一下AT指令的格式和几条常用的指令。更详细的资料可以参考GSM07.05和GSM07.07规范。

计算机发出的AT指令用来建立通信链路,AT指令集的命令格式帧都以AT开头,下面是几个常用的AT指令。

1.设置短消息中心

AT+CSCA=“+8613800270500”回车(具体的号码由当地的运营商决定。)

2.接收短消息

+CMTI:“SM”,X (X表示接收短消息的SIM卡存储号码)

AT+CMGR=X回车 (从X存储区读短消息)

AT+CMGD=X回车 (从X存储区删除短消息)

3.发送短消息

AT+CMGF=1回车(采用文本格式发送,如用PDU格式,则AT+CMGF=0)

AT+CMGS=“+8613xxxxxxxxx”回车

>输入短消息。Crtl+Z结束并发送。

4.重要的指令

ATZ;E 回车 Echo OFF

ATZ;E1回车 Echo ON

AT+CREG?回车 回答x(X=2脱网,X=1注册,X=0状态不明)

AT+COPS?回车 表示SIM卡是否被网络接受

AT+COPS=?回车 显示所有可用的网络。

5.建立语音呼叫

AT+CREG?回车(是否网络注册)

ATD13xxxxxxxxx;回车(语音呼叫和数据呼叫建立的区别在于号码后所接的分号上)

6.改变并保存参数

AT+IPR=2400 回车(改变RS232口的速率至2400bps)

AT&W 回车 (保存已改参数)

7.输入PIN码

AT+CPIN=“xxxx”

通信链路建立以后,计算机就可以发出信息单元帧了,信息的帧格式如下:

其中标志帧开始的帧头为十六进制的10H和02H,标志信息结束的是10H和03H,最后二位是数据部分按16位求和以后取模的结果,用做校验位。对于数据位,为了避免出现错误的结束标志,规定每出现一个10H码字以后,后面插入一个空字符00H。接收端如果收到信息以后,就要相应地去掉空字符。如果接收端收到的数据部分和BCS部分按照16位相加以后的结果不等于0,就表示传输出现错误,所收到的信息就要丢掉。

四、常用GSM Modem 的AT指令

计算机和GSM引擎之间采用AT指令实现互相之间的通信,因此有必要了解一下AT指令的格式和几条常用的指令。更详细的资料可以参考GSM07.05和GSM07.07规范。

计算机发出的AT指令用来建立通信链路,AT指令集的命令格式帧都以AT开头,下面是几个常用的AT指令。

1.设置短消息中心

AT+CSCA=“+8613800270500”回车(具体的号码由当地的运营商决定。)

2.接收短消息

+CMTI:“SM”,X (X表示接收短消息的SIM卡存储号码)

AT+CMGR=X回车 (从X存储区读短消息)

AT+CMGD=X回车 (从X存储区删除短消息)

3.发送短消息

AT+CMGF=1回车(采用文本格式发送,如用PDU格式,则AT+CMGF=0)

AT+CMGS=“+8613xxxxxxxxx”回车

>输入短消息。Crtl+Z结束并发送。

4.重要的指令

ATZ;E 回车 Echo OFF

ATZ;E1回车 Echo ON

AT+CREG?回车 回答x(X=2脱网,X=1注册,X=0状态不明)

AT+COPS?回车 表示SIM卡是否被网络接受

AT+COPS=?回车 显示所有可用的网络。

5.建立语音呼叫

AT+CREG?回车(是否网络注册)

ATD13xxxxxxxxx;回车(语音呼叫和数据呼叫建立的区别在于号码后所接的分号上)

6.改变并保存参数

AT+IPR=2400 回车(改变RS232口的速率至2400bps)

AT&W 回车 (保存已改参数)

7.输入PIN码

AT+CPIN=“xxxx”

通信链路建立以后,计算机就可以发出信息单元帧了,信息的帧格式如下:

其中标志帧开始的帧头为十六进制的10H和02H,标志信息结束的是10H和03H,最后二位是数据部分按16位求和以后取模的结果,用做校验位。对于数据位,为了避免出现错误的结束标志,规定每出现一个10H码字以后,后面插入一个空字符00H。接收端如果收到信息以后,就要相应地去掉空字符。如果接收端收到的数据部分和BCS部分按照16位相加以后的结果不等于0,就表示传输出现错误,所收到的信息就要丢掉。

 
基于Kannel构建SMS网关 赵冬路 IEI科技(中国)有限公司 Kannel是Opensource的短信、WAP网关,具有较完整的协议支持能力(http://www.kannel.org)。除了能够支持SMPP等标准短信协议之外,还能够支持GSM Modem等简单、易于获得的短信发送服务。Kannel可以作为任何移动门户内容服务提供商应用基础架构中的一套短信发送基础平台。 利用Kannel适配不同种类型的短信提供商的接口(CMPP, SMPP, GSM Modem, HTTP Interface),同时向移动门户提供的应用系统提供统一的短消息发送接口。 目前Kannel能够运行在Unix架构的服务器上。 本文记录了在SUN Solaris 9上调试安装Kannel的过程,基于WaveCom GSM Modem。 一、安装 1.下载下列软件,并按次序依次安装到Solaris系统中 (利用 “pkgadd –d filename” 命令) autoconf-2.59-sol9-sparc-local libiconv-1.8-sol9-sparc-local bison-1.875d-sol9-sparc-local libxml2-2.6.16-sol9-sparc-local make-3.80-sol9-sparc-local gcc-3.4.2-sol9-sparc-local 可以到[url=http://www.sunfreeware.com/]http://www.sunfreeware.com[/url]下载上述软件。 2. 修改csh环境,确保gcc相关的运行库能够正确找到(Boune Shell的同样应修改.profile文件) 修改/.cshrc文件,在其中添加如下内容: setenv LD_LIBRARY_PATH /usr/lib:/usr/local/lib set path=(/bin /sbin /usr/bin /usr/sbin /usr/dt/bin /usr/openwin/bin /usr/ucb /etc /usr/ccs/bin /usr/local/bin $ORACLE_HOME/bin .) 3. 应用修改后的环境/.cshrc 运行命令 source /.cshrc 4. 解压缩Kannel软件包 (gateway-1.4.0.zip) 运行如下命令: unzip gateway-1.4.0.zip 5. 做编译前的配置 运行如下命令: cd gateway-1.4.0; ./configure 6. 编译Kannel软件包 运行如下命令: Make 7. 安装Kannel软件包 运行如下命令: make install 安装成功后,Kannel相关的软件保存在/usr/local/sbin路径 二、配置 1.创建配置文件 在/usr/local/sbin目录下创建kannel.conf.gsm文件,内容如下: # # Sample configuration file for Kannel bearerbox on Debian. # See the documentation for explanations of fields. # # HTTP administration is disabled by default. Make sure you set the # password if you enable it. group = core admin-port = 13000 admin-password = bar admin-deny-ip = "*.*.*.*" admin-allow-ip = "*.*.*.*" smsbox-port = 13001 wapbox-port = 13002 wdp-interface-name = "*" log-file = "/var/log/kannel/bearerbox.log" box-deny-ip = "*.*.*.*" box-allow-ip = "*.*.*.*" group = wapbox bearerbox-host = localhost log-file = "/var/log/kannel/wapbox.log" group = smsc smsc = at smsc-id = GSMModem modemtype = auto device = /dev/ttyb #device = /dev/modem speed = 9600 sim-buffering = true my-number = +86135xxxxxxxx sms-center = +8613800100500 validityperiod = 168 #pin = 1234 group = modems id = iTegno detect-string = "WAVECOM" detect-string2 = "MODEM" speed = 9600 need-sleep = false group = smsbox bearerbox-host = localhost sendsms-port = 13013 global-sender = "86135xxxxxxxx " sendsms-chars = "0123456789 +-" access-log = "/var/log/kannel/kannel.access" log-file = "/var/log/kannel/smsbox.log" log-level = 0 group = sendsms-user username = foo password = bar user-deny-ip = "*.*.*.*" user-allow-ip = "10.4.*.*;127.0.0.1" max-messages = 3 concatenation = true group = sms-service keyword = default text = "No service specified" group = sms-service keyword = www get-url = "http://%S";; group = sms-service keyword = complex get-url = "http://host/service?sender=%p&text=%r";; accept-x-kannel-headers = true max-messages = 3 注意红色部分的标示,应根据特定的设备类型、移动服务商进行相关的调整。 2. 连接GSM Modem, 并设置串口 将GSM Modem插入SIM卡后连接到串口,我使用SUN Ultra 10, 9针接口对应串口设备/dev/ttyb。 然后运行admintool, 设置串口参数,设定参数如下图所示: [img]http://dev.csdn.net/images/blog_csdn_net/machozhao/a.jpg[/img] [img]http://dev.csdn.net/images/blog_csdn_net/machozhao/a.jpg[/img] 3、启动Kannel SMS服务 分别运行如下命令: cd /usr/local/sbin ./bearerbox –v 0 /usr/local/sbin/kannel.conf.gsm& ./smsbox –v 0 /usr/local/sbin/kannel.conf.gsm& 注意:在运行bearerbox 应注意相关的调试信息,并注意其中的AT指令。下表为正常的启动日志: 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CSMS: (0,1) 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: Phase 2+ is supported 2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: closing device 2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: opening device 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: device opened 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: device opened 2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: init device 2005-09-22 14:57:35 [6386] [6] INFO: AT2[GSMModem]: speed set to 9600 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: --> ATZ^M 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: --> AT^M 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- AT 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: --> AT&F^M 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- AT&F 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:35 [6386] [6] DEBUG: AT2[GSMModem]: --> ATE0^M 2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: <-- ATE0 2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+IFC=2,2^M 2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CPIN?^M 2005-09-22 14:57:36 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CPIN: READY 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CSCA="+8613800100500"^M 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CMGF=0^M 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CSMS=?^M 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CSMS: (0,1) 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:47 [6386] [6] INFO: AT2[GSMModem]: Phase 2+ is supported 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CSMS=1^M 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CSMS: 1,1,1 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CNMI=1,2,0,1,0^M 2005-09-22 14:57:47 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 14:57:47 [6386] [6] INFO: AT2[GSMModem]: AT SMSC successfully opened. 2005-09-22 14:57:49 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CPMS?^M 2005-09-22 14:57:49 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CPMS: "SM",0,25,"SM",0,25 2005-09-22 14:57:49 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 三、测试 测试方法非常简单,SMSBox提供基于HTTP的短信发送服务,访问如下URL: [url=http://hostname:13013/cgi-bin/sendsms?username=foo&password=bar&to=138xxxxxxxxx&text=TestingSMS]http://hostname:13013/cgi-bin/sendsms?username=foo&password=bar&to=138xxxxxxxxx&text=TestingSMS[/url] 其中to填写手机号码,text的短信息内容。 提交后,在bearerbox的日志中应出现如下内容: 005-09-22 15:01:47 [6386] [15] DEBUG: boxc_receiver: sms received 2005-09-22 15:01:47 [6386] [15] DEBUG: send_msg: sending msg to box: <127.0.0.1> 2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: TP-Validity-Period: 2 days 2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: --> AT+CMGS=31^M 2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: <-- > 2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: send command status: 1 2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: --> 0011000B813108316527F90000A81346F9BB3DAD0AAB6CBA3C1C8309B35A2213 2005-09-22 15:01:48 [6386] [6] DEBUG: AT2[GSMModem]: --> ^Z 2005-09-22 15:01:50 [6386] [6] DEBUG: AT2[GSMModem]: <-- > 2005-09-22 15:01:50 [6386] [6] DEBUG: AT2[GSMModem]: <-- +CMGS: 3 2005-09-22 15:01:50 [6386] [6] DEBUG: AT2[GSMModem]: <-- OK 2005-09-22 15:01:50 [6386] [6] DEBUG: AT2[GSMModem]: send command status: 0 四、常用GSM Modem 的AT指令   计算机和GSM引擎之间采用AT指令实现互相之间的通信,因此有必要了解一下AT指令的格式和几条常用的指令。更详细的资料可以参考GSM07.05和GSM07.07规范。   计算机发出的AT指令用来建立通信链路,AT指令集的命令格式帧都以AT开头,下面是几个常用的AT指令。 1.设置短消息中心 AT+CSCA=“+8613800270500”回车(具体的号码由当地的运营商决定。) 2.接收短消息 +CMTI:“SM”,X (X表示接收短消息的SIM卡存储号码) AT+CMGR=X回车 (从X存储区读短消息) AT+CMGD=X回车 (从X存储区删除短消息) 3.发送短消息 AT+CMGF=1回车(采用文本格式发送,如用PDU格式,则AT+CMGF=0) AT+CMGS=“+8613xxxxxxxxx”回车 >输入短消息。Crtl+Z结束并发送。 4.重要的指令 ATZ;E 回车 Echo OFF ATZ;E1回车 Echo ON AT+CREG?回车 回答x(X=2脱网,X=1注册,X=0状态不明) AT+COPS?回车 表示SIM卡是否被网络接受 AT+COPS=?回车 显示所有可用的网络。 5.建立语音呼叫 AT+CREG?回车(是否网络注册) ATD13xxxxxxxxx;回车(语音呼叫和数据呼叫建立的区别在于号码后所接的分号上) 6.改变并保存参数 AT+IPR=2400 回车(改变RS232口的速率至2400bps) AT&W 回车 (保存已改参数) 7.输入PIN码 AT+CPIN=“xxxx”   通信链路建立以后,计算机就可以发出信息单元帧了,信息的帧格式如下:   其中标志帧开始的帧头为十六进制的10H和02H,标志信息结束的是10H和03H,最后二位是数据部分按16位求和以后取模的结果,用做校验位。对于数据位,为了避免出现错误的结束标志,规定每出现一个10H码字以后,后面插入一个空字符00H。接收端如果收到信息以后,就要相应地去掉空字符。如果接收端收到的数据部分和BCS部分按照16位相加以后的结果不等于0,就表示传输出现错误,所收到的信息就要丢掉。 四、常用GSM Modem 的AT指令   计算机和GSM引擎之间采用AT指令实现互相之间的通信,因此有必要了解一下AT指令的格式和几条常用的指令。更详细的资料可以参考GSM07.05和GSM07.07规范。   计算机发出的AT指令用来建立通信链路,AT指令集的命令格式帧都以AT开头,下面是几个常用的AT指令。 1.设置短消息中心 AT+CSCA=“+8613800270500”回车(具体的号码由当地的运营商决定。) 2.接收短消息 +CMTI:“SM”,X (X表示接收短消息的SIM卡存储号码) AT+CMGR=X回车 (从X存储区读短消息) AT+CMGD=X回车 (从X存储区删除短消息) 3.发送短消息 AT+CMGF=1回车(采用文本格式发送,如用PDU格式,则AT+CMGF=0) AT+CMGS=“+8613xxxxxxxxx”回车 >输入短消息。Crtl+Z结束并发送。 4.重要的指令 ATZ;E 回车 Echo OFF ATZ;E1回车 Echo ON AT+CREG?回车 回答x(X=2脱网,X=1注册,X=0状态不明) AT+COPS?回车 表示SIM卡是否被网络接受 AT+COPS=?回车 显示所有可用的网络。 5.建立语音呼叫 AT+CREG?回车(是否网络注册) ATD13xxxxxxxxx;回车(语音呼叫和数据呼叫建立的区别在于号码后所接的分号上) 6.改变并保存参数 AT+IPR=2400 回车(改变RS232口的速率至2400bps) AT&W 回车 (保存已改参数) 7.输入PIN码 AT+CPIN=“xxxx”   通信链路建立以后,计算机就可以发出信息单元帧了,信息的帧格式如下:   其中标志帧开始的帧头为十六进制的10H和02H,标志信息结束的是10H和03H,最后二位是数据部分按16位求和以后取模的结果,用做校验位。对于数据位,为了避免出现错误的结束标志,规定每出现一个10H码字以后,后面插入一个空字符00H。接收端如果收到信息以后,就要相应地去掉空字符。如果接收端收到的数据部分和BCS部分按照16位相加以后的结果不等于0,就表示传输出现错误,所收到的信息就要丢掉。
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有