CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

用的是西门子2118和串口调试程序,如何发送AT命令?(在线等!!)

楼主tings(菜鸟中的极品!)2003-08-01 14:48:46 在 VC/MFC / 基础类 提问

用的是晓峰的串口调试程序,发送AT时,返回AT,基本是发送什么命令,返回什么命令。如何在此串口调试程序下实现发送一条短信呢?短信中心号码:13800290500  
  接受方号码:13659205702     发送数据:你好BaBy123。请高手给个详细的说明!! 问题点数:50、回复次数:10Top

1 楼tings(菜鸟中的极品!)回复于 2003-08-01 14:59:17 得分 0

高手请进!Top

2 楼kwiner(ak.net)回复于 2003-08-01 15:14:43 得分 10

利用手机模块实现短消息  
   
  全球定位系统(GPS)系统由于性能优异,在民用上应用范围很广。其可以用于空中交通管理、大地精密测量、摄影测量、监测地壳运动、火山活动、野外调查和勘探的定位、地面沉降、土地塌方,甚至于用于民用如建筑、汽车、旅行探险、狩猎等方面。但是如何将GPS定位数据传递到监控中心一直是相应系统关注的焦点。目前,移动子系统和监控中心子系统之间往往通过短消息方式传送数据。这种方式采用通常的无线GSM发送接收设备就能实现短消息的传送,实现简单,具有通信成本低、频谱利用率高、系统容量大、业务种类多、保密性能好、抗干扰能力强、通话质量高、国际自动漫游等优点,它利用信令信道传输,不用拨号建立连接,直接把要发的信息加上目的地址发送到短消息服务中心,由短消息服务中心在发给最终的信宿,是目前应用最广泛的通信方案。    
  目前,在相关的系统中往往使用手机模块(摩托罗拉、西门子等均有相应的产品)来实现与短消息中心的联系。主要原因在于:使用手机模块利于系统集成,成本较低,而使用手机虽然也可以实现相应功能,但是需要外加数据线,成本相当高。本文主要介绍与短消息开发相关的GSM   AT指令。    
     
  1.相关的GSM   AT指令    
  与SMS有关的GSM   AT指令(from   GSM07.05)如表1所示:    
  表1   相关的GSM   AT指令  
     
  AT   指令    
    功                                           能    
     
  AT+CMGC    
    Send   an   SMS   command(发出一条短消息命令)    
     
  AT+CMGD    
    Delete   SMS   message(删除SIM卡内存的短消息)    
     
  AT+CMGF    
    Select   SMS   message   formate(选择短消息信息格式:0-PDU;1-文本)    
     
       
   
  AT+CMGL    
    List   SMS   message   from   preferred   store(列出SIM卡中的短消息PDU/text:       0/“REC   UNREAD”-未读,1/“REC   READ”-已读,2/“STO   UNSENT”-待发,3/“STO   SENT”-已发,4/“ALL”-全部的)    
     
  AT+CMGR    
    Read   SMS   message(读短消息)    
     
  AT+CMGS    
    Send   SMS   message(发送短消息)    
     
  AT+CMGW    
    Write   SMS   message   to   memory(向SIM内存中写入待发的短消息)    
     
  AT+CMSS    
    Send   SMS   message   from   storage(从SIN|M内存中发送短消息)    
     
  AT+CNMI    
    New   SMS   message   indications(显示新收到的短消息)    
     
  AT+CPMS    
    Preferred   SMS   message   storage(选择短消息内存)    
     
  AT+CSCA    
    SMS   service   center   address(短消息中心地址)    
     
  AT+CSCB    
    Select   cell   broadcast   messages(选择蜂窝广播消息)    
     
  AT+CSMP    
    Set   SMS   text   mode   parameters(设置短消息文本模式参数)    
     
  AT+CSMS    
    Select   Message   Service(选择短消息服务)    
     
     
  对短消息的控制共有三种模式:    
    Block   Mode    
     
    基于AT命令的PDU   Mode    
     
    基于AT命令的Text   Mode    
     
  使用Block模式需要手机生产厂家提供驱动支持,目前,PDU   Mode   已取代   Block   Mode,   Text   Mode比较简单,本文重点介绍模式PDU   Mode,以西门子公司的产品TC35T为例。    
  2.计算机与TC35T的通信    
  (1)RS232串口连接    
  由于TC35T自带RS232串口线,故只需将其连接到计算机串口即可。打开超级终端,选择相应的串口,将端口参数设置为:速率—4800、奇偶校验位—无、数据位—8、停止位—1、流量控制—硬件。    
  (2)连接测试    
  输入“AT”然后回车,屏幕上返回“OK”表明计算机与TC35T已连接成功,TC35T能够正常工作。这时就可以测试各类AT命令。    
  当测试命令“AT+CMGS=?<CR>”时,如果返回“OK”标明TC35T支持该指令。该指令的完整语法如下:    
    如果此时TC35T处于PDU   Mode(即“AT+CMGF?<CR>”返回“0”)    
     
  AT+CMGS=<length><CR>PDU   is   given<^Z/ESC>    
  如果短消息发送成功,则返回“OK”,并显示信息号:    
  +CMGS:   <mr>[,<ackpdu>]    
  如果短消息发送失败,则返回如下信息号:    
  +CMS   ERROR:   <err>    
    如果此时TC35T处于Text   Mode(即“AT+CMGF?<CR>”返回“1”)    
     
  AT+CMGS=<da>[,toda]<CR>text   is   entered<^Z/ESC>    
  如果短消息发送成功,则返回“OK”,并显示信息号:    
  +CMGS:   <mr>[,<scts>]    
  如果短消息发送失败,则返回如下信息号:    
  +CMS   ERROR:   <err>    
  另外,由于使用的是TC35T,当有新的短消息到来时,需要TC35T产生提示,使用指令“AT+CNMI”。该指令的完整语法如下:    
  AT+CNMI=[<mode>][,<mt>][,<bm>][,<ds>][,<bfr>]    
  如果有新的短消息来到,则TC35T将自动返回下列提示:    
  +CMTI:   “SM”,   <index>    
  此时读出<index>,然后用“AT+CMGR”指令即可读出短消息内容。    
  3.PDU数据格式分析:    
  例如,我们要将字符“Hi”字符发送到目的地“13677328099”    
  PDU字符串为:    
  08   91   683108701305F0   11   00   0D   91   3176378290F9   00   00   00   02   C834    
  ⑴08—短信息中心地址长度。指(91)+(683108701305F0)的长度。    
  ⑵91—短信息中心号码类型。91是TON/NPI遵守International/E.164标准,指在号码前需加‘+’号;此外还有其它数值,但91最常用。    
  91—10010001    
  BIT   No.    
    7    
    6    
    5    
    4    
    3    
    2    
    1    
    0    
     
  Name    
    1    
    数值类型    
    号码鉴别    
     
     
  数值类型(Type   of   Number):000—未知,001—国际,010—国内,111—留作扩展;    
  号码鉴别(Numbering   plan   identification):0000—未知,0001—ISDN/电话号码(E.164/E.163),1111—留作扩展;    
  ⑶683108701305F0—短信息中心号码。由于位置上略有处理,实际号码应为:8613800731500(字母F是指长度减1)。这需要根据不同的地域作相应的修改。    
  ⑴、⑵、⑶通称短消息中心地址(Address   of   the   SMSC)。    
  ⑷11—文件头字节。    
  11&h=00010001&b    
  BIT   No.    
    7    
    6    
    5    
    4    
    3    
    2    
    1    
    0    
     
  Name    
    TP-RP    
    TP-UDHI    
    TP-SPR    
    TP-VFP    
    TP-RD    
    TP-MTI    
     
  Value    
    0    
    0    
    0    
    1    
    0    
    0    
    0    
    1    
     
     
  应答路径—TP-RP(TP-Reply-Path):0—不设置;   1—设置    
  用户数据头标识—TP-UDHL(TP-User-Data-Header-Indicator):0—不含任何头信息;   1—含头信息    
  状态报告要求—TP-SPR(TP-Status-Report-Request):0—需要报告;   1—不需要报告    
  有效期格式—TP-VPF(TP-Validity-Period-Format):00—不提供(Not   present);   10—整型(标准);01—预留;   11—提供8位字节的一半(Semi-Octet   Represented)    
  拒绝复制—TP-RD(TP-Reject-Duplicates):0—接受复制;   1—拒绝复制    
  信息类型提示—TP-MTI(TP-Message-Type-Indicator):00—读出(Deliver);   01—提交(Submit)    
  ⑸00—信息类型(TP-Message-Reference)    
  ⑹0B—被叫号码长度。    
  ⑺91—被叫号码类型(同⑵)。    
  ⑻3176378290F9—被叫号码,经过了位移处理,实际号码为“13677328099”。    
  ⑹、⑺、⑻通称目的地址(TP-Destination-Address)。    
  ⑼00—协议标识TP-PID(TP-Protocol-Identifier)    
  BIT   No.    
    7    
    6    
    5    
    4    
    3    
    2    
    1    
    0    
     
     
  Bit   No.7与Bit   No.6:   00—如下面定义的分配Bit   No.0—Bit   No.5;01—参见GSM03.40协议标识完全定义;10—预留;11—为服务中心(SC)特殊用途分配Bit   No.0—Bit   No.5。    
  一般将这两位置为00。    
  Bit   No.5:0—不使用远程网络,只是短消息设备之间的协议;1—使用远程网络。    
  Bit   No.0—Bits   No.4:00000—隐含;00001—电传;00010—group   3   telefax;00100—语音;00101—欧洲无线信息系统(ERMES);00110—国内系统;10001—任何基于X.400的公用信息处理系统;10010—Email。    
  ⑽00—数据编码方案TP-DCS(TP-Data-Coding-Scheme)    
  BIT   No.    
    7    
    6    
    5    
    4    
    3    
    2    
    1    
    0    
     
     
  Bit   No.7与Bit   No.6   :一般设置为00;Bit   No.5:0—文本未压缩,1—文本用GSM标准压缩算法压缩;Bit   No.4:0—表示Bit   No.1、Bit   No.0为保留位,不含信息类型信息,1—表示Bit   No.1、Bit   No.0含有信息类型信息;Bit   No.3与Bit   No.2:00—默认的字母表,01—8bit,10—USC2(16bit),11—预留;Bit   No.1与Bit   No.0:00—Class   0,01—Class   1,10—Class   2(SIM卡特定信息),11—Class   3。    
  ⑾00—有效期TP-VP(TP-Valid-Period)      
  VP   value(&h)    
    相应的有效期    
     
  00   to   8F    
    (VP+1)*5   分钟    
     
  90   to   A7    
    12小时+(VP-143)*30分钟    
     
  A8   to   C4    
    (VP-166)*1天    
     
  C5   to   FF    
    (VP-192)*1   周    
     
     
  ⑿02—用户数据长度TP-UDL(TP-User-Data-Length)    
  ⒀C834—用户数据TP-UD(TP-User-Data)“Hi”    
  4.短消息编码    
  设需要发送的短消息内容为“Hi”,使用的GSM字符集为7位编码。首先将字符转换为7位的二进制,然后,将后面字符的位调用到前面,补齐前面的差别。例如:H翻译成1001000,i翻译成1101001,显然H的二进制编码不足八位,那么就将i的最后一位补足到H的前面。那么就成了11001000(C8),i剩下六位110100,前面再补两个0,变成00110100(34),于是“Hi”就变成了两个八进制数   C8   34。    
  5.短消息的发送与接收案例    
  鉴于TC35(T)支持TEXT格式,我们在试验中主要测试该格式。    
  (1)设置短消息中心    
  AT+CSCA="+8613800731500"(短消息中心);      
  (2)设置短消息发送格式    
  AT+CMGF=1   (1-TEXT;   0-PDU);      
  (3)发送短消息(短消息内容为“test”)    
  AT+CMGS="13508485560"(目的地址)   <cr>    
  >   test   ^z   ;      
  (4)设置短消息到达自动提示:   设置短消息到达提示当短消息被接收,将获取指令:   +CMTI:"SM",INDEX(信息存储位置)    
  AT+CNMI=1,1,0,0,1();    
  (5)获取短消息内容(Once   more),假设INDEX=8。    
  AT+CMGR=8    
  返回信息如下:    
  +CMGR:   "REC   UNREAD","+8613508485560",,"01/07/16,15:37:28+32",Once   more    
  6.注意事项    
  (1)短消息中心一般不会改动,如果短消息中心号码改动,在使用“AT+CSCA”语句时,记住TC35要重新启动,否则TC35不能正常工作(TC35T不存在此问题)。    
  (2)某些SIM卡带有密码,启动时需要输入密码。    
  Top

