基于AT指令编程的通信录手机短信查询系统设计与实现
- 格式:doc
- 大小:25.50 KB
- 文档页数:10
短信相关的AT指令以及信令2017-11-16 17:40:58此次的短信AT指令和信令从以下几个方面介绍:一 . 短信AT指令的格式二 . 短信AT指令的使用(超级终端)三 . 短信AT指令在log中的查看四 . 短信modem相关信令五 . 超级终端的使用(hyper_terminal)六 . 其他短信AT指令七 . CMC ERROR 错误码一 . 短信AT指令的格式短信的编码方式有两种:text模式,pdu模式。
因此短信的AT指令执行格式也有两种,分别对应text模式和pdu模式。
1 . Text模式纯文本模式,支持不同的字符集,从技术上说也可用于发送中文短消息,但国内手机基本上不支持,主要用于欧美地区。
2 . Pdu模式这个是手机默认的编码方式,可以使用任何字符集,其包括三种编码方式:7bit编码,8bit编码,UCS2编码。
7bit编码:ASCⅡ码就是7bit编码。
8bit编码:ASCⅡ字符可以使用7位二进制表示,但是由于计算机的基本处理单位是字节(1byte=8bit),所以一般在高位补0,用一个字节表示一个ASCⅡ字符。
这就是8bit编码。
UCS2编码:处理Unicode字符,使用2个字节来表示一个字符,可以表示世界上所有的字符。
发送中文就是使用此编码方式。
二 . 短信AT指令的使用(超级终端)1 . 查看目前的短信编码模式AT+CMGF?2 . 切换编码模式AT+CMGF=0//PDUAT+CMGF=1//TEXT3 . 当模式为text时,发送格式如下AT+CMGS=”185****3304”dddddd…. (此处为发送内容)0X1A (此处表示内容结尾,必须)结果:+CMGS: 211OK4 . 当模式为pdu时,发送格式如下AT+CMGS=19,“0001000b818125514688f4000006c8329bfd0601” 或者AT+CMGS=20,“0001000b818175893503f4000008d3ba3a1d76ebcb”19和20为:pdu约定固定长度15+发送的报文的长度(16进制数)00 服务号码信息长度为001 没有多余信息的发送,即不包括服务号码信息00 消息基准值(TP-MR) 00b 发送号码的信息长度81 国际号码格式即”+”8125514688f4 目的号码,即185****4884(算法:末尾加f后奇偶位调换)00 协议标识是普通GSM 类型,点到点方式00 编码方式,08–USC2,00–7-bit00 有效期06 信息长度c8329bfd0601 信息内容/Hello三 . 短信AT指令在log中的查看1 . 正常发送短信RILJ : [4194]> SEND_SMS [SUB0] //从RIL.java中发出SEND_SMS消息AT : AT send on RIL_CMD_READER_3, tid:548282602560AT : AT>AT+CMGS=19,"0001000b818175893503f4000006c8329bfd0 e03"AT : AT< +CMGS: 218 //modem返回的结果,返回CMGS 说明发送成功AT : response received on RIL_CMD_READER_3, tid:548282602560RILJ : [4194]< SEND_SMS { mMessageRef = 218, mErrorCode = 0, mAckPdu = null} [SUB0] //AT向RIL.java 报告发送情况2 . 发送短信失败RILJ : [4838]> SEND_SMS [SUB0]AT : AT send on RIL_CMD_READER_3, tid:548305933376AT : AT>AT+CMGS=20,"0001000b818175893503f4000008d3ba3a1d 76ebcb"AT : AT< ERROR以上例子失败原因:设置编码为T ext模式,但是手机默认的编码为pdu模式,以上AT+CMGS命令执行时参数为pdu码。
移远at指令中文手册以下是关于移远AT指令的详细中文手册:一、概述移远AT指令是一种基于AT命令的通信协议,用于与移远通信模块进行交互。
通过AT指令,用户可以查询模块参数、配置模块参数、发送短信等。
本手册将详细介绍移远AT 指令的语法、参数和使用方法。
二、AT指令语法移远AT指令的语法非常简单,遵循标准的AT命令格式。
每个AT指令都以“AT”开头,后面跟着指令代码和参数。
指令代码用于标识不同的指令,而参数则根据指令的不同而有所不同。
例如,“AT+CMGF=1”用于设置短信为PDU模式,“AT+CMGS=”用于发送短信。
三、常用AT指令以下是一些常用的移远AT指令:1.AT+CGATT?:查询是否已附着GPRS/GSM网络。
2.AT+CREG?:查询手机号码是否注册成功。
3.AT+CSQ:查询信号质量。
4.AT+CSCA?:查询服务中心地址。
5.AT+CCFC:查询通话控制状态。
6.AT+CNMI:查询短信通知状态。
7.AT+CMGF=1:设置短信为PDU模式。
8.AT+CMGS=:发送短信。
9.AT+CSMP=: 设置短信中心地址。
10.AT+CSCS=?:查询字符集设置。
四、使用方法使用移远AT指令非常简单,只需要通过串口将指令发送给模块即可。
在发送指令之前,需要先通过“AT”命令来检查模块是否正常连接并处于准备状态。
一旦模块返回“OK”,就可以发送其他AT指令来执行相应的操作了。
在执行每个指令后,都应该等待模块的返回值,以便确认操作是否成功。
如果需要设置参数,需要按照相应的语法格式编写指令,并确保参数的正确性。
在发送指令时,需要注意指令的格式和大小写,以免出现错误。
例如,“AT+CMGF=1”和“at+cmgf=1”是不同的指令,前者是正确的格式。
五、注意事项在使用移远AT指令时,需要注意以下几点:首先,要确保模块已经正确连接并能够正常工作;其次,要熟悉每个指令的语法和参数,以确保正确地编写指令。
stm32at指令编程STM32是意法半导体(STMicroelectronics)推出的一系列32位ARM Cortex-M微控制器,它们广泛应用于嵌入式系统开发中。
STM32微控制器支持多种编程方式,其中包括使用AT指令进行编程。
AT指令是一种用于控制调制解调器、手机和其他通信设备的命令集。
在STM32中,AT指令编程通常用于与GSM模块或者其他外部设备进行通信。
要在STM32中使用AT指令编程,首先需要连接STM32与外部设备,通常是GSM模块或者其他具有串口通信功能的设备。
然后,需要在STM32的固件中实现AT指令解析器,以便能够解析和执行收到的AT指令。
这通常涉及到串口通信的设置和数据处理。
在STM32中,通常会使用UART(通用异步收发传输)模块来实现串口通信。
在编写STM32的AT指令程序时,需要考虑以下几个方面:1. 串口通信设置,包括波特率、数据位、停止位、奇偶校验位等串口参数的配置。
2. AT指令解析,需要编写代码来解析接收到的AT指令,并根据指令内容执行相应的操作。
3. 数据处理,在与外部设备通信时,可能涉及到数据的发送和接收,需要编写相应的数据处理代码。
4. 错误处理,需要考虑如何处理通信过程中可能出现的错误情况,例如超时、通信失败等。
在实际编程过程中,可以使用STM32提供的标准外设库(Standard Peripheral Library)或者CubeMX等工具来简化串口通信和AT指令处理的编程过程。
此外,还可以参考STM32的官方文档和相关的开发板资料来获取更多关于AT指令编程的信息和示例代码。
总之,STM32的AT指令编程涉及到串口通信设置、AT指令解析、数据处理和错误处理等多个方面,需要综合考虑和实现。
希望这些信息能够帮助你更好地理解和应用STM32的AT指令编程。
短信猫常用AT指令AT指令短信猫通讯中起着重要的作用,能够通过AT指令控制手机的许多行为,包括拨叫号码、按键控制、传真、GPRS等。
(什么是短信猫?)AT指令基本用法:1. 测试命令(Test Command)在AT指令后面加上“=?”即构成测试命令。
例如“AT+CSCS=?”会列举出所有支持的字符集。
2. 读取命令(Read Command)在AT指令后面加上“?”即构成读取命令。
例如“AT+CSCS?”会列举出当前设置。
3. 执行命令(Execute Command)一般而言在AT指令后加上“=”及命令参数即可。
有些命令例如AT+CMGR命令没有参数,直接就可以执行。
以WAVECOM GSM MODEM为例,其常用的AT指令集及开发参考如下:指令名称用法说明CS MS选择信息服务0兼容GSM07.05 Phase 2 version 4.7.01兼容GSM07.05 Phase 2+ versionT+CSMS=0+CSMS: 1,1,1AT+CSMS=1+CSMS: 1,1,1SMS-MOSMS-MTSMS-CB(小区广播)全部支持CNMA新SMS收到确认令名称用法说明CP MS首选的SMS存储区SM为SIM卡区,BM为内存区,缺省为SMAT+CPMS=?+CPMS: (("SM","BM"),("SM"))AT+CPMS="SM"+CPMS: 3,25,3,25AT+CPMS="BM"+CPMS: 0,20,3,25(1)为读和删的信息(2)为写和发的信息已用1,总共1,已用2,总共2CMGF设置SMS编码方式(1文本格式,0为PDU格式)CSAS存储CSCA与CSMP的相关信息于E2PROMCRES从E2PROM中恢复相关信息CS DH显示文本格式参数(1为显示,0为不显示)AT+CDSH=1+CMT:"+86135****4105",,"01/09/12,18:04:09+32",145,4,0,0,"+86138****0500",145,3AAAAT+CSDH=0+CMT:"+86135****4105",,"01/09/12,18:04:48+32"AAA相关的信息有+CMTI,+CMT,+CDS,+CMGR,+CMGL左边两个例子同样是发送和接收AAA为内容的SMSCN MISMS的输出方式AT+CNMI=2,2,0,0,0 其中第2位决定令名称用法说明+CMT:"+86135****4105",,"01/09/13,11:04:09+32"AAAAT+CNMI=2,1,0,0,0+CMTI: "SM",4 SMS直接输出还是保存于"SM"中左边两个例子同样是发送和接收AAA 为内容的SMS,为0则不接收CM GR读取存于"SM"中的信息AT+CMGR=1+CMGR: "REC READ","+86135****4102",,"01/08/14,10:46:47+32"X000E8AT+CMGR=4+CMGR: "REC UNREAD","+86135****4105",,"01/09/13,11:02:06+32"AAAAT+CMGR=2+CMGR: "REC READ","+86135****4105",,"01/08/23,16:32:34+32"DCS format errorat+cmgf=0;+cmgr=2+CMGR: 1,,260891683108100005F0040D91683105114501F500081080326123432306004400460044读取第1条来源13501154102读取第4条来源13501154105读取第2条时遇到DCS格式错误,转成PDU格式后,读出数据来源13501154105CM GL信息列表,(+CMGL:索引,类型,,长度<内容>=AT+CMGL=4+CMGL: 1,1,,260891683108100005F0040D91683105114501F2000010804101类型"RECUNREAD"令名称用法说明6474230658180C56C401+CMGL: 2,1,,26 0891683108100005F0040D91683105114501F500081080326123432306004400460044+CMGL: 3,1,,32 0891683108100005F0040D91683105114501F50008108032617492230C003400310032003100320033+CMGL: 4,1,,23 0891683108100005F0040D91683105114501F500001090311120602303C160100 "REC READ"1 "STO UNSENT"2 "STO SENT"3 "ALL"4CM GS发送SMS,可按文本方式或PDU方式AT+CMGF=1OKAT+CMGS=135********> AAA<^Z>+CMGS: 204OKAT+CMGF=0OKAT+CMGS=18>0011000D91683105114501F500040103414141<^Z>+CMGS: 205OK按文本方式发送按PDU方式发送CM GW写信息到存储器AT+CMGW="+86135****4105"> AAA<^Z>+CMGW: 5OKAT+CMGW=<lengh><CR><pdu><^Z>按文本方式写入按PDU方式写入CM从存储器中发送信息令名称用法说明SS AT+CMSS=5+CMSS: 207OK+CMT: ,230891683108100005F0040D91683105114501F500001090316163932303C16010AT+CMSS=5,+86135****4102+CMSS: 210OK 发送存储器中的第5条信息收到信息也可将第5条信息发送到指定用户CS MP 设置文本格式参数,+CSMP:<fo><vp><pid><dcs>AT+CSMP?+CSMP: 1,167,0,0其中为信息有效期,167默认0-143:(VP+1)*5分钟143-167:12小时+(VP-143)*30分钟168-196:(VP-166)*1天197-255:(VP-192)*1周CMGD删除信息,AT+CMGD=<索引>CS短信息服务中心号码令名称用法说明CA at+csca?+CSCA:"+86138****0500",145OK 北京短信息服务中心号码CSCB选择小区广播信息类型WCBM小区广播信息标识符WMSC信息状态更正WMGO信息重写。
Graduation DesignThe Design Of Messaging System BasedOn MCUBy Wang HuiSupervised byLecture. SHI XinxinSchool of AutomationNanjing Institute of TechnologyJune, 2015摘要随着手机的广泛使用,GSM网络提供的短消息服务使得只需要增加少量投入便可以通过手机实现生活和生产中的远程控制和告警通知成为可能。
本设计是基于ARM Cortex-M3内核的32位单片机STM32的一种短信收发系统。
本系统主要实现中英文短信收发及TFT彩屏显示相关状态如短信未读、已读状态、短信发送状态和内容如要读取短信数、读取到的短信内容、时间、发件人手机号码等,并且可以实现通过TFT液晶屏触摸输入号码和功能按键如读取、返回、拨号、挂断、删除等。
此方案以ST公司32位单片机STM32F103ZET6为主控制器辅以GSM/GPRS模块SIM900A,64Mb串行Flash 存储器W25Q64,2K串行EEPROM AT24C02,TFT液晶屏ILI9320等硬件,通过C语言编写程序,用软硬件结合的方法实现其基本功能。
经过多次实践测试,本系统可以达到预期的稳定性、可靠性,可以应用在远程控制、智能家居、工业控制等领域。
关键词:SIM900A;STM32;短信;GSM;TFT液晶屏ABSTRACTWith the widespread use of mobile phones, short message services provided by the GSM network make it possible that only a slight increase in investment and production will be able to live in the remote control and alarm notification via cell phone.In this thesis , a messaging system base on the 32-bit MCU STM32 which is based on the core of Cortex-M3 by ARM is discussed.The system is mainly a Chinese and English text messaging and that TFT color screen displays the status of messages such as unread, read status, SMS status and content, such as the number of messages to be read, read the message content, time, sender's phone number, etc. and can be achieved by TFT LCD touch screen to input the number and function keys such as reading, return, dial, hang up, delete, and so on.This program selects ST company's 32-bit MCU STM32F103ZET6 as controller supplemented GSM / GPRS module SIM900A, 64Mb Serial Flash memory W25Q64,2K serial EEPROM AT24C02, TFT LCD ILI9320 hardware, through C language programming,and achieve its basic functions with the combination of software and hardware.After several practice tests, the system can achieve the desired stability, reliability, and can be used in remote control, smart home, industrial control and other fields.Key words:SIM900A; STM32; messaging; GSM; TFT screen目录第一章绪论 (1)1.1 引言 (1)1.2 选题背景与意义 (1)1.3 应用现状及发展趋势 (1)第二章 GSM系统及方案设计 (3)2.1 GSM系统 (3)2.1.1 GSM系统特点 (3)2.1.2 GSM系统的体系结构 (3)2.2 GSM系统方案设计 (4)2.3 本章小结 (5)第三章系统硬件设计 (6)3.1 单片机最小系统 (6)3.1.1主控制器 (6)3.1.2 主控制器外围简单电路 (7)3.1.3 JTAG接口 (8)3.1.4 电源电路 (9)3.2 SIM900A模块 (10)3.2.1 SIM900A模块的对外接口电路 (10)3.2.2 SIM900A模块初始化 (11)3.3 外围电路设计 (12)3.3.1 一键下载电路 (12)3.3.2 TFT液晶屏接口 (12)3.3.3外部存储器 (13)3.3.4 按键和指示灯电路 (15)3.3.5 蜂鸣器电路 (16)3.4 本章小结 (17)第四章系统软件设计 (18)4.1 总体框图 (18)4.2 系统初始化 (19)4.3 文件系统FATFS移植 (19)4.4 汉字字库 (19)4.4.1 更新字库 (20)4.4.2 查找汉字 (20)4.5 触摸屏模块 (24)4.6 RTC显示 (25)4.6.1 RTC简介 (25)4.6.2 设置时间 (26)4.6.3备份区域保护 (26)4.7 开关机 (26)4.7.1 待机模式简介 (26)4.7.2 开关机实现过程 (27)4.8 本章小结 (28)第五章系统调试 (29)5.1系统调试过程与方法 (29)5.1.1 串口通信 (29)5.1.2 系统UI (31)5.1.3 读取短信 (32)5.1.4 发送短信 (32)5.1.5 电话测试 (33)5.2系统调试结果与分析 (34)5.3本章小结 (42)第六章结论 (43)6.1 主要工作与结论 (43)6.2 存在的问题 (43)6.3 感想与收获 (43)致谢 (44)参考文献.................................................................................. 错误!未定义书签。
GPRS通信和短信用到的AT指令Ip: 21 9.133.230.38一:测试模块的通信和信号,卡的连接ATOK41 54 0D 0D 0A 4F 4B 0D 0A1): at+csq应答:at+csq+CSQ: 20,99OK41 54 2B 43 53 51 0D 0D 0A2B 43 53 51 3A 20 31 36 2C 39 39 0D 0A0D 0A4F 4B 0D 0A二:建立GPRS2): at^sics=0,conType,GPRS0应答:at^sics=0,conType,GPRS0OK61 74 5E 73 69 63 73 3D 30 2C 63 6F 6E 54 79 70 65 2C 47 50 52 53 30 0D 0D 0A 0D 0A 4F 4B 0D 0A 0D 0A3): at^sics=0,apn,cmnet应答:at^sics=0,apn,cmnetOK61 74 5E 73 69 63 73 3D 30 2C 61 70 6E 2C 63 6D 6E 65 74 0D 0D 0A 0D 0A 4F 4B 0D 0A 三:连接GPRS主站4): at^siss=1,srvType,socket应答:at^siss=1,srvType,socketOK61 74 5E 73 69 73 73 3D 31 2C 73 72 76 54 79 70 65 2C 73 6F 63 6B 65 74 0D 0D 0A 0D 0A 4F 4B 0D 0A5) at^siss=1,conId,0应答:at^siss=1,conId,0OK61 74 5E 73 69 73 73 3D 31 2C 63 6F 6E 49 64 2C 30 0D 0D 0A 0D 0A 4F 4B 0D 0A6) at^siss=1,address,"socktcp://202.103.152.102:8106"应答:at^siss=1,address,"socktcp://219.133.155.225:8106"OK61 74 5E 73 69 73 73 3D 31 2C 61 64 64 72 65 73 73 2C 22 73 6F 63 6B 74 63 70 3A 2F 2F 32 30 32 2E 31 30 33 2E 31 35 32 2E 31 30 32 3A 38 31 30 36 22 0D 0D 0A 0D 0A 4F 4B 0D 0A四:打开GPRS使用TCP/IP7)AT^SISO=1应答:AT^SISO=1OK^SISW: 1, 141 54 5E 53 49 53 4F 3D 31 0D 0D 0A 0D 0A 4F 4B 0D 0A 0D 0A 5E 53 49 53 57 3A 20 31 2C 20 31 0D 0A8) AT^SISW=1,10 //发数据应答:AT^SISW=1,10^SISW: 1, 10 //收到1234567890 //发送OK //收到^SISW: 1, 141 54 5E 53 49 53 57 3D 31 2C 31 30 0D 0D 0A5E 53 49 53 57 3A 20 31 2C 20 31 30 0D 0A0D 0A0D 0A0D 0A5E 53 49 53 57 3A 20 31 2C 20 31 0D 0A10)接收数据^SISR: 1, 1 当有这条信息时表示有数据到.AT^SISR=1,1500^SISR: 1, 3OK0D 0A 5E 53 49 53 52 3A 20 31 2C 20 310D 0A41 54 5E 53 49 53 52 3D 31 2C 31 35 30 30 0D 0D 0A5E 53 49 53 52 3A 20 31 2C 20 33 0D 0A0D 0A4F 4B 0D 0A五:在线模式可以直接读短信.AT+CNMI=3,1OK当短信来时,提示+CMTI: "MT",1 1表示在第一条位置.用AT+CMGR=1可读出短信. RX:+CMTI: "MT",2(08:42:04:850)RX:0D 0A2B 43 4D 54 49 3A 20 22 4D 54 22 2C 31 0D 0A/*********************************************************************************/ +CMTI: "MT",4AT+CMGR=4+CMGR: 0,,340891683108705505F0040D91683135501402F90008601070018041000E004100380038003800380038 0038OK2B 43 4D 54 49 3A 20 22 4D 54 22 2C 35 0D 0A41 54 2B 43 4D 47 52 3D 35 0D 0D 0A2B 43 4D 47 52 3A 20 30 2C 2C 33 34 0D 0A30 38 39 31 36 38 33 31 30 38 37 30 35 35 30 35 46 30 30 3430 44 39 31 36 38 33 31 33 35 35 30 31 34 30 32 46 39 30 3030 38 36 30 31 30 37 30 30 31 32 31 33 31 30 30 30 45 30 3034 31 30 30 33 38 30 30 33 38 30 30 33 38 30 30 33 38 30 3033 38 30 30 33 38 0D 0A0D 0A号码:20数据长度:46,数据:48AT+CMGS=019> 0011000D91683135501402F9000801044F60597D +CMGS: 17OK。
数理与信息工程学院课程设计题目:单片机控制实现短信收发专业:计算机科学与技术(专升本)班级:056姓名:黄丹丹学号:05191112成绩:( 2006.6 )目录摘要 (1)第1节引言 (1)第2节工作原理及其软件设计 (2)2.1串口控制SMS的工作原理 (2)2.2软件实现 (3)2.3短信数据的处理—ExecData函数 (6)第3节系统硬件介绍 (6)3.1 系统核心部分---闪电存储型器件AT89C51 (6)3.2 GSM模块MZ28 (10)3.3 单片机MSC1210 (10)第4节SMS的体系结构 (13)第5节SMS应用新领域 (15)5.1 SMS在银行中间业务领域中的通知功能 (15)5.2 SMS在保险公司客户服务体系中的定时提醒功能 (15)5.3 SMS在证券交易中的成交回复与价格预警功 (15)第6节结语 (16)参考文献 (17)附录一程序 (18)附录二 (21)单片机控制实现短信收发信息科学与工程学院计算机专升本班黄丹丹【摘要】借助系统模型,阐明GSM模块收发短信的基本概念以及串口控制SMS的基本原理。
详细介绍用单片机AT89C51控制GSM模块工作的硬件和软件实现过程,介绍了单片机AT89C51和MSC1210内部结构和性能,并对AT89C51和MSC1210的性能、用途进行了比较,特别提出了MSC1210在高精度温度采集中所体现出别的芯片所不及的优势。
对怎样用单片机控制GSM模块收发短信进行探讨,也对程序设计的主体思想作了细致的分析。
大致介绍了SMS的体系结构以及在当今社会中SMS应用的新领域.本系统技术较先进,科技含量高运行速度快,精度高。
【关键词】单片机短信收发GSM SMS第1节引言中国联通数字移动电话(GSM)网是向社会公众提供通信服务的公用通信网,与中国电信网同为国家通信网的有机组成部分。
两网互联互通,自动接续,共享国家通信资源。
目前,中国联通数字移动电话业务由GSM网130、131业务和CDMA网133业务组成。
基于AT指令编程的通信录手机短信查询系统设计与实现作者:梁伟明来源:《电脑知识与技术》2009年第36期摘要:通信录手机短信查询系统,为用户查询电话号码提供方便。
构建了基于GSM技术的短消息自动收发平台。
并用VB6.0编写了基于AT指令和PDU模式的系统软件程序,并测试通过。
关键词:AT指令编程;通信录;手机短信;查询系统中图分类号:TP311文献标识码:A 文章编号:1009-3044(2009)36-10223-04The Design with Realizes of Correspondence Record Inquiry System Based on Instruction ProgrammingLIANG Wei-ming(Xinchang Power Supply Bureau, Xinchang 312500, China)Abstract: The inquiry system of Correspondence record useing Cell phone text messages,provide the convenience for the user to inquire telephone number.The platform witch can receive and seng message automatically based on GSM technology.Then write the program about the short message′senging-receiveing of the PDU mode and AT commands with VB6.0 and past the test.Key words: AT instruction programming; correspondence record; cell phone text messages; inquiry system人们在日常的生活和工作中,经常要相互联系,最常用的联系方式就是打电话。
打电话就要有电话号码,而要记住一大堆电话号码,很不容易。
至于要记住某个单位所有职工的电话号码,那更是不大可能。
记不起电话号码,一般通过查电话号码簿、询问身边同事朋友、打查号电话、热线电话等方式来查询电话号码。
这些查询方式,总是存在使用不便、查询麻烦、信息不全等等问题。
通信录手机短信查询系统,使得无论人们在何时何地,只需通过一种十分简便的方式,即发送一条查询短信,就能查询到某人的所有电话号码,包括内线电话、手机虚拟号码、手机全号、住宅电话等全部信息。
1 AT指令简介采用AT指令控制GSM MODEM,使用PDU模式和Unicode内码,可实现中文及数字等混合信息的双向短信收发。
常用的AT指令如表1。
2 系统结构设计2.1 系统结构图系统采用VB6.0和ACCESS数据库开发将本单位所有职工的通信录,录入ACCESS数据库。
系统采用一只外置式GSM短信Modem,接收和发送短信。
通信录手机短信查询系统在接收到发来的查询短信后,提取短信中的职工姓名,在数据库中检索。
检索到,则回复该职工的联系电话;没有检索到,则回复“请重新发送姓名!”的提醒短信。
短信回复时间约为3-5秒。
系统结构图如图1。
2.2 系统流程图由于本单位的职工,基本上都加入了本单位的移动虚拟网。
而且,采用虚拟短号发送和接收短信,资费较低。
因此,本系统中也必须加入可采用虚拟短号查询的功能。
针对不同的查询方式,需采用不同的处理方法和查询流程。
具体流程图如图2。
3 基于AT指令采用VB编程的系统实现3.1 用VB6.0编程语言,连接ACEESS数据库采用VB6.0编程,控制Access2000数据库,实现任意的数据查询、定位等功能。
在实际的编程中,采用了“数据绑定”的方法,实现Access2000数据库的快速定位和任意查询等功能。
在数据库中检索查询的姓名。
1) 系统初始化,将一个Data控件的数据源指定为当前目录下的通信录数据库:通信录.MDB。
程序代码示例:Private Sub Form_Initialize()Me.Data1.DatabaseName = App.Path & "\通信录.MDB"End Sub2) 将系统定义的标签控件绑定至上述Data的相应字段。
程序代码如下:Begin bel L7Caption = "宅电"DataField = "宅电" DataSource= "Data1" Height= 375Left= 6600TabIndex= 31Top = 4320Width = 1935EndBegin bel L6 Caption = "内线"DataField = "内线" DataSource= "Data1" Height= 375Left= 6600TabIndex= 30Top = 3720Width = 1935EndBegin bel L5 Caption = "虚拟号" DataField = "虚拟号"DataSource= "Data1"Height= 375Left= 6600TabIndex= 29Top = 3120Width = 1935EndBegin bel L4Caption = "手机/小灵通" DataField = "手机/小灵通" DataSource= "Data1"Height= 375Left= 6600TabIndex= 28Top = 2520Width = 1935EndBegin bel L3Caption = "姓名"DataField = "姓名"DataSource= "Data1"Height= 375TabIndex= 27Top = 1920Width = 1935EndBegin bel L2Caption = "部门/班组" DataField = "部门/班组" DataSource= "Data1"Height= 375Left= 6600TabIndex= 26Top = 1320Width = 1935EndBegin bel L1Caption = "id"DataField = "id"DataSource= "Data1"Height= 375Left= 6600TabIndex= 25Top = 720End3) 调用.Recordset.MoveNext在数据库中检索查询的姓名。
程序代码如下:Data1.RefreshDo While Not (Data1.Recordset.EOF)If L3.Caption = XM Then Exit DoData1.Recordset.MoveNextLoop3.2VB6.0编程,采用AT指令,使用PDU模式和Unicode码,回复查询到的信息1)打开连接GSM短信猫的串口。
程序如下:Private Sub Form_Load()mPort = ComboBox1.TextMSComm1.Settings = "9600,N,8,1"MSComm1.InputLen = 0End Sub2)编程透过串口,采用AT指令控制GSM MODEM,使用PDU模式和Unicode内码,实现中文及数字等混合信息的双向短信收发,回复查询到的信息。
程序代码如下:Public Function Sendsms(csca As String, num As String, Msg As String) As BooleanDim pdu, psmsc, pnum, pmsg As StringDim leng As StringDim length As Integerlength = Len(Msg)length = 2 * lengthleng = Hex(length)If length < 16 Then leng = "0" & lengpsmsc = Trim(telc(csca))pnum = Trim(telc(num))pmsg = Trim(ascg(Msg))If CDbl(num) > 10000000000# Thenpdu = prex & psmsc & midx & pnum & sufx & leng & pmsgElsepdu = prex & psmsc & midx2 & pnum & sufx & leng & pmsgEnd IfMSComm1.Output = "AT+CMGF=0" + vbCrIf CDbl(num) > 10000000000# ThenMSComm1.Output = "AT+CMGS=" & Str(15 + length) + vbCrElseMSComm1.Output = "AT+CMGS=" & Str(13 + length) + vbCrEnd IfMSComm1.Output = pdu & Chr$(26)Sendsms = TrueEnd Function3)将手机号码和对方手机号码也转换为PDU格式,自动加86至13位。
实现支持手机全号和手机虚拟号码收发短信,并能自动检索和短信回复。
程序代码如下:Public Function telc(num As String) As String Dim tl As IntegerDim ltem, rtem, ttem As StringDim ti As Integerttem = ""tl = Len(num)If tl 11 And tl 13 Then'MsgBox "wrong number." & tl'Exit FunctionEnd IfIf tl = 11 Thentl = tl + 2num = "86" & numEnd IfFor ti = 1 To tl Step 2ltem = Mid(num, ti, 1)rtem = Mid(num, ti + 1, 1)If ti = tl Then rtem = "F"ttem = ttem & rtem & ltemNext titelc = ttemEnd Function4)将中文字符转换为Unicode码:程序代码如下:Public Function ascg(smsg As String) As StringDim si, sb As IntegerDim stmp As IntegerDim stemp As Stringsb = Len(smsg)ascg = ""For si = 1 To sbstmp = AscW(Mid(smsg, si, 1)) 'AscIf Abs(stmp) < 127 Thenstemp = "00" & Hex(stmp)Elsestemp = Hex(stmp)End Ifascg = ascg & stempNext siascg = Trim(ascg)End Function3.3 程序运行界面程序运行界面如图3。