短信猫收发短信的原理,资费和我们的平常所用的手机是一样的,但因为短信猫专注于短信收发应用,所以相对于手机,短信猫在短信收发的速度要更快,可靠性更高,实时发送等优点,在目前的企业短信中应用广泛。
标准短信猫=短信猫硬件+短信猫二次开发包。标准短信猫是短信猫硬件和软件的有机结合体
。
GSM-SM
Modem
短信猫是由中国移动商务网开发的基于无线方式进行短信收发的通信网关设备。使用该设备可以轻松地实现通过本地无线网络快速发送和接收手机短信的功能,从而达到使用户(企业系统)无需上网即能动态发送和接收短信。
[编辑本段]短信模块
短信模块,俗称短信猫,是一种基于无线GSM技术的
工业级的MODEM,是一种内嵌GSM无线通信模块,插入移动运营商的手机SIM卡,可以与移动运营商的短信中心建立无线连接,本地通过与PC的连接可以实现计算机控制应用系统实现自由的短信收发。
短信猫常用的核心模块有:西门子和WAVECOM。其中西门子短信猫又分为手机版和工业模块版两种,手机板主要是3508。西门子工业短信猫主要是TC35
、TC35i、MC55/56、MC39i、TC37
MC75等类型;WAVECOM主要有Q2303A、Q2403A、Q2358C、Q2406B、M1206B等类型。短信猫通过串口RS232、USB、RJ45、PCI等与计算机连接,可以通过AT指令控制进行短信收发的设备。对于短信猫的开发应用,有以下几种方式:
1)直接使用AT指令:通过串口用AT指令驱动短信模块收发短信,这是最底层的开发模式,需要对短信模块的AT指令相当熟悉;
2)短信猫开发包:短信猫厂商基于串口AT指令集成的二次开发包,开发商只需直接调用短信收发API、dll、OCX即可;
3)短信猫通信中间件:短信猫厂商提供的基于数据库接口的短信收发后台服务软件,是一种更高级的短信开发解决方案。
基于短信猫的短信二次开发大都遵循如下图所示的开发架构:
1)
短信相关应用需要发送短信时,需要将短信接收者与内容提交到短信发送队列;同时从短信接收队列中读取收到的短信;
2)
软件开发商需要开发独立的短信后台服务,从短信发送队列中读取短信,调用短信猫开发包发送短信;同时通过调用短信猫开发包读取设备已收到的短信,放入短信接收队列;
3)
短信猫开发包内部实际上是通过串口通讯与短信猫连接,通过AT指令驱动短信模块收发短信。
因为短信猫是串行通讯设备,必须串行提交短信发送,而且提交后必须等到其有回应后才能提交下一条,否则会造成短信猫死机。特别是现在大部分应用都是多用户应用,如果存在多线程同时并发操作短信模块,也会造成短信猫死机。即使是针对同一短信模块的收发,也必须为一前一后串行,而不能通过收发两个并发线程来
操作。因此建议使用短信队列,常用的方式就是使用数据库表。
[编辑本段]具体运营
企业办公:会议通知短信确认、短信日程提醒等
销售数据采集:基于GSM
MODEM 实现销售数据的实时采集
证券营业部:中签短信通知、实时解盘资讯短信、股评短信等
证券投资咨询机构:发布股评短信、股票买卖通知短信、实时解盘短信等
银行:短信客户关怀、短信帐务变动通知等
保险:保单查询、续费提醒、客户生日提醒、保费计算等
商品流通业:商场促销活动通知、会员管理、供应商管理等
影戏院:短信影院信息查询、短信订票等
制造业企业:短信
CRM 、短信商品防伪
物流行业:收单短信确认、到货短信确认、车辆调配等
汽车销售服务中心:短信会员管理、保养提醒、活动通知等
考试培训中心:培训通知、考分查询等
餐饮行业:促销活动通知、
VIP 客户管理、短信抽奖
会员制俱乐部:活动通知、积分查询、客户关怀等
移动运营商:
VIP 客户管理、短信营销
医院:短信挂号、住院病情通知、看病咨询短信等
电力:监控信息通知、客户缴费通知等
邮政行业:收汇确认通知、
EMS 短信确认等
报纸杂志:广告客户联系、读者联系
电广传媒:短信竞猜、短信抽奖、短信互动
旅游公司:短信会员管理、旅游信息发布等
酒店宾馆:短信会员管理等
批发商贸公司:销售数据采集等
房地产行业:房讯通知短信、节日问候短信、入住通知等
物业管理公司:客户关怀、缴费通知短信、小区公告短信等
短信猫常用基本AT指令
AT指令短信猫通讯中起着重要的作用,能够通过AT指令控制手机的许多行为,包括拨叫号码、按键控制、传真、GPRS等。
AT指令基本用法:
1.
测试命令(Test
Command)
在AT指令后面加上"=?"即构成测试命令。例如"AT+CSCS=?"会列举出所有支持的字符集。
2.
读取命令(Read
Command)
在AT指令后面加上"?"即构成读取命令。例如"AT+CSCS?"会列举出当前设置。
3.
执行命令(Execute
Command)
一般而言在AT指令后加上"="及命令参数即可。有些命令例如AT+CMGR命令没有参数,直接就可以执行。
AT
测试连接是否正确,正确返回OK
ATE0
关闭回显。程序初始化AT部分首先关闭回显。
ATE1
打开回显。使用超级终端测试命令时打开。
ATZ
在超级终端中输入可见。
AT+CGMI
得到厂商信息
AT+CGMR
得到版本号
AT+CGSN
得到序列号(IMEI)
AT+CIMI
得到手机IMSI号码
AT+CSCS
获取、设置当前字符集。可设置为GSM或UCS2
AT+CBC
获取电量
AT+CCLK
获取设置手机时钟
AT+CNUM
机身号码。分为线路一和线路二
AT+CSQ
当前信号
AT+COPS
网络营运商
AT+CSCA
短信中心号码
AT+CPMS
选择短信储存地点。可选择ME(SIM卡)和MT(机身)
AT+CMGL
列出指定状态的短信息的PDU代码
AT+CMGR
列出指定序号的短信息PDU代码
AT+CMGS
发送短信
AT+CMGD
删除指定的短信
AT+CMGF
短信格式。分为Text模式和PDU模式
AT+CNMI
设置新短消息通知电脑端
AT+CSCA
短信中心
AT+IPR?
显示串口波特率
AT+IPR=19200更改串口波特率为19200
ATD打电话
ATA接电话
ATH挂电话
at+cnmi=2,1,0,0,0
//短信存入SIM卡
at+cnmi=2,2,0,0,0
//短信直接串口输出,不存SIM卡
"AT+CNMI"指令语法为
AT+CNMI=[<mode>[,<mt>[,<bm>[,<ds>[,<bfr>]]]]]
mode
- 通知方式:
0
–
不通知TE。
1
–
只在数据线空闲的情况下,通知TE;否则不通知TE。
2
–
通知TE。在数据线被占用的情况下,先缓冲起来,待数据线空闲,再行通知。
3
–
通知TE。在数据线被占用的情况下,通知混合在数据中一起传输。
mt
- 消息储存或直接转发到TE:
0
–
储存到默认的内存位置(包括class
3)
1
–
储存到默认的内存位置,并且向TE发出通知(包括class
3)
2
–
对于class 2,储存到SIM卡,并且向TE发出通知;对于其它class,直接将消息转发到
TE
3
–
对于class 3,直接将消息转发到
TE;对于其它class,同mt=1
bm,
ds, bfr的含义,请参考相关标准文档。一般不需要去关心它们。
在程序中具体实现时,使用mode=2,
mt=1,比较简单。对所有类型的短消息,只要在收到ME送来的"+CMTI"通知后,用"AT+CMGR"指令读取消息内容就行了。
AT&W
保存设置
PDU发送短信简明分析
1.
如何与GSM MODEM建立通信联系
您可用诸如Windows下的超级终端或Pcomm等终端仿真软件,将计算机的串行口与GSM
MODEM的串行口用电缆直接连接。
2.
不能与GSM MODEM进行正常的通信或总是在仿真终端上出现乱码
检查您的串口是否保证正常连接,计算机的串口引线与GSM
MODEM的串口引线应是一一对应的。GSM
MODEM与仿真终端应设置相同的通信速率。
但您初次使用GSM
MODEM时,请在仿真终端上设置为通信速率9600bps、8位数据位、无较验位、1位停止位。
3.
如果您想在出错后得到错误代码号,需将GSM
Modem作如下设置:
AT+CMEE=1
4.
发送短消息后,收到出错信息+CMS
ERROR 512
表示您的GSM
MODEM在发送短消息的同时它收到了新的短消息,发送短消息被拒绝,您需要重新发送此条短消息。
5.
发送短消息后,收到出错信息+CMS
ERROR 513
您遇上了下面问题中的一种:
a)
您的GSM MODEM失去了无线链路连接;
b)
在发送完短消息后的28秒内,您的GSM
MODEM没有收到短消息中心送来的接收确认+CMGS:〈顺序号〉;
c)
在送出请求建立发送短消息的控制信道指令后的42秒内,您的GSM
MODEM没有收到基站送来的确认〉。
6.
发送短消息后,收到出错信息+CMS
ERROR 514
您遇上了下面问题中的一种:
a)
您设置的短消息中心的号码是错误的;
b)
短消息将要送达的目的号码是错误的;
c)
您发送的短消息被短消息中心拒绝(一般为目的号码不存在或目的号码被禁用)。
7.
发送短消息后,收到出错信息+CMS
ERROR 515
如果您的GSM
MODEM在初始化期间或在指令执行过程当中GSM
MODEM又接受新的指令,将会出现此错误。您必须等到初始化完成或指令执行完毕。
8.
如何才能知道您发送的短消息已被送达目的号码
a)
采用文本格式发送
在您采用文本格式发送短消息时,您的GSM
MODEM须作以下的设置:
at+csmp=49,〈X〉,〈X〉,〈X〉
at+cnmi=〈X〉,〈X〉,〈X〉,1,〈X〉
〈X〉代表根据您的需要您所选择的合适的参数。
当您发送完短消息后,您将收到来自短消息中心的以下两种确认中的一种:
+CDS:〈X〉,〈顺序号〉,"电话号码","发送时间","接收时间",0
或:
+CDS:〈X〉,〈顺序号〉,"电话号码","发送时间","接收时间",48
确认中的最后个数代表了此短消息的传输状态。(0表示已经送达目的号码,48表示不可能将此送达目的号码)
b)
采用PDU格式发送
在您采用PDU格式发送短消息时,您的GSM
MODEM须作以下的设置:
at+cnmi=〈X〉,〈X〉,〈X〉,1,〈X〉
〈X〉代表根据您的需要您所选择的合适的参数。
在您所要发送的PDU格式的短消息中,您须将短消息中心号码后的第一个字节设成31
在发送完短消息后,您将收到来自短消息中心的以下确认:
+CDS:〈长度〉00〈PDU格式的确认信息〉
注意:在收到的PDU格式的确认中,顺序号和传输状态标志都是以16进制数存在的,您可将其直接转成10进制数而无需将其倒置后再转换。
9.
如何发送中文短消息
采用现有的GSM
MODEM发送中文短消息,都必须先将准备发送的中文短消息转换成16位的Unicode编码。
A)
采用文本方式发送
在您采用文本格式发送Unicode编码中文短消息时,您的GSM
MODEM须作的设置:
at+csmp=〈X〉,〈X〉,〈X〉,8
〈X〉代表根据您的需要您所选择的合适的参数。
然后您就可将转换好的Unicode编码中文短消息按照发送普通文本短消息的方法发送出去。
B)
采用PDU方式发送
您只须在您的PDU格式的短消息中,将目的号码字符串后的第二个字节设成08,将转
换好的Unicode编码中文短消息作为PDU中的发送内容一齐发送。
10.
如何建立一个话音呼叫
向GSM
MODEM的串口送指令ATD〈电话号码〉;〈回车〉必须确认电话号码是一个话音号码而非传真或数据号码。
11.
如何建立一个数据呼叫
先将您的GSM
MODEM作如下设置:
at+ipr=9600
at+ifc=2,2
at+cbst=0,0,1
向GSM
MODEM的串口送指令ATD〈电话号码〉〈回车〉
必须确认电话号码是一个数据号码而非传真或话音号码,同时必须确认您的SIM卡已开通数据通信的服务。
12.当GSM
MODEM作被叫时,如何显示主叫的电话号码
将您的GSM
MODEM作如下设置:
at+clip=1
13.当GSM
MODEM作被叫时,如何判别主叫发起的是话音、数据或传真呼叫
将您的GSM
MODEM作如下设置:
at+crc=1
14.当GSM
MODEM作被叫时,如何使其自动应答或不能自动应答
如果您想让您的GSM
MODEM自动应答,将您的GSM
MODEM作如下设置:
ats0=〈N〉
N是代表GSM
MODEM震铃的次数的一个整数,即GSM
MODEM在N
次
震铃后将自动应答。
如果您想让您的GSM
MODEM不能自动应答,将您的GSM
MODEM作如下设置:
ats0=0
15.如何不通过SIM卡直接读或写短消息
因为SIM卡只有1万到10万次的读写次数和10-15条短消息的存储空间,还涉及到SIM卡上短消息读写需要一定的时间才能完成。这些因素影响了许多应用,这些应用需要通过GSM网络进行大量的数据交换,为保证流程的顺利进行,SIM卡要完成大量的读、写和删除操作,SIM卡的寿命周期很快就会达到,此外,SIM卡完成这些工作所耗费的时间比外界要求的要多。为解决这些问题,有必要在终端上作一些软件设置,使短消息不通过SIM卡进行读写操作。
以下的描述介绍了如何采用这种方法在Falcom
A2系列和数据终端MT4002之间不通过SIM卡交换数据,这种方法也可用与2个MT4002之间。
a)
串口上的从终端来的RTS信号可用来指示数据交换时隙是否忙,串口准备好接收数据
b)
如果终端双方都可用来接收和发送短消息,在设置时双方都要设同样的命令和常数。
在接收端,设命令AT+CNMI=2,2,0,0,0
在发送端,设命令AT+CSMP=17,167,0,240
(当使用PDU格式发送时,240改成字符串DCS(F0))
c)
当程序发现短消息以前缀+CMT后跟所传送的数据这种格式时,立即将此短消息捕获并将其分发到原定的地址。
d)
当发送端如果没有设置CSMP=17,167,0,240时,捕获到的短消息应有前缀+CMTI,此时用命令AT+CMGR=n读取并分发到原定的地址,随后用命令AT+CMGD=n将此短消息删除以保证SIM卡有足够多的空间