3 楼kwiner(ak.net)回复于 2003-08-01 15:15:18 得分 0

通过串口收发短消息(下)   (原创)    
  通过串口收发短消息(上)   (原创)    
  http://www.csdn.net/develop/author/netauthor/bhw98/  
   
  Demo源码  
  http://www.csdn.net/develop/author/bhw98/SmsTest.zip  
  Top

4 楼kwiner(ak.net)回复于 2003-08-01 15:16:17 得分 30

在PC上通过手机发送短消息(续篇)         lotusswan(原作)      
       
  关键字           PC,手机,中文短消息,串口,MSCOMM控件    
       
     
                  写完<<在PC上通过手机发送短消息>>(http://www.csdn.net/Develop/article/17/17690.shtm)后,就打算接着写中文短信息的发送的,可是毕业论文时间实在太紧,一直耽搁下来了,这几天陆续有几个网友给我发邮件,关注这个话题的网友也比较多,而且CSDN邮件期刊也将我的那一篇文章收录进来了,我感到十分的欣慰,同时也觉得应该尽快完成我未完成的工作,要不然太对不起大家了.  
   
   
                使用Text模式收发短信代码简单,实现起来十分容易,但是最大的缺点是不能收发中文短信,实在是有点美中不足.不过Pdu模式完全可以解决这个问题,Pdu模式不仅支持中文短信,也能发送英文短信,堪称完美无缺.Pdu模式收发短信可以使用三种编码:   7-bit、8-bit和UCS2编码.   7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。我们要实现中文短信的发送,所以选择UCS2,即中文Unicode码.  
   
   
              首先介绍一下VB中的两个函数:ChrW()和AscW().对于Chr()和Asc()函数大家一定很熟悉,对于ChrW()和AscW()可能会比较生疏一点.   ChrW   函数返回包含   Unicode   的   String,若在不支持   Unicode   的平台上,则其功能与   Chr   函数相同;   AscW   函数返回   Unicode   字符代码,若平台不支持   Unicode,则与   Asc   函数功能相同。对于这两个函数我们各举一个例子说明:  
                ?ascw("短")  
              30701    
              ?chrw(26482)  
              杲  
   
   
              可见这两个函数可以实现中文和Unicode码之间的转换,对于我们编码解码十分方便.我们得到中文的Unicode码之后,就可以编制Pdu串了.  
   
   
                我们再了解一下Pdu串的构成,我们看这样一个Pdu串(我调试程序时采用):   0891683110301405F011000D91683159717456F4000800165982679C6536523077ED4FE1002C8BF756DE590D002E.我们将其分解为:  
   
   
  08   SMSC地址信息的长度(91683110301405F0共八位字节)  
  91   SMSC地址格式(TON/NPI)  
  683110301405F0     SMSC地址(8613010341500南京的短信服务中心号码)  
  11   基本参数(TP-MTI/VFP)(   发送,接收为84)  
  00   MR   Message   Reference  
  0D   目标SIM卡号码长度(683159717456F4按阿拉伯数字个数计)  
  91   同上  
  683159717456F4     对方手机SIM卡号(8613057575064)  
  00   普通GSM类型,点到点方式  
  08     UCS2编码  
  00   有效期  
  16     用户信息长度(5982679C6536523077ED4FE1002C8BF756DE590D002E的长度共22为字节)  
  5982679C6536523077ED4FE1002C8BF756DE590D002E(“如果收到短信,请回复.”Unicode码)  
     
   
              Pdu码的构成我们已经了解后,我们就可以开始编码了,上面的红色部分就是我们要编码实现的.  
   
   
                    首先看SMSC地址:   683110301405F0与8613010341500F(SMSC最后一位补F构成14位),我们可以发现只需将奇偶位对调即可.同样道理:   683159717456F4与8613057575064也是一样的处理.  
   
   
                对于用户信息长度,我们可以通过VB里的Len函数得到,例如”你好”,我们用Len(“你好”)得到2,那么2*2=4即为用户信息长度04(这里要转换为16进制,并且是两位).对于Unicode码,我们可以通过AscW()函数一个一个汉字取出其Unicode码即可得到.  
   
   
                  下面给出短信发送的具体实现代码(相关知识可参见前一篇文章):  
                  If   MSComm1.PortOpen   =   False   Then   MSComm1.PortOpen   =   True  
                  Length=Len(“如果收到短信,请回复.”)*2  
                  MSComm1.Output   =   "AT+CMGF=0"   +   vbCr   ‘以Pdu模式发送短信  
                  MSComm1.Output   =   "AT+CMGS="   &   Str(15   +   length   )   +   vbCr    
                MSComm1.Output=   “0891683110301405F011000D91683159717456F4000800165982679C6536523077ED4FE1002C8BF756DE590D002E”   &   Chr$(26)  
   
                start   =   Timer  
                pause   =1  
                While   Timer   <   start   +   pause  
                    DoEvents  
                Wend          
                reco   =   MSComm1.Input  
              If   InStr(reco,   "OK")   Then   sendsms   =   True  
              If   InStr(reco,   "ERROR")   Then   sendsms   =   False  
                MSComm1.Output   =   "AT+CMGS="   &   Str(15   +   length   )   +   vbCr中的15为   11000D91683159717456F400080016的位数.length为5982679C6536523077ED4FE1002C8BF756DE590D002E的位数.  
   
   
              到这里,短信的发送基本完成,短信的接收更简单一点,主要是解码,就是应用ChrW()函数了.写完这篇文章,才算松了一口气,算是对大家有个交待吧,感谢大家的关注.  
   
  Top

5 楼tings(菜鸟中的极品!)回复于 2003-08-01 21:25:02 得分 0

这个我早就看过这篇文章了,没有用的,针对我的特殊情况,有没有特殊的说明啊??Top

6 楼tings(菜鸟中的极品!)回复于 2003-08-04 10:23:20 得分 0

高手近来帮我看一下啊!1Top

7 楼gyh12345678(博爱)回复于 2003-08-04 16:35:08 得分 10

你好!我前天刚好写了一段代码,是基于siemensT35c手机模块,编译后,就可拨打电话,  
  稍加修改,就可发短消息。  
  Top

8 楼tings(菜鸟中的极品!)回复于 2003-08-17 16:30:51 得分 0

各位请稍等,我在出差,回去后调试我的程序,在给分!勿怪!Top

9 楼tings(菜鸟中的极品!)回复于 2003-08-25 09:39:01 得分 0

问题虽然没有解决,但仍然感谢大家!结贴!喜欢探讨的朋友跟我联系!QQ;8126120  
  tjyu@163.comTop

10 楼nava(探雪)回复于 2003-08-26 08:37:05 得分 0

markTop

相关问题

  • 串口程序调试,高手请进!!!
  • 串口本机调试的问题...
  • 谁用过“串口调试助手”
  • 关于串口调试的工具
  • 串口调试要怎样弄.
  • vb 串口调试软件 源代码
  • 调试时命令窗口的问题
  • 没有串口 我想调试串口程序 请问有没有什么软件能模拟出串口
  • 收到串口调试的兄弟们有什么看法?
  • 哪里可以下载"串口调试精灵"?

关键词

  • .net
  • 消息
  • 编码
  • 函数
  • 指令
  • 字符
  • 数据
  • sim卡
  • 信息
  • 短消息

得分解答快速导航

  • 帖主:tings
  • kwiner
  • kwiner
  • gyh12345678

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo