电子毕业论文-智能安防报警系统_第1页
电子毕业论文-智能安防报警系统_第2页
电子毕业论文-智能安防报警系统_第3页
电子毕业论文-智能安防报警系统_第4页
电子毕业论文-智能安防报警系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2013 届 本 科 毕 业 设 计 ( 论 文 )第 1 章 选题背景1.1 概述随着科学技术的进步,以及科学知识的普遍推广,计算机的应用已普及到经济和社会生活的各个领域并发挥着越来越重要的作用。在人们生活水平提高的同时,人们的安全防范意识也得到了提高。在很多生活领域(如银行,工厂,公司,企业,生活社区等)都进行了安全布防,一旦发生不安全的事情,就可进行人工或自动报警(如拨打 110,119 等报警电话,还包括响警笛,启动监视记录等) 。许多领域都广泛采用了安防系统,当不安全事件发生时,启动报警设施。“智能安防报警系统”就是为了满足人们的这种需要而设计的。智能安防报警系统就是实现自动报警,它是由软硬件结合的集成系统,实现布防,监测,报警等功能。当触发事件发生时,触发信号从触发器出发,经编码器后,以二进制数据形式送至计算机,计算机通过程序获取编码进行分析识别,进而根据程序设定启动相应的报警动作,并决定是否需要启动录像设备。到今天为此,我国的安全防范技术已取得长足的发展,在各行各业的应用范围也在不断拓宽。总的说来,安防产品的开发已经进入了一个高层次的开发阶段。未来会有更多更好的安防产品被生产以满足人民的生活,工作的需要。1.2 本课题国内外发展概况综述随着科学技术的迅猛发展,安全防范技术和设备在预防重大治安事件,阻止违法犯罪,维护社会公共安全方面的作用越来越显著。同时,作为社会防范的一支新兴力量,安全防范技术行业在我国也得到了迅速发展。目前,全国安防从业企业已经超过一万家,有十大类近百种安防产品已经广泛应用于国家重要场所和居民住宅中,对维护社会公共安全,提高人民生活质量起到了重要作用。随着国民经济的发展,我国人均收入的增加,人民生活水平的提高,人们安全意识进一步增强,信息时代的来临,经济活动的频繁,安全性和保密性在经济交往和经济利益方面的重要性越来越得到深入体现,社会的安全要求成为越来越大的需求。1.3 目的 2013 届 本 科 毕 业 设 计 ( 论 文 )随着社会主义市场经济的不断发展,人们对安全保障的要求越来越强烈。 “加强社会治安,保卫社会安定,保护人民安全,既是一项政治任务,也是现代科学技术得以发挥威力的重要领域。 ”当前各种犯罪活动更加猖獗,严重危害人民生命财产和国家财产安全。因此,人们迫切需要利用先进的安防技术对异常事件和安全方面的隐患进行预防。还有,在社会的方方面面,有诸如无人值守而特别需要加以警戒、看护或特殊保护之类的许多场所,也急需采用相应的技术防范手段或技术方法来满足它们所提出的要求。多年来,安全防范技术工作作为公安科技的重要内容,在预防和打击犯罪,维护社会稳定方面发挥了积极的作用,用当今世界上最先进的安全防范技术,竭诚为社会服务,确保用户安全,保护人民生命财产,这是时代赋予的重任。鉴于网络化应用日益普及,安全防范报警监控技术全面迈向数字化、智能化、集成化已成现实。为满足现代社会对高度安全防范的需求,满足社会上那些因无人值守而需要看护(保护)的单位之所求,保障广大人民群众常年工作,生活于安全和舒适的环境, 强大的威慑作用和快速反应能力,降低经济损失,秉承“走高科技之路,利用高科技服务于社会”的宗旨,应充分利用国内外的先进技术,精心开发和集成出智能安防报警系统。2013 届 本 科 毕 业 设 计 ( 论 文 )第 2 章 方案选择2.1 设计原理2.1.1 概述智能安防报警系统就是实现自动报警,它是由软硬件结合的集成系统,实现布防,监测,报警等功能。当触发事件发生时,触发信号从触发器出发,经编码器后,以二进制数据形式送至计算机,计算机通过程序获取编码进行分析识别,进而根据程序设定启动相应的报警动作,并决定是否需要启动录像设备。2.1.2 设备布局此设计为仅有一台计算主机的智能安防报警系统。需要说明的是:大型的智能安防报警系统通常由多台计算主机和各种其他设备组成,其实大规模系统的工作原理是一样的,在设计时可以以本设计为基础,再在此基础上进行扩展。智能安防报警系统的设备布局和线路连接的示意如下图 2-1 所示。它是由计算机、触发器(组) 、音视频接口、报警器(组)和报警电话组成。2013 届 本 科 毕 业 设 计 ( 论 文 )图 2-1 设备布局和线路连接并行排线触发器 1触发器 2触发器 n传感器,可自动/手动触发消息通知计算主机报警器 1报警器 2报警器 n报警器,计算主机收到触发信息后,通过并口启动报警设备(器)音视频接口音视频 1音视频 2音视频 n摄像头/麦克风,计算机收到触发信息后,可启动相应的录像/录音设备电 话通过串口连接Modem 自动拨打设定好的报警电话计算主机通过并口获得触发器的告警信息、启动报警设备(器)计算机2013 届 本 科 毕 业 设 计 ( 论 文 )2.2 方案选择2.2.1 分析从工作原理可以看出,该系统的硬件部分起着触发信号和完成报警的功能,软件部分则完成分析触发信号并响应硬件端传递动作信号的工作,并可以让用户选择触发器组对应的端口,报警器组对应的端口,触发器组与报警器组。系统集成以下功能模块: 启动暂停系统; 设置布防参数,包括布防名称、事件编码、端口属性、端口号、是否使用等; 设置处警参数,包括:处警名称、端口属性、端口编号、动作类型等; 启动录音/录像设备; 录制数据。2.2.2 工作流程图根据以上分析,智能安防系统的基本工作流程为:当发生触发事件时,触发信号从触发器发出经编码器进行编码后以二进制数据形式送至计算机的端口,计算主机通过程序获取事件编码并进行分析识别,进而根据程序设定启动相应的报警动作(不同的触发事件有不同的处理方式) ,并决定是否需要启动录像设备。智能安防系统的工作流程如下图 2-2 所示。2013 届 本 科 毕 业 设 计 ( 论 文 )NoYesNoYesNoYesNoYesNoYes图 2-2 智能安防系统工作流程图启动安防系统定时读取并分析并口数据向并口发送相应的控制码自动拨打设置好的电话号码从相应的音视频源读取并录制数据结束程序运行是否有触发事件?是否需要启动并口控制的报警设备?是否需要拨打报警电话?是否需要启动录音/录像设备?是否结束程序?2013 届 本 科 毕 业 设 计 ( 论 文 )2.3 特点智能安防报警系统的特性:系统界面友好,功能齐备,操作简单;外部硬件设置的改变,可以通过相应软件的设置来实现;对外部装置的信号,响应速度更快,对信号信息的管理效率更高;采用串口技术,并使用 MSComm 控件完成串口通信任务。2013 届 本 科 毕 业 设 计 ( 论 文 )第 3 章 过程论述3.1 关键技术与算法3.1.1 端口设置和定时读取 I/O 端口数据I/O 端口一般分为串口和并口两类。每个设计者可以按照自己的实际情况设置布防设备和处警动作所对应的端口(其属性和数量) 。在布防设置中,最多启用 1 个串口(可以对应多个触发器) ,但可以启用多个并口(每个并口可以对应多个触发器) 。在处警设置中,指定一个串口用来拨打电话,号码可以设置为多个,指定多个并口用来启动其他处警动作。为了及时获取布防触发器的报警信号,程序中需要打开一个定时器,不断读取端口数据。时间间隔可根据实际的工作情况而定,通常在几十毫秒到几秒之间,太短计算机响应不过来,太长则会影响事件的实时捕捉。为正确读取端口数据的需要,程序应该在运行状态下能够设置 I/O 端口号,以便与选用的硬件 I/O 端口号一致。3.1.2 判断是否有触发事件程序取得端口数据之后,要马上进行分析以便判断是否有报警信号、信号对应哪个触发器,以便进行相应的报警动作(鸣笛、录像、拨打电话等) 。 触发事件编码重复的判断由于可能存在多个触发器,因此需要用户事先为每个触发器约定其报警信号对应的端口数据。不同触发器对应的端口数据除了要有所不同外,而且要求所有触发器对应的并口数据间不能二进制包容,例如,假设触发器 1 对应的并口数据为二进制“00001011” ,而触发器 2 对应的并口数据为二进制“00000011” ,那么当端口读到的数据为二进制“00001011”时,就无法正确判断是一个触发事件还是两个触发事件(存在 2 个事件同时触发的可能) 。程序在添加或修改一个布防参数时,判断安防信息数据库中是否存在触发事件编码、端口属性、端口号全部一致的情况,如果存在则提示用户存在触发事件编码2013 届 本 科 毕 业 设 计 ( 论 文 )重复。 分析触发事件程序从端口读取到 1 个数据之后,需要从数据中分析出有哪些事件发生。具体方法为逐个将触发器编码与该数据进行“与”运算,如果结果等于此触发器编码,则说明此触发器有事件发生,应予以响应。这样,即便有多个事件同时发生,也能全部响应。 触发器与并口线的连接上面已经为每个触发器事件进行了编码,但那只是软件逻辑上的编码,为了程序能从并口取得相应的编码,必需将触发器信号输出线与并口输入正确地连接起来。从电气特性上来说,本设计中的触发信号通常是一个具有一定脉宽(几百毫秒几秒的数据量级)的脉冲信号。当一个触发事件产生时,触发器应该将并口对应的输入针脚设置为高电平并持续一个脉宽时间长度,比如触发器 3 在产生一个事件时,将并口输入的第 1、2 针脚设置为高电平,则逻辑上就应该将触发器 3 的事件编码设为“00000011”。所以为使程序能够准确无误地获取触发事件,就必需保证并口对触发器的电气信号接入和触发信号的逻辑编码一致。3.1.3 启动并口对应的报警设备 为控制报警器而编码主机的程序获取触发事件之后,可以通过并口进行各种报警动作(如打开照明灯) 。当有多个报警设备需要并口控制时,就得为每个设备进行逻辑编码。只有这样,程序获得某特定事件后,才能正确地通过并口输出控制码,达到启动响应报警设备的目的。同触发器编码类似,在为报警器编码时,也要避免出现二进制包容的问题。 设置输入/输出对应关系程序在获取某触发事件之后,应该自动向并口发送控制码,准确地打开相应的报警器。为此,程序需要对触发事件和处警动作设定对应关系,即程序响应某触发事件后,应向并口发送什么样的数据,以便控制相应的 1 个或几个报警设备。2013 届 本 科 毕 业 设 计 ( 论 文 )这种输入/输出的对应方式有 3 种:一对一编码,即不同的触发事件启动不同的报警设备。一对多编码,即一个触发事件可以启动几个报警设备。多对一编码,即不同的触发事件启动相同的报警设备。具体采用哪种对应方式,应根据实际系统工作情况而定。当然,也存在某触发信号不通过并口启动报警设备的情况。下图 3-1 是用于设置触发事件/处警动作对应关系的操作界面。图 3-1 触发事件/处警动作其对应关系说明:布防设置、处警设置的具体数目应根据实际情况而定,不要求数目相同(可能有 9 个触发器而只有 2 个并口控制的报警器) ;确定输入/输出关系时,用户首先点选当前布防设置,然后通过选择待选处警动作,确定其对应的处警动作(可以是一对一或一对多) ;在当前触发器改变之前,程序应及时记录其输入/输出的对应关系(建议记录到一个约定格式的文件中) 。 发送控制码2013 届 本 科 毕 业 设 计 ( 论 文 )程序在明确触发事件及其对应的报警器编码之后,即可向并口发送控制码进行报警动作了。如果该触发事件仅对应一个报警器,则直接发送其控制编码即可。如果需要启动多个报警器,则需要将这几个报警器对应的控制码进行“或”运算,然后将结果数据从并口发送出去。3.1.4 设置拨打报警电话 设置电话号码 某种情况下,当某触发事件发生时,程序能够自动拨打设定好的电话号码。这就需要程序能事先设定好电话号码。以及注明哪个触发事件发生时才启动电话报警。通常电话号码不会设置 1 个,因为拨打时除了考虑占线问题,也应该尽可能多地将报警通知给重要单位和个人;利用复选框可用选中多个触发器,即只有其中之一被触发,则都拨打设置的电话。程序设置报警电话号码及与之对应的触发事件如下图 3-2 所示2013 届 本 科 毕 业 设 计 ( 论 文 )图 3-2 设置报警电话 拨打报警电话本设计中采用的是设置电话号码的方式,另外,也可以通过串口连接的 Modem 拨打指定电话。程序中应该考虑电话占线的情况,以便及时改拨另外的电话,达到及时报警的目的。除了通过串口 Modem 拨打报警电话外,有些智能安防系统还采用并口控制“拨号器” (一种硬件设备)进行拨号报警。3.1.5 启动录音/录像设备当触发事件发生时,除了报警外,很多安防系统还采取了现场录制功能,即与各触发器对应设置若干摄像头和麦克风,当触发事件发生后,程序自动录制对应的音视频数据(录音/录像) ,并持续一段事件或保持录像直至人工停止。3.2 云台控制系统3.2.1 系统描述云台是一种设备,可以说是专门用于监控时调整摄像头位置所用。摄像头安装于云台之上,通过开关电源,就可实现摄像头在垂直方向进行俯仰运动、水平方向进行摆动,从而调整监视位置。云台系统除了控制摄像头的俯仰和水平运动控制外,通常还要控制电子镜头(安装于摄像头前端、电机控制的光学镜头)的聚焦、光圈和变倍等,以便调整视野范围和清晰度。对于室外摄像头,通常将其放在防护罩内,再安装于云台之上。此时,控制系统通常要考虑控制防护罩上雨刷。夜间工作情况下,还要进行射灯的开关控制。上述云台系统的各项控制通常由两种方式来实现: 通过电子设备的操作平台,手工按下相关的机械按钮,控制对应的继电器达到各个电源开关的闭合,从而实现上述各项控制功能。 通过计算机串口/并口发送控制指令到解码器,再由解码器控制相应的继电器达到各个电源开关的闭合,从而实现上述各项控制功能。2013 届 本 科 毕 业 设 计 ( 论 文 )本设计中利用的是后一种方式。3.2.2 设备布局与线路连接一台计算机主机可通过一套解码器控制多个云台(包括摄像头、雨刷) ,控制系统的布局和连线示意如图 3-3 所示。用户通过计算机串口/ 并口发出相应的控制指令,解码器解析指令,获知操作对象(具体哪个云台) 、操作动作(俯仰、左右摆动等)后,通过继电器接通/端开相应的线路,从而使相应电机运转或停止,达到控制目的。图 3-3 云台控制系统设备布局和连线示意图3.2.3 功能分析与设计云台系统的功能控制方式可以分为两类。控制电缆,解码器控制其中的相应线路接通或断开,从而实现对应的控制功能串/并口线,将解码器与计算机连接云台 1云台 2解码器计算机云台 n云台、电子设备、雨刷、射灯等一个组合实体2013 届 本 科 毕 业 设 计 ( 论 文 ) 动作控制对于俯仰、左右摆动、聚焦、变倍等控制,可视为动作控制,即大多数时候云台(包括镜头)是静止的,仅在需要调整摄像头视野的时候才让云台和镜头做相应动作。进一步可将动作控制分为:云台运动控制云台进行 8 个(4 组对应)方向的运行,每个方向对应相应的电机开启、旋转如表 3-1 所示。表 3-1 云台运动的 8 个方向及对应的电机开启、旋转运动方向 开启电机 电机转向向上(仰) 控制俯仰的电机 向上旋转向下(俯) 控制俯仰的电机 向下旋转向左 控制左右的电机 向左旋转向右 控制左右的电机 向右旋转控制左右的电机 向左旋转左上 控制上下的电机 向上旋转控制左右的电机 向左旋转左下 控制上下的电机 向下旋转控制左右的电机 向右旋转右上 控制上下的电机 向上旋转控制左右的电机 向右旋转右下 控制上下的电机 向下旋转镜头控制镜头控制有 6 个(3 组对应)动作,开启相应的电机和转向如表 3-2 所示。表 3-2 镜头控制的 6 个动作及对应的电机开启、旋转2013 届 本 科 毕 业 设 计 ( 论 文 )动作 开启电机 电机转向聚焦 聚焦方向散焦 调焦电机 散焦方向(与聚焦反)倍数放大 放大倍数方向倍数缩小 控制倍数电机 缩小倍数方向光圈变大 变大光圈方向光圈变小 控制光圈电机 变小光圈方向 状态(开关)控制对于射灯、雨刷这类对象的控制,可称为状态控制或开关控制,即每种对象都处于打开状态或处于关闭状态。通常状态控制有 3 项,简述如表 3-3 所示。表 3-3 云台系统的 3 种状态控制控制对象 说明射灯 通常为增强光线而设,用户进行打开/关闭控制雨刷 通常为室外防护罩而设,用户进行打开/关闭控制自动如果打开自动,云台可自动进行左右摆动,当一个方向摆动到尽头时,会触发一个限位行程开关而转为相反方向。关闭自动,则停止摆动为此,各种云台控制系统的操作界面上都会有以上各项的控制按钮。如下图 3-4所示,为一个标准云台控制面板。2013 届 本 科 毕 业 设 计 ( 论 文 )图 3-4 云台动作和状态控制面板云台系统中除了进行上述各项控制之外,还应考虑多个云台的问题。通常,用户通过计算机在某一时刻仅对某一个具体云台进行控制。因此,在控制面板上还得增加云台选择按钮,根据系统中云台数量的不同,安排相应数量的选择按钮。如图3-5 所示,面板中安排了 32 个可选按钮(32 个为一组,具体时刻只能选中其一,图3-5 中 1 号云台被选中) 。实际系统中,图 3-4 和图 3-5 应该摆放在相近位置,以便于用户操作。图 3-5 多云台控制系统中选择当前控制对象面板 3.2.4 通信方式云台控制系统提供串口与并口两种通信方式控制解码器,如下图 3-6 所示。两2013 届 本 科 毕 业 设 计 ( 论 文 )种通信方式均为由 PC 到解码器的单向指令传输。云台控制程序响应用户操作,向对应 I/O 口发送相关指令;解码器响应接收到的指令,接通或断开相应继电器,以控制云台。当选择串口通信方式时,可在运行时调整数据传输率、校验位、数据位、停止位、串口号 5 个参数,以与接收方保持一致;同时程序将这些设置保存在配置文件中,以后程序启动时将使用这些参数初始化串口。当选择 I/O 口发送控制码时,默认 IO 端口号为 956,是大多数机器默认配置的LPT1(并口 1)端口值(该值可在 BIOS 设置中查看与更改) 。用户可选择不同的端口号,与串口参数相似。图 3-6 控制端口的设置3.2.5 数据编码数据编码(对应解码器解码)通常应遵循如下原则: 指令数据宽度(即数据占位)尽量短,能用一个字节就不用一个字。 相邻或相近操作(如上、下、左、右等)对应的数据编码值保持连续。如果向上的操作指令对应数据 01000000,建议向下的操作指令对应数据为 01000001。控制码编辑对话框和默认指令集如图 3-7 所示。2013 届 本 科 毕 业 设 计 ( 论 文 )图 3-7 控制码编辑对话框和默认指令集3.3 对话框由于此设计中有较多的对话框,现就对话框的一些基本知识给出以下论述。3.3.1 对话框概述对话框是用户与应用程序交互的重要界面,在 Windows 应用程序中,几乎所有的用户输入都要通过对话框来实现。对话框本身并不具有交互功能,负责实际通信工作的是其中的控件。对话框是各种控件的容器。其实对话框就是一个真正的窗口,它不但可以接受消息,而且可以移动和关闭,可以在它的客户区中进行绘图操作。在设计时还可以把控件直接放到对话框上去,以实现各种操作。对话框按其动作模式分为两类:模式对话框和无模式对话框。模式对话框就是在未关闭该对话框前,其所属的应用程序不能继续进行,如打开文件对话框。而无模式对话框则不影响应用程序的运行,用户可以在应用程序的其他窗口中进行工作,如查找对话框。对话框与其他窗口一样,能够接受来自 Windows 的消息。应用程序通过对话框得到用户的输入信息并作出适当的响应,而用户也能够从对话框中获取应用程序执行的情况。属性窗口能够显示对话框中每个控件可能会产生的消息,而用户可以从中选择哪些是需要处理的。接着 Visual C+ 6.0 就会在类中,为这些消息添加相应的消息映射项和处理函数。用户只需在消息处理函数中添加实现应用程序功能的2013 届 本 科 毕 业 设 计 ( 论 文 )代码即可。也可不使用属性窗口而手动定制消息映射和消息处理函数。在对话框派生类中,可以为其中控件添加成员变量用以存储或显示数据。属性窗口会列出能够建立与成员变量建立映射的控件。在 MFC 中,对话框的功能封装在 CDialog 类中,CDialog 类是 CWnd 类的派生类。从形态和功能上看对话框可分为两部分:对话框模板:对话框模板用于定义对话框属性及指定对话框的控件及其分布,Windows 根据对话框模板来创建显示对话框。对话框类:对话框类用来实现对话框的功能,提供多种管理对话框的函数和接口。由于对话框行使的功能各不相同,因此一般需要从 CDialog 类派生一个新类,以完成特定的功能。3.3.2 创建对话框模式对话框,当它弹出后,独占了系统资源,用户只有在关闭该对话框后才可以继续执行,不能够在关闭对话框之前执行应用程序其他部分的代码。它一般要求用户做出某种选择。非模式对话框,当它弹出后,程序可以在不关闭该对话框的情况下继续执行,在转入到应用程序其他部分的代码时可以不需要用户做出响应。它一般用来显示信息,或者进行一些设置。模式对话框和无模式对话框在创建资源时是一致的,只是在显示对话框之前调用的函数不一样。模式对话框调用的是 DoModal 函数,而非模式对话框调用的是 Create 函数。它们所用到的对话框模板资源和添加对话框类的方法也是一样的,不过,模式对话框的编程相对较容易。对话框由对话框模板资源和对话框类两部分组成。对话框模板资源用于定义编程所用到的控件和控件的分布,保存在应用程序的资源文件中。如果没有必要,不要对其进行编辑修改。对话框类都是从 CDialog 基类派生来的,用来管理对话框,并且需要编制成员函数,提供对外的交互接口。制作对话框一般需要以下几个步骤:设置对话框本身属性;对话框模板放置控件;通过控件属性对对话框设置各个属性以及设置控件的 Tab 顺序。要想设置对话框的属性,单击对话框模板,按 Enter 键弹出属性设置对话框,2013 届 本 科 毕 业 设 计 ( 论 文 )可以对对话框属性进行设置。如 Style 选项卡,可以设置对话框的风格和边界类型等。对话框标题在 General 选项卡的 Caption 编辑框中设置。添加控件要借助控件工具栏。向对话框添加控件的方法是:在控件工具栏上单击选择一个控件,然后在对话框模板所要放置控件处按下鼠标即可,可用鼠标拖动边框或使用 Shift+ 方向键可对控件的大小进行微调。接着按下 Ctrl 或 Shift 键用鼠标单击控件可同时选中多个控件,并可对多个控件同时进行操作,通过 Layout 下拉菜单进行对齐、均匀分布和使大小相同等操作。选中控件或对话框后按 Enter 键,则会弹出一个属性对话框,可设置控件的标识(ID) 、标题(Caption)和各种风格(Styles )等。3.3.3 设置控件 Tab 顺序Tab 顺序,也叫跳变顺序,即用户按下 Tab 键后,输入焦点跳变的顺序。设置 Tab 顺序时,应对每一个控件赋予顺序编号。为设置 Tab 顺序,选择 LayoutTab Order 菜单项或按 Ctrl + D 组合键,会看到每个控件上都会有一个表示当前跳变顺序的数字。要改变跳变顺序,需单击所要设置顺序的第一个控件,再单击第二个,第三个,直到最后一个。完成后,按 Enter 即可。3.3.4 对话框常用控件控件一般是利用对话框编辑器,并通过交互操作来创建的。在 Windows 对话框中,常用的控件类型有多种。 静态控件通常用来显示一些几乎固定不变的文字列或图形描述。它是一种单向交互的控制,只能支持应用程序的输出,而一般不用来响应用户的输入,即它可以接受消息,但基本上不会发送消息。其主要作用是作为对话框界面的标识符,使对话框的界面更加美观。 按钮控件是 Windows 应用软件中最常用的控件之一,通常用于启动命令或改变选项。它由 Cbutton 类进行管理,使用 CButton:SetButtonStyle 和 CButton: GetButtonStyle 函数能够在应用程序中动态地设置和查询按钮的当前状2013 届 本 科 毕 业 设 计 ( 论 文 )态。按钮的功能就是开与关,它有 3 种类型:按键按钮、单选按钮和复选框。按键按钮通常可以立即产生某个动作,执行某个命令,也被称为命令按钮,CButton 类会默认为 OK 和 Cancel ,按钮提供消息处理程序以关闭对话框。复选框的外形是一个空心方框,当被选中时,复选框中就会出现一个点标记。一般复选框只有选中和未选中两种状态,而三态复选框则还可以处在禁止状态(灰框) 。单选按钮的外形是一个圆圈,当它被选中时,单选按钮中间就会出现一个黑点标记。单选按钮分为一般和自动两种分格类型。 滚动条控件Windows 允许滚动条作为一个独立的控件而存在,也可以将其并入窗口、列表和组合框中。滚动条控件的外形和存在如同一个窗口的滚动条一样,它具有直接的输入焦点。其主要作用是从一个预定义范围中迅速而有效地选取一个整数值。按照滚动条的走向分为垂直滚动条和水平滚动条两种类型。但其组成部分都是两端都有箭头按钮,中间有一个可沿滚动条移动的滚动块。 列表视图控件是一个有可选对象列表的控件窗口,用户可以选择其中一项或多项。它的默认风格为单选,仅当指定多选式样时才支持多选类型。这个控件由 MFC 的 CListCtrl 类进行管理。如果要在对话框中直接使用列表视图控件,需遵循以下步骤:在对话框编辑器中,直接向对话框资源中添加列表视图控件,并指定控件 ID;为控件添加 CListCtrl 类型的成员变量;使用属性窗口在对话框类中,添加需要处理的列表视图控件的消息映射;在 OnInitDialog 函数中设置 CListCtrl 控件的属性。如果是在非对话框窗口中使用列表视图控件,需遵循以下步骤:在视图或窗口类中定义类别视图控件变量;在视图类的 OnInitialUpdate (或窗口类的 OnCreate ) 函数类中调用控件的 Create 函数。 编辑控件2013 届 本 科 毕 业 设 计 ( 论 文 )编辑控件也可叫做文本框控件。可完成文字列的输入和输出双项操作,并允许用户对其进行编辑。在编辑控件中可以进行文字和数字的输入以及对控件中文本内容的剪切、粘贴、复制等操作。当它获得输入焦点时,就会出现一个闪动的插入符,指明当前插入位置。创建编辑控件需要两个步骤:首先调用构造函数 CEdit ,然后调用 Create 函数以创建 Windows 编辑控件并将其与 CEdit 对象相连接。 组合框控件它将编辑控件和列表框控件组合在一起,能够实现复杂的选择,用户不仅能选择列表中已有的项,还能添加新的项。其主要风格特征分为:简易式、下拉式和下拉列表式。3.4 通信模块的设计在此次设计中,我的重点是通信模块方面,因此,下面将另用一章对其进行论述。3.5 本章小结本章详细论述了智能安防报警系统的设计过程,包括其关键技术与算法,布防参数和处警参数的设置,云台控制系统的分析与设计,另外还介绍了对话框的基本知识。2013 届 本 科 毕 业 设 计 ( 论 文 )第 4 章 通信模块的设计4.1 通信参数界面如果注册表中没有用户所选择使用的串口通信设置,则需要使用串口通信参数对话框来进行设置。下面将设置该对话框界面。选择菜单 Insert/Resource,在“Insert Resource”对话框中选择“Dialog”选项,增加新的对话框资源,设置新对话框 ID 为 IDD-COMMPROPERTIES。对话框标题设置为“串口属性” ,字体设置为“宋体” ,字体大小设置为 9。按表 4-1 添加控件后的对话框如下图 4-1 所示。表 4-1 IDD_COMMPROPERTIES 中的主要控件控件类型 ID 属性设置静态文本 IDC_COMMCHOOSE 标题设置为“串口”组框 缺省 标题设置为“最大传输速率”组合框 IDC_SPEED 不选Sort组框 缺省 标题设置为“连接参数”2013 届 本 科 毕 业 设 计 ( 论 文 )静态文本 缺省 标题设置为“数据位”组合框 IDC_DATABITS 不选Sort静态文本 缺省 标题设置为“停止位”组合框 IDC_STOPBITS 不选Sort静态文本 缺省 标题设置为“校验位”组合框 IDC_PARITY 不选Sort组框 缺省 标题设置为“流控制”单选按钮 IDC_RADIO1 标题设置为None单选按钮 IDC_RADIO2 标题设置为Xon/Xoff单选按钮 IDC_RADIO3 标题设置为RTS单选按钮 IDC_RADIO4 标题设置为Xon/RTS按钮 IDOK 标题设置为“确定”按钮 IDCANCEL 标题设置为“取消”图 4-1 编辑串口属性对话框中各控件作用如下: “串口”文本中包含当前要进行设置的串口号,由调用该对话框的程序设置该值。 “最大传输速率”下拉框中可以选择串口的最大传输速率。 “连接参数”组框内各组合框用于设置数据位、停止位与奇偶校验。2013 届 本 科 毕 业 设 计 ( 论 文 ) “流控制”组框内单选按钮组用于设置串口通信流控制方式。 对话框左上方有两个命令按钮, “确定”命令按钮可将该窗体上的设置写入注册表中, “取消”命令按钮取消本次操作。在添加完上述控件后,将串口属性的 5 个组合框 Type 属性值设为 Drop List;并为这 5 个组合框提供表 4-2 中的缺省数据(右击组合框,选择右键菜单中的Property 项,选择弹出对话框的 Data 选项卡,输入表 4-2 中数据)表 4-2 串口属性默认数据数据传输率 校验位 数据位 停止位 串口号19200 None 8 1 COM19600 Odd 7 1.5 COM22400 Even 6 2 COM31200 Mark COM4数据300 Space 最后双击对话框资源,打开 ClassWizard,为 IDD-COMMPROPERTIES 添加类CCommSettingDlg,按照表 4-3 为该类添加成员变量。表 4-3 添加的 CCommSettingDlg 类成员变量控件 ID 变量名 数据类型IDC-COMMCHOOSE m-strChoose CStringIDC-DATABITS m-strDataBits CStringIDC-PARITY m-strParity CStringIDC-SPEED m-strSpeed CStringIDC-STOPBITS m-strStopBits CString4.2 串口通信参数设置 CCommSettingDlg 类CCommSettingDlg 类 对应于通信参数设置界面。当注册表中没有用户所选择使用的串口通信设置信息时,需要使用该对话框来进行设置,并将设置保存入注册表中“我的电脑/HEKY-CURRENT-USER/Software/Alert/PortSetting/” 键下。可按下述步骤实现 CCommSettingDlg 类。 加入整型数据成员 m_nFlow;CCommSettingDlg 头文件如下所示(去除了少许由 AppWizard 生成的无关代码)2013 届 本 科 毕 业 设 计 ( 论 文 ):/CommSettingDlg.h:header file/ CCommSettingDlg dialogClass CCommSettingDlg:public CDialog/ Constructionpublic:int m_nFlow; /流控制方式CCommSettingDlg(CWnd*pParent=NULL); /standard constructor/Dialog Data/AFX_DATA(CCommSettingDlg)enum IDD=IDD_COMMPROPERTIES;CString m_strChoose; /串口选择CString m_strDataBits; /数据位CString m_strParity; /校验位CString m_strSpeed; /最大速率CString m_strStopBits; /停止位/AFX_DATA 加入全局函数 GetSetting 和 SaveSetting,完成注册表设置读取和写入工作。/全局函数,从注册表读取串口通信设置CString GetSetting(CString key,CString ValueName) CString res;DWORD count=100;2013 届 本 科 毕 业 设 计 ( 论 文 )CRegKey regKey;regKey.Open ( HKEY_CURRENT_USER,“SoftwareAlert”+key);regKey.QueryValue(res.GetBuffer(100),ValueName.res.ReleaseBuffer();regKey.Close();return res;/全局函数,向注册表中写入串口通信设置void SaveSetting (CString key,CString ValueName,CString value)CRegKey regKey;regKey.Create(HKEY_CURRENT_USER, “SoftwareAlert”+key);regKey.Open (HKEY_CURRENT_USER, “SoftwareAlert”+key);regKey.SetValue(value,ValueName);regKey.Close(); 利用 ClassWizard 重载函数 OnInitialUpdate,完成初始化工作;CCommSettingDlg:CCommSettingDlg(CWnd*pParent/*=NULL*/):CDialog(CCommSettingDlg:IDD,pParent)/AFX_DATA_INIT(CCommSettingDlg)m_strChoose=_T(“串口 1”); /各参数初始化m_strDataBits=_T(“8”); m_strParity=_T(“N”); m_strSpeed=_T(“9600”); m_strStopBits=_T(“1” );/AFX_DATA_INTm_nFlow=0;2013 届 本 科 毕 业 设 计 ( 论 文 )4.3 加入通信模块4.3.1 概述智能安防报警系统使用 MSComm 控件完成串口通信任务,使用 WinIO 库操作并口。并行接口就是主机与接口、接口与外设之间都是以并行方式传送数据。即每次传送一个字或字节的全部代码。其特点是: 接口中具有与系统总线直接相连的输入/输出数据缓冲器和一组数据线。 接口中具有与外部设备进行联络的应答信号。 接口中有地址译码电路,产生片选信号和内部寄存器地址选择。 接口可使用程序传送方式或程序中断传送方式实现外设与主机之间的信息交换。 简单并行接口只有一个 I/O 通路驱动外设,对于复杂的、可编程并行接口可有几个 I/O 通路驱动不同外设的输入/输出。并行接口的数据通路宽度是按字或字节设置,其数据传送效率高。当外部设备的工作方式是并行传送数据,并且与主机系统距离较近时,则选用并行接口。由于并行接口可以直接和各种 I/O 设备的数据线相连,所以用它来连接外设组成系统非常方便,故在慢速设备中使用很普遍。串行接口是计算机的另一种标准接口,现在的 PC 机一般至少有两个串行口COM1 和 COM2。串行口不同于并行口之处在于它的数据和控制信息是一位接一位串行地传送下去。这样,虽然速度会慢一些,但传送距离较并行口更长,因此长距离的通信应使用串行口。串口的本质功能是作为 CPU 和串行设备间的编码转换器。当数据从 CPU 经过串行端口发送出去时,字节数据被转换为串行的位。在接受数据时,串行的位将被转换为字节数据。4.3.2 MSComm 控件介绍Microsoft Communications Control (以下简称 MSComm)是 Microsoft 公司提供的简化 Windows 下串行通信编程的 ActiveX 控件,它为应用程序提供了通过串行接2013 届 本 科 毕 业 设 计 ( 论 文 )口收发数据的简便方法,在 Visual C+、Visual Basic、Delphi 等语言中均可以使用。MSComm 控件不是工具箱控件,在 VC 中如果要使用 MSComm 控件,首先应将这个控件插入到一个 Project 中,然后才能在这个工程中使用它。具体的添加方法是:选择菜单 Project-Add To Project-Components and Controls, 出现“Components and Controls Gallery”对话框,在此对话框的 “查找范围”中选择“Registered ActiveX”,再在此文件夹中选择“Microsoft Communications Control, Version 6.0”,单击“Insert ”按钮就可以完成添加 MSComm 控件的操作了。MSComm 控件提供下列两种处理通信的方式:事件驱动方式和查询方式。 事件驱动方式事件驱动方式是处理串行端口交互作用的一种非常有效的方法。在许多情况下,事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD)或 Request To Send (RTS)线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通信事件;OnComm 事件还可以检查和处理通信错误,在 OnComm 事件处理函数中加入自己的处理代码。事件驱动方法的优点是程序响应及时,可靠性高。每个 MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。 查询方式查询方式实质上还是属于事件驱动方式,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方式可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。4.3.3 MSComm 控件的属性MSComm 控件有很多重要的属性 ,必须熟悉的有:CommPort设置并返回通信端口号2013 届 本 科 毕 业 设 计 ( 论 文 )Settings以字符串的形式设置并返回数据传输速率、奇偶校验、数据比特、停止比特PortOpen设置并返回通信端口的状态,也可以打开和关闭端口Input从接收缓冲区返回和删除字符Output向传输缓冲区写一个字符串4.3.4 MSComm 控件串口编程 基本流程VC+6.0 提供的 MSComm 控件通过串行端口发送和接收数据,为应用程序提供串行通信功能。下面对 MSComm 进行通信编程加以论述。 在当前 Project 中插入 MSComm 控件打开“Project-Add to Project-Components and Controls-Registered ActiveX Controls”菜单选择 Components: Microsoft Communications Control,version 6.0 命令将 MSComm 控件插入到当前的 Project 中。结果就添加了类 CMSComm。类CMSComm 的相关文件 mscomm.h 和 mscomm.cpp 也一并加入 Project 中。 初始化并打开串口对串口进行初始化一般说来要完成以下几个设置:设定通信端口号,即 CommPort 属性。设定通信协议,即 HandShaking 属性。设定传输速率等参数,即 Settings 属性。设定其他参数,有必要时再加上其他的属性设定。打开通信断口,即将 PortOpen 属性设为 Ture。下面通过一段简单的代码对上述步骤进行说明(这里假定 m-Com 是有效的CMSComm 对象):m-Com.SetCommPort(1); /选择 COM1m-Com.SetInBufferSize(1024); /设置输入缓冲区的大小,单位为 Bytem-Com.SetOutBufferSize(512); /设置输出缓冲区的大小,单位为 Byte2013 届 本 科 毕 业 设 计 ( 论 文 )if (!m-Com.GetPortOpen() ) /打开串口m-Com.SetPortOpen(TRUE);m-Com.SetInputMode(1); /设置输入方式为二进制方式m-Com.SetSettings (“9600,n,8,1”); /设置数据传输速率等参数m-Com.SetRTHreshold(1); /为 1 表示有一个字符引发一个事件m-Com.SetInputLen(0); 捕捉串口事件MSComm 控件可以采用查询或事件驱动的方法从端口获取数据。 串口读写完成读写的函数简单,使用 GetInput()和 SetOutput()就可。 关闭串口在使用完 MSComm 通信对象后,需要将通信端口关闭。当然如果窗体注销时,MSComm 控件注销同样可以完成这一功能。可用下面的语句来实现这个功能:m-Com.SetPortOpen(FALSE);4.3.5 WinIO 库介绍本系统中使用了由 Yariv Kaplan 编写的 WinIO 库(该库及其源代码可在 中找到 )操作 I/O 端口,WinIO 库有以下特点: WinIO 库通过使用内核模式下设备驱动程序和其他一些底层编程技巧绕过了 Windows 安全保护机制,允许 32 位 Windows 程序直接对 I/O 口进行操作。 编程和使用简单,无需安装即可在所有 Windows 平台下使用。 在 WinNT 系列下,WinIO 应用程序只能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论