2010年7月22日

一、概述
         由于油田的发现和开采大多居于偏远的深山之中,要实现油田之间的通信,首要的问题就是要克服地理环境所带来的限制,架设一个庞大的通信系统是一个费时耗资金的过程,也给系统维护带来很大的困难,地形的起伏不平导致铺设电缆后不宜传导,同时电缆穿过炼油厂可能是潜在的危险。
         GPRS无线网络在油田油井监控系统中的应用就显得尤为的重要。目前,全国许多大油田都已经在使用GPRS无线技术,为油田的生产和管理提供了很大的便利,大大提高了生产效率,降低了生产成本。
二、系统特点
2.1  GPRS无线组网系统具备如下特点:
1、良好的实时响应与处理能力:与短消息服务比较,由于GPRS具有实时在线特性,系统无时延,系统能够同时实时收取、处理多个/所有监测点的各种数据,无需轮巡就可以同步监测点的时钟可很好的满足系统对数据采集和传输实时性的要求。
2、远程仪器设备控制:由于采用GPRS双向传输系统,监控中心可以反向实现对仪器设备的时间校正、状态报告、开关以及其他监测、控制等功能;
3、建设成本低:可充分利用现有GPRS网络,设备安装即接通,而采用超短波通信时需要充分考虑现场环境,还需要配备天线铁架等附属设备。
4、安装调试简单,建设周期短:利用现有成熟GPRS网络,系统投入运行时基本不需要调试,安装简捷。采用超短波通信时安装调试工作量大,要先进行现场信号测试,天线铁架架设,天线方向角度调试等工作。
5、覆盖范围广:构建供水调度监控系统要求数据通信覆盖范围广,扩容无限制,接入地点无限制,能满足山区、乡镇和跨地区的接入需求。 由于管网监控点数量众多,分布在全市范围内,部分管网监控点位于偏僻地区,而且地理位置分散。采用超短波通讯方式,覆盖范围只有30多公里;而采用GPRS方式,理论上在无线GPRS网络的覆盖范围之内,都可以实现监控。
6、数据传输速率高:GPRS网络传送速率理论上可达171.2Kbps,实际应用时数据传输速率在40-80Kbps左右,而目前一般的超短波数传电台传送速率多为2.4kbit/s或更低。
7、系统的传输容量大:监控中心站要和每一个管网监控点实现实时连接。由于管网监控点数量众多,系统要求能满足突发性数据传输的需要,而GPRS技术能很好地满足传输突发性数据的需要。
8、通信费用低,可按时间和流量进行收费。
9、系统易于扩展和维护。 
 三、油田油井数据GPRS无线通讯系统采用集散式监控结构主要由监控中心、GPRS DTU(GPRS数据传输单元)、油井数据采集终端三部分组成。
1、油井数据采集终端
油井数据终端可检测抽油机的载荷、电潜泵井电机电流、功率因数、井口温度、井口压力、井底流量等数据。数据采集终端设备通过RS232/RS485/RS422串口把采集到的数据传送给GPRS DTU。通过GPRS DTU接入移动公司为油田中心站提供的专用的GPRS网络,网络对油田信息采集点的接入地点、时间、数量没有限制可以随时增减。可以满足山区、偏远地区和跨地区接入的需求。
采集终端主要功能:自动监测、记录采油设备上的电压、电流、电度、温度、压力、流量、液位、界面、含水、示功图、红外报警等数据。采集数据的格式为模拟、数字和串行通信口。还能完成流量和电度的积算。还有辅助分析功能及时发现停电、缺相、油管堵塞、盗油、液面过低、配重不平衡等异常情况。
2、GPRS DTU介绍
DTU是指数据终端设备(Data Terminal unit),可以理解为下位GPRS发射终端,在进行通信时,传输数据的链路两端肯定存在DTU,在它的作用下对所传信息进行格式转换和数据整理校验。
GPRS DTU全称GPRS数据传输单元,在国内目前实际上对GPRS DTU具有更加明确的约定:GPRS DTU是专门用于将串口数据通过GPRS 网络进行传送的GPRS无线设备。
GPRS/CDMA功能及特点
◆内部集成TCP/IP协议栈
  GPRS DTU内部封装了PPP拨号协议以及TCP/IP协议栈并且具有嵌入式操作系统,从硬件上,它可看作是嵌入式PC与无线GPRS MODEM的结合;它具备GPRS拨号上网以及TCP/IP数据通信的功能。
◆提供串口数据双向转换功能
  GPRS DTU提供了串行通信接口,包括RS232,RS485,RS422等都属于常用的串行通信方式,而且GPRS DTU在设计上大都将串口数据设计成“透明转换”的方式,也就是说GPRS DTU可以将串口上的原始数据转换成TCP/IP数据包进行传送,而不需要改变原有的数据通信内容。因此,GPRS DTU可以和各种使用串口通信的用户设备进行连接,而且不需要对用户设备作改动。
◆支持自动心跳,保持永久在线
  GPRS通信网络的优点之一就是支持GPRS终端设备永久在线,因此典型的GPRS DTU在设计上都支持永久在线功能,这就要求DTU包含了上电自动拨号、采用心跳包保持永久在线(当长时间没有数据通信时,移动网关将断开DTU与中心的连接,心跳包就是DTU与数据中心在连接被断开之前发送一个小数据包,以保持连接不被断开)、支持断线自动重连、自动重拨号等特点。
◆支持参数配置,永久保存
  GPRS DTU作为一种通信设备,其应用场合十分广泛。在不同的应用中,数据中心的IP地址及端口号,串口的波特率等都是不同的。因此,GPRS DTU都应支持参数配置,并且将配置好的参数保存内部的永久存储器件内(一般为FLASH或EEPROM等)。一旦上电,就自动按照设置好的参数进行工作。
◆支持用户串口参数设置
  不同用户设备的串口参数有所不同,DTU连接用户设备的串口时,要根据用户设备串口的实际参数对DTU端进行相应设置,保证用户设备的正常通信和可靠数据传输。
◆符合工业化设计适应恶劣环境能力更强
◆ RS232 串口速率高达230400 bps
◆ 支持RS232 三线标准或九线标准
◆ 内置TCP/IP 协议栈,支持TCP/UDP 网络协议
◆ 数据终端永远在线
◆ 掉线自动重拨功能
◆ 通过超级终端类似于AT 指令方式或专用设置程序来设置通信参数
◆ 设备之间透明传输/非通明传输
◆ 支持静态IP 或域名方式连接远程主机
◆ 供电:+5V,可根据客户需要定制宽电压输入+5V~+40V
◆ 耗电:待机状态230~330mA;上网状态450~460mA;传输状态460~470mA
◆ 工作温度:-40℃ ~ +70℃
◆ 储存温度:-50℃ ~ +85℃
◆ 支持RS232/RS485/RS422串口进行通讯
3、数据监控中心
本系统中网络代理服务器可采用ADSL、LAN等INTELNET公网连接或移动提供DDN专线接入方式连接, GPRS数据传输终端上电后,它会根据预先设定在其内部的IP地址来主动访问网络代理服务器,通过代理服务器和监控中心建立TCP/IP链路。监控中心主站本身维护接入的每个终端的IP地址和ID号,当主站要向某个监控终端提出数据请求时,它会根据IP地址和ID号来找到对应的终端,将命令下发到该终端,终端响应后通过GRPS数据传输终端把数据发到网络代理服务器端口,通过端口影射转发到监控中心主站,即完成了一个应答式的通讯流程,当油田信息采集点数量增加,中心不用扩容即可满足需求。
在数据监控中心监控室能迅速准确掌握油田管理局辖区内各种油井的工作状态,及时发现隐患,遥控启停抽油设备。可以采集存储所有检测数据,如采油设备上的电压、温度、压力、流量、液位、界面、含水等参数。 同时也具有系统报警功能,系统综述功能。
四、安全可靠性
系统需要极高的系统安全保障和稳定性。安全保障主要是防止来自系统内外的有意和无意的破环,网络安全防护措施包括信道加密、信源加密、登录防护、访问防护、接入防护、防火墙等。稳定是指系统能够7×24小时不间断运行,即使出现硬件和软件故障,系统也不能中断运行。
数据中心可通过公网使用VPN接入到移动GPRS网,采用VPN方式成本比较低,企业不用租用专线,还可以利旧使用原有的VPN设备,移动终端需要安装具有VPN二次虚拟拨号的功能的软件。通过VPN方式,客户端在连接应用服务器前,要经过Radius服务器的认证整个数据传送过程得到了加密保护,安全性比较高,可充分保障速度和网络服务质量。
另外,数据中心也可以采用APN接入方式,租用专线接入到移动公司的GGSN设备上,这种成本高,安全性高、稳定可靠。
对于安全性要求非常高的系统,可考虑在专用APN接入的基础上再加上VPN接入方式的混合接入方式,进一步提高系统的安全性。
1、VPN虚拟专网模式:企业内部网络中配置VPN服务器,移动终端加载具有VPN二次虚拟拨号的功能的客户端软件。采用VPN安全技术,用户通过接入企业内部虚拟专网的方式与Internet进行隔离,可对 整个数据传送过程进行加密保护,有效避免非法入侵。
2、利用SIM卡的唯一性,对用户SIM卡手机号码进行鉴别授权,在网络侧对SIM卡号和APN进行绑定,划定用户可接入某系统的范围,只有属于指定行业的SIM卡手机号才能访问专用APN,移动终端与数据中心采用中国移动分配的专门的APN进行无线网络接入,普通手机的SIM卡号无法呼叫专门的APN。
3、对于特定用户,可通过数据中心分配特定的用户ID和密码, 其他没有数据中心分配的用户ID和密码的用户将无法登录进入系统,系统的安全性进一步增强。

五、总结
该监控系统中,使用组态软件和GPRS无线数传终端,系统无线遥测遥控主机(RTU)将检测到的单口采油井的现场状态,通过无线方式传送给监控中心,从而实现各单井状态的集中监控,减少人员投入,有力的缩短油井故障发现和排除时间,极大的提高了生产效率,同时系统的性价比特高。另外,本系统还非常适合输油管漏油,盗油监测,在实际应用中,取得了较好的经济效益和社会效益。
采用GPRS无线传输数据通讯方法解决了远程监测系统的通讯问题,比起其它有线通讯方式有着不可比拟的优越性。随着GPRS网络的逐渐完善和应用技术的不断成熟,GPRS的应用领域也会越来越广阔。

posted @ 2010-07-22 11:28 雅翔的天空 阅读(138) 评论(0) 编辑

前言
本文档以针对AYG-59C GSM MODEM介绍了AT 命令集及其基本的使用方法所有的AT命令均逐一列举并附有使用的例子对于其他类型的模块若有不同的操作请来信说明以便补充和修改另外为方便用户查找对AT命令还作了分类
第2 章介绍一般的一些AT 命令
第3 章介绍呼叫控制方面的AT 命令
第4 章介绍网络业务命令
第5 章介绍与安全性有关的命令
第6 章介绍电话本命令
第7 章介绍短消息命令
第8 章介绍补充业务命令
第9 章介绍数据业务命令
第10 章介绍与传真有关的命令
第11 章介绍基于V.24 和V.25 的命令
注意
用户在使用模块前应仔细阅读本手册在模块上使用AT 命令必须严格以本文档为参考我们不负责因用户随意使用AT 命令造成的任何损坏另外使用前应先确保模块连接配置正确无误
版权声明
本篇文档的版权由本公司独家享有任何人在未取得本公司书面许可前不得以任何形式包括但不限于转抄复印翻译电子邮件等形式向第三方透漏本文的任何部分
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 4 页 共 32 页
GSM AT 命令手册
1 简介
1.1 名词术语
1. TE Terminal Equipment 终端设备与DTE 等价比如一个计算机
它是和信息网络的一端相接的可提供必要功能的设备这些功能使得用户通过接入协议能接入网络如发送信息和接收信息也可指由线路电路信道数据链路的终端或起点组成的设备
2. TA Terminal Adapter 终端适配器与DCE 等价
提供终端适配功能的物理实体是一种接口设备
3. DCE Data Circuit terminating Equipment 数据电路终接设备
一种接口设备在线路之间进行代码或信号转换同数据终端设备实现接口能够建立保持和释放数据终端设备与数据传输线之间的连接
4. DTE Data Terminal Equipment 数据终端设备
它具有向计算机输入和接收计算机输出的能力与数据通信线路连接的通信控制能力以及一定的数据处理能力
5. ME Mobile Equipment 移动设备比如GSM 话机就属于ME
移动台中的一种发射机或接收机或发射机与接收机二者的组合
6. MS Mobile Station 移动台
在移动通信业务中可以在移动中使用的通信站包括车船载台便携台和手持机
1.2 AT 命令简介
AT 即Attention AT 命令集是从TETerminal Equipment 或DTEData Terminal Equipment向TATerminal Adapter或DCEData Circuit Terminating Equipment发送的通过TATE 发送AT 命令来控制MSMobile Station的功能与GSM 网络业务进行交互
用户可以通过AT 命令进行呼叫短信电话本数据业务补充业务传真等方面的控制
2 AT 命令祥解
2.1 一般命令
2.1.1 AT+CSCS 选择TE 字符集
该命令通知ME 选择的字符集ME 可以对输入或显示的字符进行转化此命令用于发送读或写短消息
命 令
AT+CSCS=”GSM”
GSM 缺省字符集
响 应
OK
命令有效
命 令
AT+CSCS=”PCCP437”
PC 字符集编码437
响 应
OK
命令有效
2.1.2 AT+CIMI 请求IMSI International Mobile Subscriber Identity
该命令读取SIM 卡的IMSI国际移动用户识别号读IMSI 之前可能需要输入PIN 码
命 令
AT+CIMI
读取IMSI
响 应
208200120320598
IMSI 值15 位数字 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 5 页 共 32 页
GSM AT 命令手册
2.1.3 AT+GCAP 性能列表
该命令提供性能列表
命 令
AT+GCAP
获取性能列表
响 应
+GCAP: +CGSM +FCLASS
OK
支持GSM 命令和FAX 命令
2.1.4 A/ 重复刚才的命令
重复刚才执行过的命令A/命令本身不能重复
2.1.5 AT^SMSO 关闭电源
该命令停止GSM 协议栈和物理层的工作
命 令
AT^SMSO
关闭
响 应
^SMSO:MS OFF
OK
正常退出网络并关机
2.1.6 AT+CMEE 报告ME 错误
该命令设置是否使用结果码+CME ERROR : <xxx> 或+CMS ERROR :<xxx> 来代替简单的ERROR
命 令
AT+CMEE=0
禁止ME 错误报告使用ERROR
响 应
OK
命 令
AT+CMEE=1
使用+CME ERROR : <xxx> 或+CMS ERROR :<xxx>
响 应
OK
2.2 呼叫控制命令
2.2.1 ATD 拨号
命令行格式
ATD <Numb> [I / i] [G/g] [;]
ATD> <PhbStr> [I / i] [G/g] [;]
ATD> mem <n> [I / i] [G/g] [;]
ATD> <PhbIndex> [I / i] [G/g] [;]
ATD <GSM sequence>
ATD 命令用于建立会话数据业务或传真业务也可以控制补充业务
对于数据或传真业务用户向模块发送如下ASCII 字符在此命令之前用AT+CBST 命令选择载波类型
ATD<nb> <nb> 为被叫号码
对于语音电话用户向模块发送如下ASCII 字符在此命令之前用AT+CBST 命令选择载波类型或使用缺省值
ATD<nb> <nb> 为被叫号码
注意对于国际号码号码前需加+如ATD+33146290800
对ATD 命令的响应如下表所示
详细结果代码
数字化结果代码
说明
OK
0
呼叫成功仅对语音呼叫
CONNECT<speed>
10,11,12,13,14,15
呼叫成功对数据电话<speed> 采用模
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 6 页 共 32 页
GSM AT 命令手册
块协商后的值
BUSY
7
被叫方忙
NO ANSWER
8
固定连接时间到后未检测到挂起信号
NO CARRIER
3
呼叫建立失败或远端用户已释放
从电话本存储在SIM 卡上直接拨号采用以下的命令行格式
ATD> <index> 呼叫存储在电话本位置<index> 处的号码
ATD> mem <index> mem 是电话本存储区由AT+CPBS 来选择
在当前有一个电话的情况下如果要发起对外的呼叫应先将当前的电话挂起再建立连接
命 令
ATD*#21#
查询呼叫转移状态
响 应
+CCFC: 0,7
没有呼叫转移
命 令
ATD**61*+33146290800**25#
登记无应答呼叫转移无应答时间定为25 秒
响 应
OK
命令已执行
命 令
ATD*2#
呼叫序列错误
响 应
+CME ERROR 3
2.2.2 ATH 呼叫挂起
用户使用ATH( 或ATH0) 来切断与远端用户的连接在有多个电话的情况下所有的电话都释放包括正在通话挂起和等待的电话
2.2.3 ATA 呼叫应答
当命令收到呼叫来电设置RingInd 信号并向用户发送RING然后等待用户应答呼叫
响 应
RING
有来电
命 令
ATA
应答此来电
响 应
OK
接受呼叫
命 令
ATH
挂断电话
响 应
NO CARRIER
电话已切断
2.2.4 AT+CEER 扩展错误报告
如果呼叫建立发起或应答失败该命令报告呼叫释放的原因
命 令
ATD123456789
发起语音呼叫
响 应
NO CARRIER
呼叫建立失败
命 令
AT+CEER
查询失败原因
响 应
+CEER : Error <xxx>
OK
<xxx> 为错误号在GSM 协议04.08 中定 义
2.2.5 AT+VTS, AT+VTD DTMF 信号
模块允许用户发送DTMF 拨号音
定义拨号音长度使用
AT+VTD=<n> <n>*100 即拨号音的长度以ms 为单位
如果n<4 拨号音长度为300ms缺省值
命 令
AT+VTD=6
定义拨号音长度为600ms
响 应
OK
命令有效
命 令
AT+VTD=0
设成缺省值
响 应
OK
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 7 页 共 32 页
GSM AT 命令手册
发送DTMF 拨号音必须当前有正在通话的电话使用
AT+VTS=<Tone> <Tone> 由0 9 *, #, A, B, C, D 中的字符构成
命 令
AT+VTS=A
响 应
OK
命 令
AT+VTS=11
响 应
+CME ERROR: 4
拨号音有错
命 令
AT+VTS=4
响 应
+CME ERROR: 3
没有连接
例如如果要发送拨号音序列13#用户应如下操作
AT+VTS=1+VTS=3+VTS=#
2.2.6 ATS0 自动应答
S0 参数控制自动应答
命 令
ATS0=2
2 声振铃后自动应答
响 应
OK
命 令
ATS0?
查询当前值
响 应
002
OK
通常3 个字符前导0
命 令
ATS0=0
无自动应答
响 应
OK
命令有 效
其他的S 参数S6,S7,S8…… 不执行
2.3 网络业务命令
2.3.1 AT+CSQ 信号质量
该命令用来检测接收信号的强度指示<rssi>和信道误码率<ber> 无论有没有插入SIM 卡
<rssi> :
0 : -113 dBm
1 : -111 dBm
2...30 : -109 到-53 dBm
31 : -51dBm
99 : 未知或不可检测
<ber> :
0...7 : 参考GSM 05.08 中的RXQUAL 值
99 : 未知或不可检测
命 令
AT+CSQ
响 应
+CSQ: <rssi>,<ber>
OK
<rssi> 和<ber> 的值如上定义
2.3.2 AT+COPS 运营商选择
选择运营商有3 种可能
. 移动台进入manual手动模式想查找提供给用户的运营商如果查找正确并注
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 8 页 共 32 页
GSM AT 命令手册
册成功移动台处于idle 状态
. 移动台进入automatic 自动模式想查找本地运营商如果查找正确并注册成功移动台处于idle 状态如果不成功移动台自动搜索其他的网络
. 移动台进入manual/automatic 手动/自动模式想查找提供给用户的运营商类似处于manual 模式如果不成功进入automatic 模式
读取命令返回当前模式和选择的运营商
要想选择并注册网络运营商发送如下的命令行
AT+COPS=<mode>, [<format> [ , <oper> ] ]
对AT+COPS=<mode> 命令的可能的响应
OK ( 选择全部的网络业务)
+CME ERROR: 30 ( 没有网络业务)
+CME ERROR: 32 ( 网络不允许OE 只允许紧急电话)
+CME ERROR: 3 ( 电话期间不允许此操作)
+CME ERROR: 4 ( 错误参数)
对AT+COPS? 命令的响应语法
+COPS: <mode> [, <format>, <oper> ]
对AT+COPS=? 命令的响应语法
+COPS: [ 列举所支持的<stat>, <oper> 字母数字型数字型]
命令行参数值如下定义
<mode>:
0: 自动缺省值
1: 手动
3: 用于设置<format> 域对于读取命令AT+COPS?
4: 手动/ 自动要有<oper> 域如果手动选择失败进入自动模式
<format> <oper> 域的格式
0 长字母数字格式最多16 个字符
1 短字母数字格式最多8 个字符
2 数字格式缺省值
<stat> <oper> 的状态
0: 未知
1: 可用
2: 当前正在使用
3: 禁止
<oper> 运营商标识
命 令
AT+COPS?
响 应
+COPS:0
OK
未找到网络
命 令
AT+COPS?
响 应
+COPS:0,0,”UNICOM”
OK
联通
2.3.3 AT+CREG 网络注册
该命令用于获知移动台的注册情况
命令语法 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 9 页 共 32 页
GSM AT 命令手册
AT+CREG= <mode>
响应格式
+CREG: <mode>, <stat> [ ,<lac>,<ci> ] 仅对AT+CREG? 命令而言
<mode>
0 禁止网络注册主动提供结果码缺省值
1 采用网络注册结果码+CREG : <stat>
2 采用网络注册主动提供结果码+CREG: <stat>,<lac>,<ci>
<stat>
0 未注册ME当前没有搜寻新的运营商
1 已注册本地网络运营商
2 未注册ME正在搜寻新的运营商
3 注册拒绝
4 未知
5 已注册处于漫游区
<lac> 字符型位置区域代码采用十六进制编码2字节如00c3=193
<ci> 字符型小区ID 号采用十六进制编码2字节
命 令
AT+CREG?
响 应
+CREG: <mode>,<stat>
OK
如上定义
命 令
AT+CREG=<mode>
禁止/ 开放网络注册结果码
响 应
OK
命令有效
命 令
AT+CREG=?
响 应
+CREG: (0-2)
支持012 模式
命 令
AT+CREG?
响 应
+CREG: 01341B2DBF
OK
已注册
命 令
AT+CREG?
响 应
+CREG: 00
OK
未注册
2.4 安全性命令
2.4.1 AT+CPIN 输入PIN 码
该命令用来输入ME 密码CHV1/CHV2/PUK1/PUK2– CHV1/CHV2 为4-8 个数字PUK1/PUK2 为8 个数字
如果用户企图在输入有效的SIM 卡PIN 码前建立呼叫模块拒绝ATD 命令返回+CME ERROR:11
命 令
AT+CPIN=1234
输入PIN 码
响 应
OK
PIN 码正确
命 令
AT+CPIN=5678
输入PIN 码
响 应
+CME ERROR: 3
操作不允许PIN 码已经输入
注意如果输入3 次PIN 码都不成功则需要输入PUK 码除非需要慎用该命令否则可能导致SIM 卡失效 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 10 页 共 32 页
GSM AT 命令手册
命令行格式为
AT+CPIN=<Puk>,<NewPin>
第2 个参数作为新的PIN 码
命 令
AT+CPIN=00000000,1234
输入PUK 码和新的PIN码
响 应
+CME ERROR: 16
PUK 码错误
命 令
AT+CPIN=12345678,1234
输入PUK码和新的PIN码第2 次尝试
响 应
OK
PUK正确新的PIN已存储
要想知道输入的是哪种密码用以下的命令
AT+CPIN
可能的响应如下
+CPIN: READY
ME 不需要任何密码
+CPIN: SIM PIN
需要CHV1 码
+CPIN: SIM PUK
需要PUK1 码
+CPIN: SIM PIN2
需要CHV2 码
+CPIN: SIM PUK2
需要PUK2 码
+CPIN: PH-SIM PIN
需要SIM 卡锁phone-to-SIM
+CPIN: PH-NET PIN
需要网络身份识别
+CME ERROR: <err>
SIM 卡操作失败13空缺10等
如果10 次输入PUK 码失败则返回+CME ERROR : 13 SIM 卡需要更换
下面的例子表示3 次输入PIN 错误输入PUK 码成功
AT+CPIN?
+CPIN: SIM PIN
查询PIN 码当前状态
模块要求输入PIN 码
AT+CPIN=1235
+CME ERROR: 16
第一次尝试输入PIN 码
错 误
AT+CPIN=1236
+CME ERROR: 16
第二次尝试输入PIN 码
错 误
AT+CPIN=1237
+CME ERROR: 16
第三次尝试输入PIN 码
错 误
AT+CPIN?
+CPIN: SIM PUK
查询状态
要求输入PUK 码
AT+CPIN=99999999,5678
OK
PUK 码输入并且有效5678 为新的PIN 码
AT+CPIN?
+CPIN: READY
查询状态
模块准备好
如果返回的响应为+CME ERROR: 17表明模块要求输入PIN2 码
同样如果PIN2 码有误则要求输入PUK2 码
例如往固定拨号电话本FDN 里写入记录就需要PIN2 码见下表
命 令
AT+CPBS=”FD”
选择FDN
响 应
OK
命 令
AT+CPBW=5,"01290917",129,"Jacky"
向FDN 的位置5 写入记录
响 应
+CME ERROR:17
需要PIN2 码
命 令
AT+CPIN?
响 应
+CPIN: SIM PIN2
命 令
AT+CPIN=5678
输入PIN2 码 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 11 页 共 32 页
GSM AT 命令手册
响 应
OK
命 令
AT+CPBW=5,"01290917",129,"Jacky"
再次写入FDN
响 应
OK 命令成功
注模块只要求输入一次PIN2 码或PUK2 码如果输入不正确下一条AT+CPIN? 命令返回+CPIN: READY
2.4.2 AT+CPIN2输入PIN2 码
这个专门的命令用来输入PIN2 码或PUK2 码定义新的PIN2 码
前面提到的AT+CPIN 命令也可以要求输入PIN2 或PUK2 码但是只有在前一项命令执行导致PIN2认证失败的情况下才会允许输入PIN2 或PUK2 码
PIN2 码长度为4-8个数字PUK2 码长度为8个数字
命令行格式
AT+CPIN2=<pin2>
命 令
AT+CPIN2=1234
输入PIN2 码
响 应
OK
正 确
命 令
AT+CPIN2=5678
输入PIN2 码
响 应
+CME ERROR: 3
操作不允许已经输入过PIN2 码
如果3 次输入PIN2 码均错误则要求输入PUK2 码命令行格式为
AT+CPIN2=<puk2>,<NewPin2>
新的PIN2 码作为第二个参数
命 令
AT+CPIN2=00000000,1234
输入PUK2 码和新的PIN2 码
响 应
+CME ERROR: 16
OUK2 码错误
命 令
AT+CPIN2=12345678,1234
输入PUK2 码和新的PIN2 码, 第2 次尝试
响 应
OK
PUK2 码正确PIN2 码已存储
用命令AT+CPIN2? 来查询输入的是哪种类型的密码
2.4.3 AT+CPINC PIN 码剩余尝试次数
该命令显示输入PIN 码包括PIN1,PIN2,PUK1,PUK2 的有效尝试次数
命令AT+CPINC
响应+CPINC : <n1>,<n2>,<k1>,<k2>
<n1>, <n2> 为PIN1, PIN2 码的剩余尝试次数0-3
<k1>, <k2> 为PUK1, PUK2 码的剩余尝试次数0-10
要运行该命令SIM 卡须在初始化之前插入否则返回错误+CME ERROR : 10
命 令
AT+CPINC
查询状态
响 应
+CPINC : 2,3,10,10
第一次输入PIN1 码错误
命 令
AT+CPINC?
查询状 态
响 应
+CPINC : 2,3,10,10
第一次输入PIN1 码错误
2.4.4 AT+CLCK 功能锁定
该命令可以用来锁定解锁或查询ME 的网络功能<fac>
命令语法AT+CLCK= <fac>,<mode>[,<passwd>[,<class>] ]
响 应+CLCK: <status> [ ,<class1> ]
+CLCK: <status>,<class2>
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 12 页 共 32 页
GSM AT 命令手册
[ … ] ]
<fac> 的取值范围:
“PS”: 用8 位数字密码锁定SIM 卡功能
“SC”: 要求PIN 码(<mode>=1) / 不用PIN 码(<mode>=0)
“AO”: BAOC( 禁止所有的呼出电话)
“OI”: BOIC( 禁止呼出的国际电话)
“OX”: BOIC-exHC( 禁止呼出国际电话除了呼叫注册地电话)
“AI”: BAIC 禁止所有的呼入电 话
“IR”: BIC-Roam 在非注册国漫游时禁止呼入电话
“AB”: 所有的限制业务
“AG”: 所有的呼出限制业务
“AC”所有的呼入限制业务
“PN”: 用8 位数字密码锁定网络NCK
“FD”: SIM 卡固定呼叫号码FDN内存特色需要PIN2 码
<mode>:
0 解锁网络功能
1 锁定网络功能
2 查询状态
<class>:
1 语音电 话
2 数据对于所有的负载业 务
4 传真传真业 务
8 短消 息
7 所有类型缺省值
如果想综合不同的类型会导致激活/ 去激活/ 查询所有的类型
命 令
AT+CLCK="SC",1,1234
使用PIN 码
响 应
OK
PIN 码正确
命 令
AT+CLCK= ?
查询支持的功能
响 应
+CLCK :(PSSCAOOIOXAIIR,ABAGACFDPN)
OK
列举支持的功能
命 令
AT+CLCK="AO",1,1234,2
激活限制所有的呼出电话功能对数据电话
响 应
OK
2.4.5 AT+CPWD 更改密码
命令格式AT+CPWD= <fac>, <oldpwd>, <newpwd>
该命令用来更改密码如PIN 码呼叫限制密码等其中<fac> 的值和AT+CLCK 命令相同
对于网络锁定PN10次解锁均失败后则不允许解 锁
命 令
AT+CPWD=?
查询支持的值
响 应
+CPWD: ("PS", 8),("SC", 8),("AO",4),("OI",4), ("OX",
PIN1/PIN2 码4-8 个数字对于呼叫限制最多4位码 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 13 页 共 32 页
GSM AT 命令手册
4),("AI",4),("IR", 4), ("AB", 4), ("AG",4), ("AC", 4),("P2", 8), ("FD",8), ("PN", 8)
OK
命 令
AT+CPWD="SC",1234,5555
更改PIN 码
响 应
OK
PIN 码正确
命 令
AT+CPWD="PN",12345678,00000000
更改NCK
响 应
OK
2.5 电话本命令
2.5.1 AT+CPBS 选择电话本存储区
该命令选择电话本存储区可用的存储区包括AND即SM 自动拨号电话本FDN固定拨号电话本受限制MSISDNSIM卡本机号EN紧急电话电话本
命 令
AT+CPBS= "SM"
选择ADN 电话 本
响 应
OK
命 令
AT+CPBS=?
查询支持的值
响 应
+CPBS:
("SM",”FD”,”ON”,"EN")
OK
支持ADN,FDN,MSISDN电话本
命 令
AT+CPBS ?
查询状态
响 应
+CPBS : "SM",10,20
OK
选择的是ADN 电话本已用个10 个位置共有20 个位置
响 应
ERROR
未检测到SIM卡
如果当前使用FDN 电话本不能选择AND
2.5.2 AT+CPBR 读取电话本
该命令返回用AT+CPBS 命令选择的存储区一定范围内的记录
命 令
AT+CPBR=?
检测命 令
响 应
+CPBR: (1-50), 20,10
OK
有50 个存储位置电话号码最长20位相关信息最多10 个字符
命 令
AT+CPBR=12,14
读取位置12-14 的记录
响 应
+CPBR :
12,"112",129,"Emergency"
+CPBR : 13,"+331290909",145,
"Fred"
+CPBR :14, "0146290808",129,
"Zazi"
OK
显示记录位置号号码号码类型相关信息
命 令
AT+CPBR=10
读取记录10
响 应
+CPBR :10,"0146290921",129,"Ro
b"
OK
显示记录10
命 令
AT+CPBR=52
读取记录52
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 14 页 共 32 页
GSM AT 命令手册
响 应
+CME ERROR: 21
位置号错误
2.5.3 AT+CPBW 写电话本
该命令向当前的电话本存储区某一位置处写入记录
对EN电话本不允许使用此命令因为它不可写
命 令
AT+CPBW=?
检测命令
响 应
+CPBW: (1-50),20,(129,145),10
OK
有50个位置号码最长20位有2种类型字符信息最多10个
命 令
AT+CPBW=3
删除位置3 的记录
响 应
OK
删除成功
命 令
AT+CPBW=5,"112",129 ,"SOS"
向位置5 写入记录
响 应
OK
命 令
AT+CPBW=,"+33145221100",145,"SOS"
向第一个空闲位置写入记录
响 应
OK
命 令
AT+CPBW=7,"012345678901234567890",129 ,"WAVE"
向位置7 写入记录
响 应
+CME ERROR: 26
号码过长
当固定拨号电话本FDN锁住时此命令无效FDN 解锁后需要输入PIN2 码
命 令
AT+CPBS=”FD”
选择FDN
响 应
OK
命 令
AT+CPBW=5,"01290917",129,"Jacky"
向FDN 位置5 写入记录
响 应
+CME ERROR:17
要求输入PIN2 码
命 令
AT+CPIN?
响 应
CPIN SIM PIN2
命 令
AT+CPIN=678
输入PIN2 码
响 应
OK
命 令
AT+CPBW=5,"01290917",129,"Jacky"
向FDN 位置5 写入记录
响 应
OK
允许写入FDN
2.6 短消息命令
2.6.1 参数定义
<da> 目标地址
<dcs> 数据编码方案
<dt> 时间字符格式yy/MM/ddhh :mm :ss±zz
<fo> 第一个字节对SMS-SUBMIT 来说缺省值为17
<index> 内存中的存储位置
<length> 对TEXT 方式指字符个数
对PDU 方式指数据单元的字节数
<mem1> 用来列举读取和删除消息的内存区
<mem2> 用来写发送消息的内存区 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 15 页 共 32 页
GSM AT 命令手册
<mid> 广播消息标识
<mr> 消息参考
<oa> 发起方地址
<pid> 协议标识
<pdu> 16 进制表示的数据单元
<ra> 可容纳地址
<sca> 业务中心地址
<scts> 业务中心时间标记以字符格式yy/MM/dd,hh :mm :ss±zz
<sn> 广播消息序列号
<st> SMS-STATUS-REPORT 的状态
<stat> 内存中消息的状态
<tooa> 地址<oa> 的类型
<tora> 地址<ra> 的类型
<tosca> 地址<sca> 的类型
<total1> <mem1> 中的消息总存储空间
<total2> <mem2> 中的消息总存储空间
<used1> <mem1> 中已用的存储空间
<used2> <mem2> 中已用的存储空间
<vp> 短消息的有效周期缺省为167
2.6.2 AT+CSMS 选择消息业务
支持的业务包括移动台发起SMS-MO和接收SMS-MT的短消息小区广播消息SMS-CB业务
命令格式AT+CSMS=<service>
<service>
0SMS 的AT 命令兼容GSM 07.05 Phase 2
1SMS 的AT 命令兼容GSM 07.05 Phase 2+
命 令
AT+CSMS=0
设置AT 命令兼容Phase 2
响 应
+CSMS: 1, 1, 1
OK
支持SMS-MO, SMS-MT, SMS-CB
命 令
AT+CSMS=
响 应
+CSMS:01
OK
2.6.3 AT+CPMS 选择短消息存储区
该命令允许定义读写短消息的存储区
命令格式AT+CPMS=<mem1>, [<mem2>]
<mem1> SM 短消息存储区存在SIM 卡上缺省值
<mem2> SM 短消息存储区存在SIM 卡上缺省值
如果命令正确返回+CPMS: <used1>,<total1>,<used2>,<total2>
命 令
AT+CPMS=?
检测消息存储区
响 应
+CPMS: (("SM"),("SM"))
OK
读列举删除使用SM
写发送使用SM
命 令
AT+CPMS?
读当前值
响 应
+CPMS: "SM", 3, 10,"SM",3,10
已有3 条消息存入SIM 卡
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 16 页 共 32 页
GSM AT 命令手册
OK
一共可以存10 条消 息
2.6.4 AT+CMGF 选择消息格式
选择消息为TEXT 或PDU 格式
用PDU 格式包括所有头信息的短消息以二进制方式传送写成十六进制的格式
用TEXT 格式命令和响应均为ASCII 字符
选择的消息格式存储在EEPROM 里
命 令
AT+CMGF ?
查询当前值
响 应
+CMGF: 1
OK
TEXT 方 式
命 令
AT+CMGF=?
检测命令
响 应
+CMGF: (0-1)
OK
支持TEXT 和PDU 方式
2.6.5 AT+CSDH 显示 TEXT 方式参数
该命令为TEXT 方式的结果代码提供更多的信息
命 令
AT+CSDH?
查询当前值
响 应
+CSDH: 0
OK
不显示头信息
2.6.6 AT+CNMI 新消息提示
命令格式AT+CNMI=<mode>,<mt>,<bm>,<ds>,<bfr>
<mode> 控制主动提供结果码的过程只支持<mode>=2, 对于值013只是接受并返回OK其执行的过程与值2 一样
0结果代码缓冲区在TA如果TA 的缓冲区满则提示信息存储在其他地方或者删除最旧的提示信息以新的代替
1当TA-TE 链接保留时拒绝新消息结果码否则直接将其传送给TE
2当TA-TE 链接保留时结果代码缓存在TA预约后发送给TE否则直接将其传送给TE
3否则直接将结果码传送给TE当TA 处于在线数据模式时特殊波段内的TA-TE 链接用来嵌入结果码和数据
<mt> 为SMS-DELIVERs 设置结果码提示发送路径缺省值为0
0SMS-DELIVER 提示不需要发送路径
1SMS-DELIVER 由+CMTI : SM, <index> 来提示发送路径
2SMS-DELIVER 除了class 2 消息由2 种结果码来发送
+CMT : [<alpha>,] <length>
<pdu> (PDU 方式)
+CMT : <oa>,[<alpha>,] <scts> [,<tooa>, <fo>, <pid>, <dcs>, <sca>, <tosca>, <length>]
<data> TEXT 方 式
3class 3 的SMS-DELIVER 消息采用<mt>=2 中的结果码来发送其他类型的消息 用 <mt>=1的格式
<bm> 设置存储接收的广播消息的规则 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 17 页 共 32 页
GSM AT 命令手册
0不向TE 发送广播消息提示信息广播消息已存储缺省值
1广播消息已存储并以格式+CBMI:BMl, <index>向用户显示存储位置
2新的广播消息采用2 种格式直接发送给TE
+CBM : <length>
<pdu> PDU 方式
+CBM :<sn>,<mid>, <dcs>,<page>,<pages>
<data> Text 方式
3对class 3 的广播消息采用<bm>=2 的操作其他类型的消息采用<bm>=1 的操作
<ds> 用于SMS_STATUS_REPORT, 缺省值为0
0不发送SMS-STATUS-REPORT
1采用如下格式发送SMS-STATUS-REPORT
+CDS : <length>
<pdu> (PDU 方式)
+CDS : <fo>,<mr>, [<ra>] , [<tora>], <scts>,<dt>,<st> (Text 方式)
<bfr> 缺省值为0
0当<mode> 取值为1-3 时TA 缓冲区中的结果码发送给TE
1当<mode> 取值为1-3 时清除TA 缓冲区中的结果码
命 令
AT+CNMI=2,1,0,0,0
<mt>=1
响 应
OK
响 应
+CMTI : "SM", 1
收到新消息的提示
2.6.7 AT+CMGR 读取短消息
命令格式AT+CMGR=<index>
采用TEXT 方式的响应
+CMGR :<stat>,<oa>,[<alpha>,] <scts> [,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]
<data> 对于SMS-DELIVER
+CMGR :<stat>,<da>,[<alpha>,] [,<toda>,<fo>,<pid>,<dcs>, [<vp>],<sca>, <tosca>,<length>]
<data> 对于SMS-SUBMIT
采用PDU 方式的响应
+CMGR: <stat>, [<alpha>] ,<length>
<pdu>
命 令
AT+CMGR=1
读消息
响 应
+CMGR: "REC UNREAD",
"0146290800","98/10/01,18 :22 :11+00",
ABCdefGHI
OK
TEXT 方 式
2.6.8 AT+CMGL 列举短消息
用户使用该命令来读取某种类型的存储的短消息
命令格式AT+CMGL=<stat>
采用TEXT 方式的响应 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 18 页 共 32 页
GSM AT 命令手册
+CMGL:<index>,<stat>,<da/oa>[,<alpha>],[<scts>,<tooa/toda>,<length>]
<data>
+CMGL:<index>……
采用PDU 方式的响应
+CMGL : <index>,<stat>, [<alpha>], <length>
<pdu>
+CMGL:<index>……
<stat> 的取值
PDU 方式
TEXT 方式
说 明
0
REC UNREAD
接收未读
1
REC READ
接收已读
2
STO UNSENT
存储未发送
3
STO SENT
存储已发送
4
ALL
所有消息
命 令
AT+CMGL=”REC UNREAD”
列举未读消息
响 应
+CMGL: 1, "REC
UNREAD","0146290800",
test
+CMGL: 3, "REC
UNREAD","46290800"
hello
OK
由2 条未读消息读后其状态变为REC READ
2.6.9 AT+CMGS 发送短消息
采用TEXT 方式的命令格式
AT+CMGS= <da> [ ,<toda> ]
text is entered 按ctrl-Z 发送出去/ 按ESC 取消
采用PDU 方式的命令格式
AT+CMGS= <length>
PDU is entered 按ctrl-Z 发送出去/ 按ESC 取消
PDU 发送只能输入十六进制的字符0-9A-F
命 令
AT+CMGS="+33146290800"
Please Call me soon, Fred.<ctrl-Z>
用TEXT 方式发送消息
响 应
+CMGS : <mr>
OK
发送成功
命 令
AT+CMGS=<length>
<pdu><ctrl-Z>
用PDU 方式发送消息
响 应
+CMGS : <mr>
OK
发送成功
返回给用户的消息参考值<mr> 由模块分配这个值从0 开始每发送一次消息递增1 不论是否发送成功在0-255 之间循环
2.6.10 AT+CMGW 向内存写入消息
该命令存储短消息SMS-DELIVER 或SMS-SUBMIT返回存储位置<index> 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 19 页 共 32 页
GSM AT 命令手册
消息输入的格式与AT+CMGS 命令类似
TEXT 方式命令格式
AT+CMGW= <oa/da> [,<tooa/toda> [,<stat> ] ]
enter text 按ctrl-Z 发送出去/ 按ESC 取消
PDU 方式命令格式
AT+CMGW= <length> [,<stat>]
give PDU 按ctrl-Z 发送出去/ 按ESC 取消
响应格式+CMGW: <index>
+CMS ERROR <err> 写入出错
<oa/da> 字符格式的发出/ 目标地址值
<tooa/toda> 发出/ 目标地址值类 型
<stat> 状态值缺省为2表示存储消息的状态如果命令行没有此域存储的消息被认为是要发送的消息
PDU 方 式
TEXT 方 式
0
REC UNREAD
1
REC READ
2
STO UNSENT
3
STO SENT
命 令
AT+CMGW="+33146290800"
Hello, how are you ?<ctrl-Z>
写入消息
响 应
+CMGW : 4
OK
消息存储在位置4
2.6.11 AT+CMSS 发送存储区内的消息
该命令将存储区内的消息发送出去
命令格式AT+CMSS=<index>[,<da> [,<toda>] ]
响 应
+CMSS : <mr>
+CMS ERROR: <err> 发送出错
如果提供新的地址<da>它将代替存储在消息内的地址
只有TEXT 方式才能使用这个命令
命 令
AT+CMGW=0660123456
Today is my birthday<ctrl-Z>
写入消 息
响 应
+CMGW : 5
OK
消息存在位置5
命 令
AT+CMSS=5
发送消息5
响 应
+CMSS : <mr>
OK
发送成功
2.6.12 AT+CSMP 设置 TEXT 方式参数
该命令用来选择<vp>, <pid>, <dcs> 的值
命令格式AT+CSMP=<fo>, <vp>, <pid>,<dcs>
<fo> 字节由6 个域组成:
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 20 页 共 32 页
GSM AT 命令手册
B7
B6
B5
B4
B3
B2
B1
B0
RP
UDHI
SRR
VPF
RD
MT1
RP: Reply Path (答复路径)TEXT 方式不用此域
UDHI: User Data Header Information (用户数据头信息)如果用户数据域开始有头信息则置为1 在AT+CSMP 命令里不支持这项功能但是PDU 方式可以用(AT+CMGS)
SRR: Status Report Request 状态报告请求需要状态报告则置1
VPFValidity Period Format 有效时间格式
b4=0 b3=0 表示<vp> 不提供
b4=1 b3=0 表示<vp> 提供
其他格式不支持
RDReject Duplicates 丢弃重复内容b2=1 要求服务中心丢弃已经保存的同样的SMSSUBMIT 消息
MTI Message Type Indicator 消息类型指示
b1=0 b0=0 为SMS-DELIVER 消息SC 发给MS
b1=0 b0=1 为SMS-SUBMIT 消息MS 发给SC
在TEXT 方式下<vp> 缺省值为16724小时其取值如下表所示
VP value
Validity period value
0 to 143
(VP+1) x 5 minutes (up to 12 hours)
144 to 167
12 hours + (VP-143) x 30 minutes
168 to 196
(VP-166) x 1 day
197 to 255
(VP-192) x 1 week
<pid> 显示使用的上层协议或者某种类型的远端处理装置例如0x24 表示语音电话0x22 表示3 类传真
<dcs> 确定信息的编码方式目前支持GSM 字符和数据UCS2 暂时不支持
命 令
AT+CSMP=17,23,64,244
<vp> = 23 (2 小时)
<dcs> = GSM 8 位字符
响 应
OK
2.6.13 AT+CMGD 删除短消息
删除存储的消息
命 令
AT+CMGR=3
读取消息
响 应
+CMGR: "REC UNREAD",
"0146290800",,"98/10/01,18:19:20+00"
Received Message!
OK
命 令
AT+CMGD=3
删 除
响 应
OK
2.6.14 AT+CSCA 设置短消息中心地址
该命令用于设置短消息中心地址 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 21 页 共 32 页
GSM AT 命令手册
命 令
AT+CSCA=" 8613800210500"
设置中心地址
响 应
OK
命 令
AT+CSCA
查询短消息中心地址
响 应
" 8613800250500"145
OK
2.6.15 AT+CSCB 选择广播消息类型
该命令选择ME 接收哪种类型的广播消息支持PDU 和TEXT 方式
命令格式AT+CSCB= <mode>, [ <mids>, [ <dcss> ] ]
<mode> 为0 表示激活接收广播消息为1 表示去激活接收广播消息
<mids> 表示ME 监听哪种类型的消息识别
<dcss> 表示支持的语言1 为英语
命 令
AT+CSCB=1
去激活接收广播消息
响 应
OK
广播消息接收停止
2.7 补充业务命令
2.7.1 AT+CCFC 呼叫转移
命令格式
AT+CCFC= <reason>, <mode> [, <number> [,<type> [,<class>[,<subaddr> [, <satype> [,<time> ] ] ] ] ] ]
响应格式
+CCFC:<status>,<class1>[,<number>,<type>[,<subaddr>,<satype>[,<time> ] ] ]
+CCFC:<status>,<class2>[,<number>,<type>[,<subaddr>,<satype>[,<time> ] ] ][ – ] ]
<reason>
0无条件
1ME 忙
2无应答要用<time>
3无法接通
4所有的电话转移
5所有有条件电话转移
<mode>
0 禁止
1 使能
2 查询
3 登 记
4 释 放 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 22 页 共 32 页
GSM AT 命令手册
<class>:
1 语 音
2 数 据
4 传 真
8 短消 息
7 所有种类
不支持合并不同种类的操 作
<time> 无应答转移时的等待时间1-30以秒为单位缺省值为20 秒
命 令
AT+CCFC=0,3, "0146290800"
登记无条件呼叫转移
响 应
OK
命令有 效
命 令
AT+CCFC=0,2
查询无条件转移情况
响 应
+CCFC:1,1, "0146290800",129
+CCFC:1,2, "0146290802",129
+CCFC:1,4, "0146290804",129
OK
转移语音电话
转移数据电话
转移传真电话
2.7.2 AT+CLCK 呼叫限制
该命令用来控制呼叫限制补充业务
命令格式AT+CLCK= <fac>, <mode> [, <password> [, <class> ] ]
响应格式对于<mode>=2 而且命令成功
+CLCK: <status> [, <class1>[+CLCK: <status>, <class2>[ – ] ]
<fac> :
"AO", "OI", "OX" 限制呼出电话
"AI", "IR" 限制呼入电 话
"AG", "AC", "AB" 限制所有的电话(<mode>=0)
<mode>
0 解锁此功能
1 锁定此功能
2 查询状态
不支持合并不同种类的操作
<password> 最长4 位
命 令
AT+CLCK="AO",1,1234
设定限制呼出电话
响 应
OK
命令有效
2.7.3 AT+CPWD 更改补充业务密码
用户用此命令来改变补充业务密码
命令格式AT+CPWD=<fac>,<OldPassword>, <NewPassword>
命 令
AT+CPWD="AO",1234,5555
改变呼叫限制密码
响 应
OK
密码已改
2.7.4 AT+CLIP 呼叫线路识别显示
该命令允许控制呼叫线路识别显示业务当CLI 呼叫线路识别允许显示在每次结果码RING或+CRING之后返回+CLIP 响应
命令语法AT+CLIP=<n>
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 23 页 共 32 页
GSM AT 命令手册
响应格式
+CLIP: <n>,<m> 对于命令AT+CLIP?
+CLIP: <number>, <type>[ ,<subaddr>, <satype>, <alpha> ] 接在RING 之后的响应
<n> 显示TA 的结果码
0 不显示
1 显 示
<m> 显示用户CLIP 业务的状态
0 未提供CLIP 业务
1 提供CLIP 业务
2 未知无网络
命 令
AT+CLIP=1
激活CLIP
响 应
OK
响 应
RING
+CLIP:
“0146290800”,129,1,,,
“FRED”
来电
返回来电的号码姓名等信息
2.7.5 AT+CHLD 呼叫保持
该命令用来管理呼叫保存和多方谈话电话会议使用户可以在现有呼叫中保持加入回复或释放一个电话
命令格式AT+CHLD= < n >
响 应 +CHLD: (0-3, 11-17, 21-27) 对于命令AT+CHLD=?
<n>
0 释放所有保持的电话或设置对于等待电话用户忙
1 释放所有正在进行的电话接受其他的保持或等待电话
1X 释放特殊的电话X 正在进行保持或等待
2 将所有正在进行的电话置于保持状态接受其他的保持或等待电话
2X 除了电话X将所有正在进行的电话置于保持状态
3 把一个保持的电话加入会谈
2.7.6 AT+CLCC 列举当前的电话
该命令返回当前电话的列表
命令格式AT+CLCC
响 应
OK 如果当前没有电话
+CLCC: <id1>, <dir>, <stat>, <mode>, <mpty>
[ ,<number>, <type> [ <alpha> ] ]
[+CLCC: <id2>, <dir>, <stat>, <mode>, <mpty>
[ ,<number>, <type> [ <alpha> ] ][. . . ] ] ]
<idx> 整数类型电话识别
<dir> 0 移动台发起MO的电话
1 移动台终止MT的电话
<stat> 电话的状态 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 24 页 共 32 页
GSM AT 命令手册
0 正在进行
1 保持
2 拨号MO
3 振铃MO
4 来电MT
5 等待MT
<mode>
0 语音
1 数据
2 传真
9 未知
<mpty>
0 电话不是多方会话中的成员
1 电话是多方会话中的成员
<number> 字符类型的电话号码格式由<type> 指定
<type> 地址字节的格式类型
<alpha> 电话本中与<number> 对应的字母数字域部分可选
2.7.7 AT+CSSN 补充业务通知
命令语法AT+CSSN= <n>, <m>
该命令需参考与网络初始化信息有关的补充业务
当<n>=1 并且移动台发起MO的电话建立后接收到补充业务通知则在发送其他MO 电话建立结果码之前发送中间过程结果码+CSSI:<code1>
当<m>=1 并且在电话期间接收到补充业务通知则发送主动提供结果码+CSSU:<code2>
响应格式
+CSSN: <n>, <m> 对于命令AT+CSSN?
+CSSN: (0-1), (0-1) 对于命令AT+CSSN=?
<n> 设置+CSSI 结果码状态显示
0 显示
1 不显示
<m> 设置+CSSU 结果码状态显示
0 显示
1 不显示
<code1>
5 呼出电话限制
6 呼入电话限制
7 拒绝CLIP 限制
<code2>
2 电话已经被保持在语音电话期间
3 电话恢复在语音电话期间
4 进入多方会话在语音电话期间
5 释放保持的电话在语音电话期间
2.7.8 AT+CCUG 用户组业务 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 25 页 共 32 页
GSM AT 命令手册
用户组CUG业务可以让用户组成一个访问有限制的用户组该业务由服务提供者安排后才能使用
此命令用于
.激活/ 去激活对所有后续呼出电话CUG 信息的控制
.选择CUG 索引值
.禁止呼出访问(OA), OA 允许CUG 成员将电话置于CUG 之外
.禁止优先的CUG优先的CUG 就是当网络没有收到指定的CUG 索引值所使用的缺省CUG
命令格式AT+CCUG = <n> [ ,<index> [ <info> ] ]
<n>
0 禁止CUG 模式缺省值
1 开放CUG 模式
<index>
0-9 CUG 索引值缺省值为0
10 优先的CUG
<info>
0 没有信息缺省值
1 限制OA
2 限制优先CUG
3 限制OA 和优先CUG
要用电话激活CUG 控制需在ATD 命令后加[G] 或[g] <index>, <info> 都要发送
2.8 数据命令
2.8.1 AT+CBST 载波类型选择
命令格式AT+CBST= <speed>, <name>, <ce>
不提供数据压缩只支持异步调制解调器<name>=0
<speed>
<speed>
Description
Modem type
0(defult)
Autobauding
None
1
300bps
V.21
2
1200bps
V.22
3
1200/75bps
V.23
4
2400bps
V.22bis
5
2400bps
V.26ter
6
4800bps
V.32
7
9600bps
V.32
8
Specific
65
300bps
V.110
66
1200bps
V.110
68
2400bps
V.110
70
4800bps
V.110
71
9600bps
V.110 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 26 页 共 32 页
GSM AT 命令手册
<ce> 连接元素
0 透明传输
1 非透明传输缺省值
2 优先透明传输
3 优先非透明传输
命 令
AT+CBST=7,0,1
请求某一载波类型
响 应
OK
该载波支持
该命令适用于呼出和呼入的数据电话但是方式不同对于呼出电话需要2 个参数如
<speed> 和<ce>对于呼入电话只需要参数<ce>
注对于呼入电话如果<ce> 设成透明传输而网络方计划采用非透明传输则电话被释放
2.8.2 AT+FCLASS 选择模式
该命令设置模块工作在某种特定模式下如数据或传真
命令语法AT+FCLASS= <n>
<n> 0 数据
1 一类传真
命 令
AT+FCLASS=?
检测命令
响 应
+FCLASS: (0,1)
OK
命 令
AT+FCLASS=0
设置成数据模式
响 应
OK
命令有效
2.8.3 AT+CR 业务报告控制
该命令允许对于呼入呼出数据电话的更加详细的业务报告在发送CONNECT 响应给用户前模块要确定已经建立的数据连接的类型
报告类型
+CR: ASYNC 异步透明传输
+CR: REL ASYNC 异步非透明传输
命 令
AT+CR=1
使用扩展报告
响 应
OK
命令有效
2.8.4 AT+CRC 振铃类型结果码
该命令允许对于呼入电话语音或数据电话的更加详细的RING 指示用扩展字符串来代替RING 显示振铃电话的类型
扩展字符串
+CRING: ASYNC 异步透明传输
+CRING: REL ASYNC 异步非透明传输
+CRING: VOICE 一般的语音电话
+CRING : FAX 传真电话
命 令
AT+CRC=1
响 应
OK
响 应
+CRINGVOICE
一个语音电话 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 27 页 共 32 页
GSM AT 命令手册
2.8.5 AT+ILRR DTE-DCE 本地波特率报告
该命令控制DCE 是否向DTE 传送+ILRR:<rate> 格式的信息文本其中<rate> 代表当前DCE-DTE 之间的波特率
如果允许传送对于呼入或呼出的数据电话在最终结果码如CONNECT 之前发送中间过程结果码
<rate> 取值300, 600, 1200, 2400, 4800, 9600,19200, 38400, 57600, 115200
命 令
AT+ILRR=1
允许传送波特率报告
响 应
OK
命令有效
2.8.6 AT+CRLP 无线链路协议参数
该命令可以改变用于非透明数据传输的无线链路协议参数
命令语法AT+CRLP=<iws>,<mws>,<T1>,<N2>, <ver>
<iws>: (0-61) 下行窗口大小( 缺省值为61)
<mws>: (0-61) 上行窗口大小( 缺省值为61)
<T1> : (40-255) 确认定时器以10 毫秒为单位( 缺省值为48)
<N2>: (1-255) 重传次数( 缺省值为6)
<ver>: (0) 版本号只支持0
命 令
AT+CRLP=?
检测命令
响 应
+CRLP: (0-61),(0-61),(40-255),(1,255),(0)
OK
命 令
AT+CRLP=61,61,48,6,0
设置新参数
响 应
OK
2.9 传真命令
2.9.1 AT+FTM 传送速度
该命令设置传真的传送速度
命令语法AT+FTM=<speed>
<speed>
说 明
调制解调器类型
24
2400 bps
V.27ter
48
4800 bps
V.27ter
72
7200 bps
V.29
96
9600 bps
V.29
命 令
AT+FTM=?
检测命令
响 应
(24,48,72,96)
OK
2.9.2 AT+FRM 接收速度
该命令设置传真接收速度
命令语法AT+FRM=<speed>
其中的速率和AT+FTM 命令相同 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 28 页 共 32 页
GSM AT 命令手册
命 令
AT+FRM=?
检测命令
响 应
(24,48,72,96)
OK
2.9.3 AT+FTS 停止传送并等待
该命令停止传送传真并等待指定的一段时间
命令语法AT+FTS=<n>
<n> 等待时间以10 毫秒为单位
命 令
AT+FTS=?
检测命令
响 应
(0-255)
OK
命 令
AT+FTS=50
停止传送并等待0.5 秒
响 应
OK
命令有效
2.9.4 设置PC 传真应用程序
推荐使用传真应用程序Delrina WinFax v8.0
配置如下
.端口任意串行口
.模型一类硬件流控也可选择软件流控
.初始化缺省字符串
.复位缺省字符串
.最大传送波特率9600bps
其他设置值均可以改变
2.10 串口控制命令
2.10.1 AT+IPR 固定DTE 波特率
该命令指定DCE 接受的波特率
命 令
AT+IPR?
查询当前的波特率值
响 应
+IPR: 9600
OK
当前为9600bps
命 令
AT+IPR=?
检测命令
响 应
+IPR:(0,2400, 4800, 9600,19200)
(300,600,1200,38400,57600,115200)
OK
可能的取值
命 令
AT+IPR=38400
取消波特率自动适配并设置波特率为38400bps
响 应
OK
命 令
AT+IPR=0
设置自动波特率适配
响 应
OK
注可能的波特率取值当中第一个值域表示自动检测波特率的范围第二个值域表示DCE 可用的所有的波特率值 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 29 页 共 32 页
GSM AT 命令手册
自动波特率适配提供从2400 到19200 的波特率还需以下的一些处理
. DTE 发出的命令必须以AT或\打头否则DCE 会返回一些无用字符并且失去同步如果出现这种情况DTE 应以2400 或4800bps 或9600 的速率发送一到二次AT 字符以重新获得同步
. DTE 在接收到AT 命令响应的最后一个字符后应等待1 毫秒再发送新的AT 命令以同样的或新的波特率否则DCE 会失去同步同样发送一到二次AT 来恢复
开始时如果设置成自动波特率适配且没有收到任何AT 命令模块以9600bps 的速率来发送主动提供的结果码
2.10.2 AT&C 设置DCD 信号
该命令控制数据载波检测DCD 信号
命 令
AT&C0
DCD 始终打开
响 应
OK
命令有效
命 令
AT&C1
DCD 匹配远端调制解调器数据载波的状态
响 应
OK
命令有效
2.10.3 AT&D 设置DTR 信号
该命令控制数据终端准备好DTR 信号
命 令
AT&D0
忽略DTR 信号
响 应
OK
命令有效
命 令
AT&D1
当DTR 从ON 变为OFF 时调制解调器从数据模式转为命令模式
响 应
OK
命令有效
命 令
AT&D2
当DTR 从ON 变为OFF 时电话被清除
响 应
OK
命令有效
2.10.4 AT&S 设置DSR 信号
该命令控制数据装置准备好DSR 信号
命 令
AT&S0
DSR 始终打开
响 应
OK
命令有效
命 令
AT&S1
DSR 在命令模式下关闭在数据模式下打开
响 应
OK
命令有效
2.10.5 ATO 返回在线模式
如果已经建立了连接并且移动台处于在线命令模式该命令允许转为在线数据模式
2.10.6 ATQ 结果代码抑制
该命令确定移动台是否发送结果码
命 令
ATQ0
DCE 发送结果码
响 应
OK
命令有效
命 令
ATQ1
不发送结果码
响 应
无响应
2.10.7 ATV 响应格式
确定DCE 响应的格式是否带头标是否采用数字式结果码 南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 30 页 共 32 页
GSM AT 命令手册
命 令
ATV0
DCE 发送数字式结果码
响 应
0
命令有效0即OK
命 令
ATV1
DCE 发送完整的响应字符
响 应
OK
命令有效
2.10.8 ATZ 缺省配置
恢复配置文件所有的电话都释放
2.10.9 AT&W 保存设置
该命令向EEPROM 里写入设置的值
2.10.10 ATE 回显
确定调制解调器是否回显接收到的字符
命 令
ATE0
不回显
响 应
OK
命 令
ATE1
回显
响 应
OK
3 附录
以下列举了ME 错误返回代码+CME ERROR: <error>
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com
第 31 页 共 32 页
GSM AT 命令手册
消息业务错误返回代码+CMS ERROR: <er>
南京傲屹电子有限公司
地址 南京市湖南路 185 号 电话 025-3241656 3204539 网址 www.cnaye.com

posted @ 2010-07-22 11:24 雅翔的天空 阅读(1877) 评论(0) 编辑


2010年6月29日

DELPHI中四种EXCEL访问技术实现
发布者:秦方钰  发布时间:2007-7-24 21:26:00
内容摘要

EXCEL是制作中文报表的一个非常重要的工具,文章介绍并分析了包括ADO方式访问EXCEL文件、COM方式动态访问EXCEL文件、扩展OLEContainer方式访问EXCEL文件、DELPHI标准组件访问EXCEL文件在内的四种DELPHI实现的访问EXCEL文件的方法及实现代码。

正文
文字大小:

DELPHI中四种EXCEL访问技术实现

摘 要 EXCEL是制作中文报表的一个非常重要的工具,文章介绍并分析了包括ADO方式访问EXCEL文件、COM方式动态访问EXCEL文件、扩展OLEContainer方式访问EXCEL文件、DELPHI标准组件访问EXCEL文件在内的四种DELPHI实现的访问EXCEL文件的方法及实现代码。

关键词 EXCEL文件,ADO,COM

一、引言

EXCEL在处理中文报表时功能非常强大,EXCEL报表访问也是信息系统开发中的一个重要内容,本文总结以往开发中所用到的几中EXCEL文件访问方法,在实际工作中也得到了很好的验证,本文列举了其中四种方法的实例与读者共享,程序已在WINDOWS2000操作系统、OFFFICE2000应用软件和DELPHI7环境下调试通过。

二、ADO方式访问EXCEL文件

ADO方式访问EXCEL文件时,将EXCEL文件看作一个等同Oracle、MS SQLServer等数据库的一个ODBC数据源本文应用示例主要功能是打开EXCEL文件,并实现对EXCEL文件的编辑修改功能。实现过程及主要源代码如下:

1.在工程中新建窗口类TfrmADOEXCEL,在窗口中定义私有变量类型为TADOConnection的组件Conn,加入TADOTable组件ADOTabXLS、TDataSource组件DSXLS、TDBNavigator组件NavXLS 、TDBGrid组件GridXLS和TButton组件btnOpen,使用btnOpen可以打开EXCEL文件,使用NavXLS可以浏览编辑EXCEL文件数据。

2.编写btnOpen组件的OnClick事件。需要注意两点,Conn组件的Extend Properties属性要定义成excel 8.0,另外,EXCEL文件中的表单名“人员信息表”作为表明时要写成“[人员信息表$]”。

procedure TfrmADOEXCEL.btnOpenClick(Sender: TObject);

//打开EXCEL文件代码

begin

Conn:=TADOConnection.Create(nil);

Conn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFileDir(Application.ExeName)+'\PersonData.xls;Extended Properties=excel 8.0;Persist Security Info=False';

Conn.LoginPrompt:=false;

Conn.Connected:=true;

ADOTabXLS.Connection:=Conn;

ADOTabXLS.TableName:='['+'人员信息表'+'$]';

ADOTabXLS.Active:=true;

DSXLS.DataSet:=ADOTabXLS;

GridXLS.DataSource:=DSXLS;

except;

FreeAndNil(Conn);

end;

end;

三、COM方式动态访问EXCEL文件

COM方式动态访问EXCEL文件时,基本方法是利用组件复用技术调用Office软件平台提供的COM服务组件,充分利用COM组件提供的方法操纵EXCEL文件。本文应用示例简单演示了如何利用COM技术将DataSet数据集的数据输出到EXCEL文件。实现过程及主要源代码如下:

在工程中新建窗口类TfrmCOMEXCEL,在窗口中定义私有变量类型为TADOConnection的组件Conn,加入TADOTable组件ADOTabXLS和TButton组件btnOpen,使用btnOpen可以将数据输出到EXCEL文件。编写btnOpen组件的OnClick事件代码如下:

procedure TfrmCOMEXCEL.btnOpenClick(Sender: TObject);

var

XL: Variant; //打开EXCEL文件的Variant变量

Sheet: Variant;//指向EXCEL表单的Variant变量

RecNo,I: Integer;//记录数据表的当前记录号

begin

try

Conn:=TADOConnection.Create(nil);

Conn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFileDir(Application.ExeName)+'\PersonData.xls;Extended Properties=excel 8.0;Persist Security Info=False';

Conn.LoginPrompt:=false;

Conn.Connected:=true;

ADOTabXLS.Connection:=Conn;

ADOTabXLS.TableName:='[人员信息表$]';

ADOTabXLS.Active:=true;

except

FreeAndNil(Conn);

end;

XL := CreateOleObject('Excel.Application');

XL.Visible := true;

if FileExists(ExtractFileDir(Application.ExeName)+'\test.xls') then

begin

XL.WorkBooks.Open(ExtractFileDir(Application.ExeName)+'\test.xls');

end

else XL.WorkBooks.Add;

XL.WorkBooks[XL.WorkBooks.Count].WorkSheets[1].Name := 'test';

Sheet := XL.WorkBooks[XL.WorkBooks.Count].WorkSheets[Trim('test')];

RecNo := 1;

ADOTabXLS.First;

while not ADOTabXLS.Eof do

begin

for I := 0 to ADOTabXLS.FieldCount - 1 do

if not (ADOTabXLS.Fields[I].DataType in [ftBlob, ftGraphic,

ftParadoxOle, ftDBaseOle, ftTypedBinary,

ftReference, ftDataSet, ftOraBlob, ftOraClob, ftInterface,

ftIDispatch]) then

begin

Sheet.Cells.NumberFormat := '@';

Sheet.Cells[RecNo, I+1] := ADOTabXLS.Fields[I].AsString;

end;

Inc(RecNo);

ADOTabXLS.Next;

end;

try

XL.WorkBooks[XL.WorkBooks.Count].SaveAs(ExtractFileDir(Application.ExeName)+'\test.xls');

except ;

end;

end;

四、扩展OLEContainer方式访问EXCEL文件

在使用OLE方式访问EXCEL文件时,OLE容器在失去焦点会屏蔽正在访问的EXCEL文件操作;另外,使用in_place方式激活OLE容器时,会另外打开一个窗口,程序执行显得有些混乱,造成这些问题的主要原因是因为OLE容器响应了CM_UIDEACTIVATE消息,OLE容器不能始终保持激活状态。为此可将此消息结果使OLE容器始终处于激活状态。解决方法是重载OLE容器的CM_UIDEACTIVATE消息。在程序中临时创建重载后扩展OLE容器OLEContainerEx。代码如下:

type

TOleContainerEx=class(TOleContainer)

private

FJH: Boolean;

//重写CM_UIDEACTIVATE消息响应

procedure CMUIDeactivate(var Message: TMessage); message CM_UIDEACTIVATE;

published

property JH: Boolean read FJH write FJH;

end;

// 过程CMUIDeactivate的代码实现

procedure TOleContainerEx.CMUIDeactivate(var Message: TMessage);

begin

if not JH then

inherited;

end;

在使用TOLEContainerEx时,可采用临时创建的方式,也可进一步封装成可安装组建以便设计期使用。本文应用示例采用了临时创建的方式。在工程中新建窗口类TfrmEXOLEEXCEL,并定义Public变量 OleCon,类型为: TOleContainerEx;在窗口中定一个Tpanel类型组件panel1和Tbutton类型变量btnOpen,编写btnOpen的Click事件,主要源程序代码如下:

procedure TfrmEXOLEEXCEL.btnOpenClick(Sender: TObject);

begin

//创建并显示扩展OLE类组件

OleCon := TOleContainerEx.Create(nil);

OleCon.Parent := Panel1;

OleCon.Align:=alClient;

OleCon.allowactivedoc := true;

OleCon.AllowInPlace := True;

OleCon.AutoActivate := aaGetFocus;

OleCon.Anchors := [akTop,akLeft,akRight,akBottom];

OleCon.Visible := True;

OleCon.SizeMode := smClip;

OleCon.CreateObjectFromFile(ExtractFileDir(Application.ExeName)+

'\PersonData.xls',false);

TOleContainerEx(OleCon).JH := True;

OleCon.SetFocus;

end;

五、DELPHI标准组件访问EXCEL文件

Delphi中封装了一组Microsoft Office自动化对象(Automation servers)。它使得我们很容易地把Office中的应用程序(Excel等)当作一个COM应用服务器进行控制。使用这组VCL组件可以在设计时进行属性设置,也可以在运行时动态访问EXCEL。利用标准组件动态访问EXCEL文件时,充分利用VCL组件提供的方法操纵EXCEL文件。本文应用示例简单演示了如何利用VCL组件将DataSet数据集的数据输出到EXCEL文件。实现过程及主要源代码如下:

在工程中新建窗口类TfrmSTDCNTREXCEL,在窗口中加入TADOConnection组件ADOConnXLS,TADOTable组件ADOTabXLS、TButton组件btnOpen、TexcelApplication组件ExcelApplication1,TexcelWorkbook类组件ExcelWorkbook1和TExcelWorksheet1类组件ExcelWorksheet1,使用btnOpen可以将数据输出到EXCEL文件。编写btnOpen组件的OnClick事件代码如下。

procedure TfrmSTDCNTREXCEL.btnOpenClick(Sender: TObject);

var

aWorksheet: _WorkSheet;

tmpI,aRowIndex:integer;

aStr:string;

begin

ADOConnXLS.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFileDir(Application.ExeName)+'\PersonData.xls;Extended Properties=excel 8.0;Persist Security Info=False';

ADOConnXLS.LoginPrompt:=false;

ADOConnXLS.Connected:=true;

ADOTabXLS.Connection:=ADOConnXLS;

ADOTabXLS.TableName:='[人员信息表$]';

ADOTabXLS.Active:=true;

if ADOTabXLS.IsEmpty then exit;

Try

ExcelApplication1.Connect;

Except

MessageDlg('你还没有安装MicroSoft Excel,请先安装MicroSoft Excel!',mtError, [mbOk], 0);

Abort;

End;

ExcelApplication1.Visible[0]:=True;

ExcelApplication1.Caption := '新建EXCEL文件';

ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));

aWorksheet:=ExcelWorkbook1.WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;

ExcelWorkSheet1.ConnectTo(aWorksheet);

aRowIndex:=1;

while not ADOTabXLS.Eof do

begin

for tmpI:=0 to ADOTabXLS.FieldCount-1 do

ExcelWorksheet1.Cells.Item[aRowIndex,tmpI+1]:=ADOTabXLS.FieldList[tmpI].AsString;

aRowIndex:=aRowIndex+1;

ADOTabXLS.Next;

end;

//保存EXCEL文件,并关闭EXCEL应用程序

Try

aStr:=ExtractFileDir(Application.ExeName)+'\EXCEL文件.xls';

ExcelWorkbook1.SaveAs(aStr,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam ,

xlNoChange ,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);

ExcelWorksheet1.Disconnect;

ExcelWorkbook1.Disconnect;

ExcelApplication1.Disconnect;

ADOTabXLS.Active:=false;

ADOConnXLS.Connected:=false;

except

ExcelWorksheet1.Disconnect;

ExcelWorkbook1.Disconnect;

ExcelApplication1.Disconnect;

ADOTabXLS.Active:=false;

ADOConnXLS.Connected:=false;

End;

end;

六、总结

综上所讲,本文分别举例讨论了EXCEL文件访问的几种方法,包括ADO、COM、扩展OLEContainer和DELPHI标准组件方式。在实际应用过程中,这几种方法也各有特色。ADO方式访问EXCEL文件适用于以数据库访问方式维护EXCEL文件,COM方式动态访问编程设计与VBA访问接口方式相似,此种方法适用于EXCEL文件数据维护和复杂报表输出,扩展OLE方式访问EXCEL文件时能够保持EXCEL应用程序的友好界面,DELPHI标准组件访问方式与COM访问方式相似,但DELPHI对各类接口进行了更加友好的封装,在对COM方式不是很长熟悉的情况下,使用这种方式访问和输出数据到EXCEL文件非常有效。笔者结合自己的工作经历简单的总结了几种EXCEL文件的访问,在今后的工作中会进一步深入的研究总结。

posted @ 2010-06-29 17:25 雅翔的天空 阅读(812) 评论(0) 编辑


2006年11月16日

针对对像建样式,不要跟据属性建样式

posted @ 2006-11-16 09:32 雅翔的天空 阅读(32) 评论(0) 编辑


2006年11月14日

http://blog.csdn.net/wujunj/archive/2006/07/15/926151.aspx

posted @ 2006-11-14 13:21 雅翔的天空 阅读(32) 评论(0) 编辑


2006年10月12日

页切换的原则。
1、页面跳转只能出现有导航的页面间或两个没有导航的页面间。有导航的页面和没有导航的页面互切要用打开新窗口的方式。
2、在有导航的页面上不能出现[关闭]的按扭只能出现[取消]按扭。同时在没有导航的页面上不能出面[取消]按扭只能出现[关闭]\[上一步][下一步]按扭。和有名称的按扭。
3、按扭的名称和使用要求一致。

posted @ 2006-10-12 14:23 雅翔的天空 阅读(44) 评论(0) 编辑


posts - 6, comments - 0, trackbacks - 0, articles - 0

Copyright © 雅翔的天空