您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页煤气泄漏报警系统监测软件设计

煤气泄漏报警系统监测软件设计

来源:吉趣旅游网
兰州交通大学博文学院毕业设计(论文)

煤气泄漏报警系统监控软件设计

摘 要

为了避免由于煤气泄漏爆炸或中毒事故所造成的损失,人们采用了各种措施防止此类事故的发生,其中智能煤气泄漏监控系统就是为了预防一氧化碳泄漏而采用的集成了家用自动报警器和计算机多机串行通信技术于一体的一种集散测控系统。在该系统中,多机通信技术的实现对于系统正常完成实时监控任务具有重要意义。

基于上述原因,本文主要研究了以煤气泄漏监控系统为例的PC机与多台单片机之间的多机串行通信系统的工作原理,通过选择串行通信总线标准、制定数据格式和通信校验方式为此监控系统制定了多机串行通信协议,并且采用VB6.0设计了可视化界面,编写了串行通信软件,接收来自煤气泄漏监控下位机模拟软件发送的监控信息,并反馈相应应答信息给下位机模拟软件,同时实现了监控信息的实时显示与存储。

本文所设计的程序能对煤气检测系统发送的报警信号进行显示与处理,经过模拟实验验证,程序运行稳定,实现了报警信息的实时传送和显示与存储。该软件经过相应修改既能应用于相关应用场合,具有一定的实用价值。

关键字:VB6.0;MSComm控件;多机串行通信;煤气泄漏监控系统

I

兰州交通大学博文学院毕业设计(论文)

Design of Communication Software Used for PC in

Total Distributed Control System

ABSTRACT

In order to avoid the losses caused by gas leak explosion or poisoning accidents, people have adopted all sorts of measures to prevent such accidents. Intelligent gas leak monitoring system which is a kind of distributed measurement and control system integrated of domestic automatic alarm and computer multicomputer serial communication technology is adopted to prevent carbon monoxide leak. In this system, the achievement of multicomputer communication technology is of great significance for the system accomplishing real-time monitoring task.

For the reason talked above, the thesis mainly researches the working principle of multicomputer serial communication system between a PC and single-chip microcomputers based on the example of gas leak monitoring and controlling system and multicomputer serial communication protocol for this monitoring system is made by choosing serial communication buses standard, establishing data format and verification mode. Visual Basic 6. 0 is adopted in the thesis to design visual interface and write software program of serial communication to receive monitoring information from SCM simulation software of gas leak monitoring system and feedback corresponding information to SCM simulation software. Meanwhile it can achieve real-time display and storage of monitoring information.

The program designed in this thesis can display and dispose of alerting signal send by gas detection system. Through simulation experiment, it is verified that the programs can work steadily and achieve real-time transmission,display and storage of monitoring information. The software can be used in related occasions by corresponding modification with certain practical value.

Key words: VB6.0; MSComm control; multicomputer serial communication; gas leak monitoring system

II

兰州交通大学博文学院毕业设计(论文)

目 录

摘要 .......................................................................................................................................... I ABSTRACT .................................................................................................................................. II 目录 ............................................................................................................................................ I 1 绪论 ...................................................................................................................................... 1 1.1 课题背景 ......................................................................................................................... 1 1.2 集散测控系统 ................................................................................................................. 1 1.3 室内煤气泄漏监控系统 ................................................................................................. 3 1.4 课题主要任务 ................................................................................................................. 4 2 串行通信系统的设计与实现 .............................................................................................. 5 2.1 串行通信简介 ................................................................................................................. 5 2.1.1 串行通信的基本概念 ............................................................................................. 5 2.1.2 串行通信的方式 ..................................................................................................... 6 2.2 串行通信总线标准选择 ................................................................................................. 8 2.2.1 RS-232和RS-485总线标准接口简介 .................................................................. 8 2.2.2总线标准的选择与通信网络结构设计 ................................................................ 11 2.3 串行通信协议的制定 ................................................................................................... 13 2.3.1 通信协议的概念 ................................................................................................... 13 2.3.2 通信协议的内容 ................................................................................................... 13 2.3.3 通信协议的制定 ................................................................................................... 14 2.4 VB6.0环境下上位机通信的实现 ................................................................................ 14 2.4.1 MSComm控件 .......................................................................................................... 15 2.4.2 MSComm控件处理通信的方式 .............................................................................. 15 2.4.3 MSComm控件的引用 .............................................................................................. 16 2.4.4 MSComm控件常用属性 .......................................................................................... 17 2.4.5 MSComm控件通信步骤 .......................................................................................... 19 2.4.6 Timer控件 ............................................................................................................ 20 3 监控信息存储数据库的设计 ............................................................................................ 21 3.1 数据库的建立 ............................................................................................................... 21 3.2 VB6.0数据窗体向导 .................................................................................................... 21

I

兰州交通大学博文学院毕业设计(论文)

3.3 MSFlexGrid控件 .......................................................................................................... 22 3.4 DataGrid控件 .............................................................................................................. 24 3.5 Data控件 ...................................................................................................................... 25 3.6 ADO控件 ........................................................................................................................ 28 3.7 MSFlexGrid控件和Data控件的绑定 ........................................................................ 30 3.8 DataGrid控件和ADO控件的绑定 .............................................................................. 32 4 可视化界面设计 ................................................................................................................ 34 4.1 软件操作流程图 ........................................................................................................... 34 4.2 欢迎界面设计 ............................................................................................................... 34 4.3 用户操作界面设计 ....................................................................................................... 35 4.4 权限界面设计 ............................................................................................................... 38 4.5 管理界面设计 ............................................................................................................... 39 4.6 实时监控界面设计 ....................................................................................................... 39 5 监控系统的通信模拟实验 ................................................................................................ 44 致谢 .......................................................................................................................................... 47 参考文献 .................................................................................................................................. 48 附录1 附录2

II

兰州交通大学博文学院毕业设计(论文)

1 绪论

1.1 课题背景

随着单片机和计算机技术的不断发展,特别是网络技术在测控领域的广泛应用,由PC机和多台单片机构成的多机网络测控系统已成为单片机技术发展的一个方向。它不仅体现了单片机现场实时数据采集时的快速性和灵活性,而且充分利用了PC机丰富的软硬件资源来实现友好的人机界面。同时,windows环境下后台计算机在数据库管理上具有明显的优势。二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势。基于以上背景,本课题主要以煤气泄漏监控系统为例研究了PC机与多台单片机所构成的小型集散控制系统是如何进行通信的。

1.2 集散控制系统

集散控制系统又称多级计算机分布控制系统和分布式控制系统,它是以微处理器为基础的集中分散型控制系统,根据分级设计的基本思想,实现功能上分离,位置上分散,以达到“分散控制为主,集中管理为辅”的控制目的。目前,集散控制系统已在工业控制领域得到了广泛应用,越来越多的仪表和控制工程师已经认识到集散控制系统必将成为过程工业自动控制的主流。在计算机集成制造系CIMS(Computer Integrated Manufacturing System)或计算机集成作业系统CIPS(Computer Integrated Production System)中,集散控制系统将成为主角,发挥其优势。

随着计算机技术和网络技术的发展,系统的开放性不仅能使不同制造厂商的集散控制系统产品互联,方便地进行数据交换,而且也使得第三方的软件可以方便地在现有的集散控制系统上应用。目前,我国已引进不同型号集散控制系统的数量多达几百套,同时也有自行研发的DCS系统,应用领域遍及石化、轻化、冶金、建材、纺织、制药等各行各业[1]。

集散控制系统由过程控制站、操作站和通信系统三部分组成。

(1)过程控制站:过程控制站由分散过程控制装置组成,是集散控制系统与生产过程之间的界面,它的主要功能是分散的过程控制,生产过程的各种过程变量通过分散过程控制装置转化为操作监视的数据,而操作的各种信息也通过分散过程控制装置送到执行机构。

(2)操作站:操作站由操作管理装置,如由操作台、管理机和外部设备(如打印

1

兰州交通大学博文学院毕业设计(论文)

机、拷贝机)等组成,是操作人员与集散控制系统之间的界面,相当于车间操作管理级和全厂优化及调度管理级,实现人机接口。它的主要功能是集中各分散过程控制装置送来的信息,通过监视和操作,把操作和命令下送给各分散控制装置。

(3)通信系统:集散控制系统要达到分散控制和集中操作管理的目的,就需要使下一层信息向上一层集中,上一层指令向下一层传送,级与级或层与层进行数据交换,这都靠计算机通信网络(即通信系统)来完成。通信系统是过程控制站与操作站之间完成数据传递和交换的桥梁,是集散控制系统的中枢。通信系统常采用总线型、环型等计算机网络结构,不同的装置有不同的要求。

以上三部分之间的关系如图1.1所示。

操作人员、管理人员 集中操作和管理装置 通信网络系统 分散过程控制装置 工业生产过程 图1.1 集散测控系统组成

集散控制系统大体可分为三个发展阶段:

(1)第一阶段(1975年-1980年):微处理器的发展导致第一代集散控制系统的产生,系统以实现分散控制为主。

(2)第二阶段(1980年-1985年):局域网络技术的发展导致以全系统信息管理为主的第二代集散控制系统的产生。同第一代相比,一个显著变化是:数据通信系统由主从式的星型网络通信转变为效率更高的对等式总线网络通信或环型网络通信。

(3)第三阶段(1985年以后):开放系统的发展使集散控制系统进入了第三代。采

2

兰州交通大学博文学院毕业设计(论文)

用局部网络技术和国际标准化组织(ISO)的开放系统互联(OSI)参考模型,克服了第二代集散控制系统在应用过程中因难于互联多种不同标准而形成的“自动化孤岛”。通信管理和控制软件变得更加丰富和完善。

集散控制系统因其一些优良特性而被广泛应用,成为过程控制的主流。与常规模拟仪表相比,它具有连接方便,采用软连接方法进行连接,容易改变;显示方式灵活,显示内容多样;数据存储量大等优点。与计算机集中控制系统比较,它具有操作监督方便、危险分散、功能分散等优点。它始终围绕着功能结构灵活的分散性和安全运行维护的可靠性,紧跟时代的发展成为前沿技术[1]。

1.3 室内煤气泄漏监控系统概述

在社会信息化进程日益发展的今天,信息技术应用己渗透到人类生存、活动的各个领域。人们对生活环境、工作场所的要求不仅仅是一个遮风避雨的地方,而是要达到舒适健康、安全可靠、高效便利。目前家用煤气,液化器、天然气作为气体燃料,已深入人民的生活之中。

气体燃料的应用和普及,随之而来的是由于使用不当和设备老化等问题所导致的燃气泄漏爆炸或中毒事故时有发生。其中由于一氧化碳泄漏中毒死亡尤为严重。众所周知,由于CO与血液中的血红素的结合能力是氧的240倍,因此当它进入人体血液循环系统后,就会大量取代氧而与血红素结合,抑制血液中氧气的释放,从而导致发生头痛、耳鸣、呕吐、血压降低等不同程度的症状发生。如果CO中毒严重,轻者于康复过程中可能会头昏眼花、丧失记忆或引起视觉及神经上的障碍,严重者会导致脑部受损甚至发生死亡。

为了预防一氧化碳的泄漏,人们采用了各种措施。家用智能煤气报警器是为了预防气体中毒的一种家用的自动报警器,也是一种高灵敏度的气体探测器。一般都是应用高灵敏度的气敏元件作为气电转换元件,并配以电路和声光报警部分组成。当泄漏的气体达到危险极限值时报警器就会发生鸣响和声光报警。如果将煤气报警器通过RS-485总线与PC机连接起来,借助本课题所设计的室内煤气泄漏监控系统就可以实现实时报警监控,及时提醒用户,防止煤气中毒或爆炸。

一氧化碳报警器有便携式、壁挂式、固定式等,可对现场的一氧化碳浓度进行检测,浓度值达到预设值就会发生报警。

以下是本人了解到的一些一氧化碳报警器,如图1.2所示。

3

兰州交通大学博文学院毕业设计(论文)

图1.2一氧化碳报警器

1.4 课题主要任务

目前基于分布式控制结构的小型集散测控系统的应用越来越广泛,这种系统一般由两级微机组成:上位机和下位机。上位机多采用PC机,用于过程控制、计算或数据处理;下位机多采用单片机,用来完成实时控制及现场数据采集等。因此,PC机与单片机之间的通信成为关键。本课题中,上位机通过VB6.0进行可视化界面设计,通信软件程序编写,实现与多个以单片机为核心处理器的一氧化碳报警器的串行通信,以便达到室内煤气泄漏的实时监控。

具体而言,完成的任务如下:

(1)分析设计的内容,通过各种方法来搜集有关上位机通信的资料以及了解软件编写的方法。

(2)了解小型测控系统的通信网络结构。

(3)通过对串行通信的了解和研究,制定出相应的串行通信协议。

(4)根据制定好的串行通信协议开始设计串行通信软件,编写通信流程图,根据流程图,编写主程序、发送子程序和接收子程序及其它子程序。

(5)用VB6.0设计可视化界面并实现上位机对下位机所传输数据的显示、处理和存储等操作。

(6)完成5000字符与毕业设计相关的英文资料翻译。 (7)整理论文,撰写并排版。

4

兰州交通大学博文学院毕业设计(论文)

2 串行通信系统的设计与实现

随着计算机网络化和微机分级分布式应用系统的发展,通信的功能也越来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。

2.1 串行通信简介

2.1.1 串行通信的基本概念

在通信领域内,有两种数据通信方式:并行通信和串行通信。如图2.1所示:(a)图为并行通信示意图,(b)图为串行通信示意图。

数据

接 发 数据 接发

(a)并行通信

(b)串行通信

送端 收端 送端 收端 图2.1 并行通信与串行通信示意图

所谓并行通信,是在一些联络信号的控制下,一次将8位或16位或32位数据同时传送完毕。在并行通信中,传输线的数目没有,除了数据线之外还应设置有通信联络控制线。但是当要传输的距离比较远时,一般不能使用并行通信,其原因基于以下两点:一是通信线路费用昂贵;二是由于众多的连线间极易引入干扰,又容易发生线路故障,使整个系统的可靠性变得十分脆弱。

如果采用两条线,即一条通信线加上一条地线来进行单向通信,传送的信息(数据信息和控制信息)一次传送一位,如8位的数据信息分8次传送完毕,这种方式称为串行通信。最简单的信息传送方式,应该就是用一条信号线路来传送电压的变化而达到传送信息的目的。只要准备沟通的双方事先定义好什么样的状态代表什么样的意思,那么通过这一条线就可以让双方进行数据交换。

5

兰州交通大学博文学院毕业设计(论文)

2.1.2 串行通信的方式

由于信息在一个方向上传输只占用一根传输线,而这根线上既传送数据,又传送联络信号,因为此为区分这根线传送的信息流中,哪一部分是联络信号,哪一部分是数据,就必须引出串行通信的一系列约定。于是,在串行通信中就有异步通信和同步通信两种基本串行通信方式。

(1)异步通信

异步方式通信ASYNC(Asynchronous Data Communication),又称起止式异步通信,是计算机通信中最常用的数据信息传输方式。它是以字符为单位进行传输的,字符之间没有固定的时间间隔要求,而每个字符中的各位则以固定的时间传送。收、发双方取得同步的方法是采用在字符格式中设置的起始位和停止位。在一个有效字符正式发送前,发送器先发送一个起始位,然后发送有效字符位,在字符结束时再发送一个停止位,起始位至停止位构成一帧[2]。

串行异步通信时的数据格式如图2.2所示。

第n个字符 1 停止位0 起始位D0 D1 D2 D3 D4 D5 D6 D7 1/0 1 8位数据位 1 0 D0位奇偶校验位

图2.2 异步通信一帧数据格式

a)起始位:起始位必须是持续一个比特时间的逻辑“0”电平,标志着传送一个符的开始。

b)数据位为5-8位,它紧跟在起始位之后,是被传送字符的有效数据位。传送时先传送字符的低位,后传送字符的高位。数据位究竟是几位,可由硬件或软件来设定。

c)奇偶校验位:奇偶校验位仅占一位,用于进行奇校验或偶校验,也可以不设奇偶校验位。

d)停止位:停止位为1位、1.5位或2位,可由软件设定。它一定是逻辑“1”电平,标志着传送一个字符的结束。

e)空闲位:空闲位表示线路处于空闲状态,此时线路上为逻辑“1”电平。空闲位

6

兰州交通大学博文学院毕业设计(论文)

可以没有,此时异步传送的效率为最高。

(2)同步通信

同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。它们均由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步[2]。

串行同步通信时的数据格式如图2.3所示。

一帧信息 01111110 A C I FC 01111110 开始标志 地址位 控制位 数据位(0-n位)16位CBC校验码 结束标志 图2.3 同步通信一帧数据格式

同步通信中使用的数据格式根据所采用的控制规程(通信双方就如何交换信息所建立的一些规定和过程称为通信控制规程)又可分为面向字符型和面向位(比特)型两种。

面向字符型的数据格式又有单同步、双同步、外同步之分。

a)单同步:发送方先传送1个同步字符,再传送数据块,接收方检测到同步字符后接收数据;

b)双同步:发送方先传送2个同步字符,再传送数据块,接收方检测到同步字符 后接收数据;

c)外同步:用一条专用线来传送同步字符,以实现收发双方同步操作。

同步传送,接收和发送时钟对于收、发双方之间的数据传送达到同步是至关重要的。在发送方,一般都是在发送时钟的下降沿将数据串行移位输出;在接收方,一般都是在接收时钟的上升沿将数据串行移位输入。

(3)串行通信的传送方向

串行通信在两个站(或设备)之间传送,有单工、半双工、全双工三种形式。 a)单工:仅能进行一个方向的传送,即A只能作为发送器,B只能作为接收器。如图2.4所示。

7

兰州交通大学博文学院毕业设计(论文)

图2.4 单工形式 A B b)半双工:交替地进行双向数据传送,但两个设备之间只有一根传输线,因此两 个方向的数据传送不能同时进行,如图2.5所示。

接收器 图2.5 半双工形式

接收器 发送器 发送器

c)全双工:两个设备之间有两条传输线,能在两个方向上同时进行数据传送,如图2.6所示。

发送器 发送器 接收器 接收器

2.2 串行通信总线标准选择

图2.6全双工形式

EIA-232、EIA-422与EIA-485标准等串行通信技术应用很广,如录像机、计算机以及许多工业控制设备上都配备有EIA-232串行通信接口。

2.2.1 RS-232和 RS-485总线标准接口简介

1.RS-232总线标准接口

RS-232C总线标准接口是由美国电子工业协会(EIA)1969年正式公布的,全称是“使用二进制进行交换的数据终端设备和数据通信设备(DCE)之间的接口”。在异步串行通信中应用最广的标准总线,它包括了按位传输的电器和机械方面的规定,适合于短距离或带调制解调器的通信场合,最大的传输速率为20Kb/s,最大传输距离为15m[3]。

8

兰州交通大学博文学院毕业设计(论文)

目前RS-232是PC机与通信工业中应用最广泛的一种串行接口,RS-232被定义为一种在低速串行通信中增加通信距离的单端标准。

由于 RS-232C 并未定义连接器的物理特性,因此,出现了 DB-25、DB-15 和 DB-9各种类型的连接器,其引脚的定义也各不相同。

本文通信用串口DB-9类型,如图2.7所示。

图2.7 DB-9串口

在 AT 机及以后,不支持 20mA 电流环接口,使用 DB-9 连接器,作为提供多功能 I/O 卡或主板上 COM1 和 COM2 两个串行接口的连接器。它只提供异步通信的 9 个信号。其各引脚定义及功能如表2.1所示。

表2.1引脚定义及功能

9针RS-232串口(DB-9) 引脚 1 2 3 4 5 6 7 8 9 简写 CD RXD TXD DTR GND DSR RTS CTS RI 功能说明 载波侦测(Carrier Detect) 接收数据(Receive) 发送数据(Transmit) 数据终端准备(Data Terminal Ready) 地线(Ground) 数据准备好(Data Set Ready) 请求发送(Request To Send) 清除发送(Clear To Send) 振铃指示(Ring Indicator) 9

兰州交通大学博文学院毕业设计(论文)

RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(Recommended Standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。

RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。

(1)在TXD和RXD管脚上:逻辑1(MARK)= -3V~-15V,逻辑0(SPACE)=+3~+15V。

(2)在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V~+15V,信号无效(断开,OFF状态,负电压)=-3V~-15V。

RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在RS-232C与TTL电路之间进行电平和逻辑关系的变换。

实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC14、SN751可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL与EIA双向电平转换。

2.RS-485总线标准接口

电子工业协会(EIA)于1983 年制订并发布RS-485 标准,并经通讯工业协会(TIA),修订后命名为TIA/EIA-485-A,习惯地称之为RS-485标准。

RS-485 总线作为一种多点差分数据传输的电气规范,已成为业界应用最为广泛的标准通信接口之一。这种通信接口允许在简单的一对双绞线上进行多点双向通信,它所具有的噪声抑制能力、数据传输速率、电缆长度及可靠性是其他标准无法比拟的。正因为如此,许多不同领域都采用RS-485 作为数据传输链路。例如:汽车电子、电信设备局域网、智能楼宇等都经常可以见到具有RS-485 接口电路的设备。这项标准得到广泛接受的另外一个原因是它的通用性,RS-485 标准只对接口的电气特性做出规定,而不涉及接插件电缆或协议,在此基础上用户可以建立自己的高层通信协议,如MODBUS协议。

RS-485总线电气性能如表2.2所示。

目前,在我国应用的现场网络中,RS-485半双工异步通信总线也是被各个研发机构广泛使用的数据通信总线。但是基于在RS-485 总线上任一时刻只能存在一个主机的特点,它往往应用在集中控制枢纽与分散控制单元之间。

10

兰州交通大学博文学院毕业设计(论文)

表2.2 RS485总线电器性能

性能指标 工作模式 允许的收发器数目 最大电缆长度 最高数据速率 最小驱动输出电压范围 最大驱动输出电压范围 最大输出短路电流 最大输入电流 驱动器输出阻抗 输入端电容 接收器输入灵敏度 接收器最小输入阻抗 接收器输入电压范围 接收器输出逻辑高 接收器输出逻辑低 RS485总线 差分传输(平衡传输) 32(受芯片驱动能力) 4000英尺(1219米) 10Mbps ±1.5V ±5V 250mA 1.0mA/12Vin、-0.8mA/-7Vin 欧 ≤50pF ±200mV 12k -7V~+12V >200mV 2.2.2总线标准的选择与通信网络结构设计

目前最通用的串行通信

<200mV 接口是

RS-232串口,但因其负载能力差,通信距离较较短的原因,用RS-232建立PC机与多单片机的通信网络是不合适的。而RS-485是一个多引出线接口,这种接口可以有多个驱动器和接收器,能够实现PC机与多台单片机的串行通信,而且其通信距离可达1000米以上,适合远距离传输。

因此,在本课题所设计的室内煤气泄漏监控系统中采用RS-485总线建立PC机与多台一氧化碳报警器的传输网络是可行的。

PC机对外的两个串口COM1、COM2都是专门为RS-232通信设置的,所以当PC机与多台单片机远距离通信时,可使用RS-232/ RS-485型通信接口转换器,将计算机上的RS-232通信口转为RS-485通信口,在信号进入单片机前在使用RS-485/ RS-232转换器将RS-485通信口转RS-232通信口,再与单片机相连,如图2.8所示。

11

兰州交通大学博文学院毕业设计(论文)

PC机 RS485/RS232 1号 COM1 COM2 RS232/RS485 RS485/RS232 2号 RS485RS485

图2.8 PC机与多个单片机远距离连接

RS485/RS232 n号 武汉波仕电子有限公司生产的波仕RS-232/RS-485/RS-422 转换器都可将RS-232 通信距离延长至1.2Km以上(9600bps时)。都可以用于PC 机之间、PC 机与单片机之间构成远程多机通信网络。

波仕的485TC 和485TA 转换器外形都为DB-9/DB-9 转接盒大小,其中DB-9(孔座)一端直接插在9芯RS-232 插座(针座)上。PC 机RS-232串行口的DB-9芯连接器引脚分配如下:2-RXD(收),3-TXD(发),5-GND(地)。产品均无需任何初始化设置,只用到RXD(收)、TXD(发)、GND(地)信号,加上独有的内部零延时自动收发转换技术,确保适合所有软件。

485TC为全双工半双工通用型,485TA为半双工型,如图2.9所示。

由波仕RS-232/RS-485转换器所构成的RS-485总线式通信方式如图2.10所示。

12

兰州交通大学博文学院毕业设计(论文)

(a)波仕485TC

(b)波仕485TA

图2.9 波仕RS-232/RS-485转换器

图2.10 典型的RS-485半双工多机通信

2.3 串行通信协议的制定 2.3.1 通信协议的概念

所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S~OSI七层参考模型中的数据链路层[4]。

目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。

2.3.2通信协议的内容

通信协议是对数据传输方式的规定,包括数据格式定义和数据位定义等。通信方式

13

兰州交通大学博文学院毕业设计(论文)

必须遵循统一的通信协议。要想保证通信成功,通信双方必须有一系列的约定,比如作为发送方,必须知道什么时候发送信息、发什么、对方是否收到、收到的内容有没有错、要不要重发、怎么通知对方结束等;作为接收方,必须知道对方是否发送信息、发的是什么、收到的信息是否有错、如果有错如何通知对方、怎么判断结束等。具体而言包括起始位、数据位、奇偶校验位、停止位、波特率设置和握手信号等。

1.起始位:当通信线路上没有数据被传送时处于逻辑“1”状态。当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。其作用就是使设备同步,通信双方必须在传送数据位前协调同步。

2.当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或8,PC机中经常采用7位或8位数据传送。

3.奇偶校验位:数据位发送完后,便可以发送奇偶校验位。奇偶校验位用于有限差错检测,通信双方应约定一致的奇偶校验方式。如果选择偶校验,那么组成数据位和奇偶位的逻辑“1”的个数必须是偶数,如果选择奇校验,那么逻辑“1”的个数必须是奇数。

4.停止位:在奇偶位或数据位之后发送的是停止位。停止位是一个字符数据的结束标志,可以是1位或2位,接收设备收到停止位之后,通信线路上便又恢复逻辑“1”状态,直至下一个字符数据的起始位到来。

5.信号线上传送的所有为信号都保持一致的信号时间,每一位的宽度都由数据传送速率确定,而传送速率是以每秒多少字节衡量的,这个速率叫波特率。

2.3.3 通信协议的制定

本系统初步拟定网络容量为1台PC机与24台单片机进行多机通信,单片机为主动方,PC机为被动方。PC机不做查询,当单片机发送报警信息时,PC机进行数据接收,并显示在监控界面上。

PC机与单片机通过RS-232标准串行接口进行半双工异步串行通信,采用总线连接方式。该标准接口采用9针插头,只用其中的三个引脚,即串行输入RXD、串行输出TXD、地线GND,这就是所谓的三线接法。信号传输的速率设定为9600bps。

PC机串口信息帧格式应同单片机一致,包括1位起始位、1位停止位、8位数据位、无奇偶校验。用FEH、EFH两个字节表示起始标识,FFH表示停止标识。

2.4 VB6.0环境下上位机通信的实现

14

兰州交通大学博文学院毕业设计(论文)

实现上位机通信软件的工具有很多种,如:C语言、Visual Basic、Visual C++等。但Visual Basic是创建开发Window环境下应用程序强有力的工具。VB是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言。无论是开发功能强大、性能可靠的商务软件,还是编写能处理实际问题的实用小程序,VB都是最快速、最便捷的语言。它简单易学、容易掌握,使用VB,编程人员不用编写大量的代码去描述界面元素的外观和位置,而只需把预先建立好的对象拖到屏幕的某一位置即可,从而使编程效率得到了极大的提高。VB6.0又在数据访问、控件、语言、向导及Internet支持等方面增加了许多新的功能,可用于开发Window环境下功能强大、图形界面丰富的各类应用软件系统。

用Visual Basic 6.0 进行串行通信程序的设计有两种方式:一是直接调用Windows API,另一种方式是使用通信控件,但后一种方式实际上是通过通信组件间接地调用了Windows API 函数,其过程要比直接调用API 要复杂,但是在程序的实现上要比前一种方式简单的多[3]。所以本课题使用串行通信控件,即MSComm控件来实现PC机与多台单片机之间的串行通信。

2.4.1 MSComm控件

串行通信控件MSComm控件全称为Microsoft Communications Control,是微软公司提供的简化Windows 下串行通信编程的ActiveX 控件,它既可以用来提供简单的串行端口通信功能,也可以用来创建功能完备的、事件驱动的高级通信工具。

MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API 函数,而且在VC、VB、Delphi等语言中均可使用。使用它可以建立与串行端口的连接,通过串行端口连接到其他通信设备(如调制解调器),发出命令,交换数据,以及监视和响应串行连接中发生的事件。利用它可以进行诸如拨打电话、监控串行端口的输入数据,以及创建功能完备的终端程序等。

2.4.2 MSComm控件处理通信的方式

MSComm控件的目的是为了让用户设计一个系统可以和串行端口进行沟通及传送数据,因此信息会在其硬件线路上流动,此控件提供了以下两种方式来处理信息的流动。

1.事件驱动方式

该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm 控件会产生 OnComm事件,用户程序可以捕获该事件并进行相应的处理。它是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时程序应该能处理它,

15

兰州交通大学博文学院毕业设计(论文)

例如,在串口接收缓冲区中有一个字符到达或者一个变化发生时,程序都可以利用MSComm控件的OnComm事件捕获并处理这些通信事件。OnComm 事件还可以检查和处理通讯错误。在程序的每个关键功能执行之后,可以通过检查CommEvent 属性的值来查询事件和错误[5]。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。

2.查询方式

在程序的每个关键功能执行之后,在用户程序中设计定时或不定时的查询,通过检查CommEvent 属性的值来查询事件和错误,从而做出相应的处理。在进行简单应用程序设计时可采用这种方法。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一需要接收的字符就是调制解调器的“0K”回应。查询方式的进行可用计时器Timer或Do„loop程序实现[5]。查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。

2.4.3 MSComm控件的引用

1.控件添加

我们开始一个项目的设计时,VB的工具箱中会有许多默认的控件让设计者选择,这些原本就出现在工具箱中的控件是内置控件,它提供一些基本的系统设计组件给设计者。不过,功能比较特别的控件就不会出现在其中,如用来设计通信功能的控件MSComm就不在其中。所以,当使用MSComm控件时,首先要把它加入到工具箱中。

步骤如下:

选择“工程”菜单下的“部件„”子菜单,在弹出的“部件”对话框中,在“控件”选项卡中选中“Microsoft Comm Control 6.0”复选框,单击“确定”按钮后,在工具箱中就出现一个形似“电话”的图标,它就是MSComm控件,如图2.11所示。

工具箱中有了MSComm控件,就可以选择MSComm控件的图标将其添加到程序窗体上,利用该控件就可以通过VB编程实现PC机与串口设备的串口通信了。

16

兰州交通大学博文学院毕业设计(论文)

2.控件操作

在使用VB所提供的串行通信功能之前,必须对VB的电话盒(MSComm控件)做一个了解,以便可以将串行通信的观念套用上去。Windows采用了全新的对象化设计思想,把所有的程序都对象化。在对象化之后,我们在VB设计串行通信的相关项目时,一样是遵循了4个步骤。

(1)对象—首先了解所要操作的对象是什么? (2)属性—该对象所具备的属性有哪些?

(3)事件—该对象在系统执行的过程中会因其他对象而发生什么样的事情? (4)方法—当该对象被引发了某个事件之后,程序应该采取的步骤是什么? VB的串行通信对象乃是将RS-232的初级操作予以封装,用户以高级的VB语法即可利用RS-232与外界通信,并不需要了解其他有关的初级操作。使用MSComm控件主要是对其属性的设置。

2.4.4 MSComm控件常用属性

MSComm控件的属性众多,其主要属性说明如下。

1.CommPort:设置或返回通信连接端口代号。程序必须指定所要使用的串行端口的号码。程序亦可经由此属性读回所使用的连接端口号码。在此所设置的通信端口号由1开始往上递增,MSComm的最大值是16,当使用的通信端口号码超过16时,此控件会显示错误信息。当我们欲指定某一通信端口时,可用如下语句:

例如:MsComm.CommPort = 1 ‘指定使用COM1作为通信传输。

2.Settings:设置初始化参数。以字符串的形式设置或返回连线速度、校验码、数据位、停止位四个参数。其格式为“BBBB,P,D,S”,其中BBBB为连线速度,P为字

17

兰州交通大学博文学院毕业设计(论文)

符校验方式,D为数据位数,S为停止位数。默认值是“9600,N,8,l”,其意为“所使用的通信端口是以每秒9600Bit的速度作传输,不作字符校验,每次数据是8个Bit,而停止位是1个Bit”,而此四项必须是依照顺序,不可前后对调。Settings设置完成之后,所送出及收回的字符串便以此设置为主,使用RS-232通信的两方,Settings必须完全一样,彼此才能顺利地作沟通,否则双方无法收到彼此所传送的信号。

例如:MSComm.Settings =“9600,N,8,1”

3.Portopen:设置或返回通信连接端口的状态。使用串行端口之前必须先将要使用的串行端口打开,而在使用完毕之后,也必须执行关闭的操作。

4.Input属性

Input属性用于从输入缓存器返回并删除字符。程序靠这个命令将对方传到输入缓存区中的字符读进来,并清除缓存区中已被读取的字符。

例如:Buffer=MSComm1.Input ‘将输入缓存区的字符读入Buffer字符串变量中。 5.Output属性

Output属性用于将一个字符串写入输出缓存区。当程序需要向对方传输字符串时,可使用此命令将字符串写入输出缓存区中。

例如:MSComm.output =“ABCD” ‘将ABCD四个字符通过RS-232传输出去。 6.InputLen属性

InputLen属性用于指定由串行端口读入的字符串长度。 7.Handshaking属性

Handshaking属性用于指定通信两方的交握协议。

交握协议只有在缓存区没有超速的情况下才能保证数据不被遗失。而缓存区超速是指数据到达连接端口的速度太快,以至于通信装置来不及将数据移到接收缓存区。VB中交握协议的设置如表2.3所示。

表2.3 交握协议的设置

设置 Comnone ComXOnXOff ComRTS ComRTSXOnXOff 值 0 1 2 3 说明 (默认值)没有交握协议 (XON/XOFF)交握协议 RTS/CTS(Request To send/Clear To send)交握协议 RequestToSend和XON/XOFF交握协议 8.Rthreshold属性

18

兰州交通大学博文学院毕业设计(论文)

Rthresho1d属性用于设置或返回引发接收事件的字符数:即属性页上的“最小接收字符数”。当接收缓存区达到所设置的字符数时,将会引发OnComm事件中的接收事件。

例如:MSComm.Rthreshold = 20,当接收缓存区达到20个字符时,引发接收事件。 9.CommEvent属性

CommEvent属性在通信错误或事件发生时都会产生OnComm事件,CommEvent属性存有该错误或事件的数值码。

10.DTREnable属性

DTREnable属性用于判断在通信时是否启用Data Terminal Ready(DTR)线路。通常Data Terminal Ready通常是由计算机发出的信号,表示计算机在等待接收传输。

11.RTSEnable属性

RTSEnable属性用于决定是否使Request To Send(RTS)线有效。一般情况下,由计算机向外设传输RequestToSend信号,以请示准许传输数据。RequestToSend线被用在RTS/CTS硬件交握协议上。

12.InBufferCount属性

InBufferCount属性用于返回在接收缓存区中的字符数。它是指己接收,并在接收缓存区中等待读取的字符。用户可以把InBufferCount属性设置为0,以清除接收缓存区。

13.InputMode属性

InputMode属性用于设置或返回Input属性取回的数据形态。可设置的数值如表2.4所示。

表2.4 InputMode属性的设置

常数 ComInPutModeText ComInPutModeBinary 值 0 1 说明 (默认值)数据通过Input属性以文本形式返回 数据通过Input属性以二进制形式返回 InPutMode属性决定Input属性如何返回数据,数据是以字符串的形式接收还是当作字节数组中的二进制数据来接收,完全要由属性的设置来决定。

例如:MSComm.InputMode=1 ‘则以二进制方式接收数据。

2.4.5 MSComm控件通信步骤

了解MSComm控件的相关属性、事件后,就可以正确地应用该控件来完成我们预定的通信任务。通常以下面的步骤来使用VB的MSComm控件作通信控制[2]。

1.加入通信对象,也就是加入MSComm对象。

19

兰州交通大学博文学院毕业设计(论文)

2.设置通信端口号码,即CommPort属性。 3.设置通信协议,即Handshaking属性。 4.设置传输速度等参数,即Settings属性。

5.设置其他参数,若必要时再加上其他的属性设置。 6.打开通信端口,即PortOpen属性设成True。

7.送出字符串或读入字符串,使用Input及Output属性。

8.使用完MSComm通信对象后,将通信端口关闭,即PortOpen属性设成False。 遵循以上的步骤,就可以建构串行通信传输系统。

在上述步骤中,步骤2~5可以在设计环境中的属性窗口中作设置,也可以在程序中以程序的语法作设置,而步骤6~8的设置及使用则只能在程序中以VB的相关语法作设置。

2.4.6 Timer控件

在 Windows 应用程序中常常要用到时间控制的功能,如在程序界面上显示当前时间,或者每隔多长时间触发一个事件,等等。而 Visual Basic 中的Timer(时间)控制器就是专门解决这方面问题的控件。

1.Enabled 属性

用于决定是否启动定时器。当该属性的值为True时,启动定时器的Timer事件;当该属性值为False时,关闭定时器。

定时器的Enabled属性不同于其他对象的Enabled属性。对于大多数对象,Enabled属性决定对象是否响应用户触发的事件;定时器控件的Enabled属性值为False时,将暂停定时器操作。

2.Interval 属性

两次定时器事件触发的时间间隔(ms)。Interval 属性的有效值在0到65535s之间,其属性值既可在设计时设置,也可在程序运行时设置。如果Interval=0,定时器停止工作。定时器控件的事件只有一个Timer事件。只要定时器控件的属性Enabled=True,而且Interval属性值大于0,则Timer事件以Interval 属性指定的时间间隔发生。在Timer事件过程中编写需要定时进行的处理,可以周期性地激活Timer事件,每隔一段时间自动地调用一次Timer事件过程[6]。

3 监控信息存储数据库的设计

数据库是存储在计算机存储设备上的结构化的相关数据的集合。数据库技术是在数

20

兰州交通大学博文学院毕业设计(论文)

据管理技术的发展中逐步形成的,是当前一种先进的数据管理技术。Visual Basic 6.0中最吸引人,同时也是大家最关心的地方就是Visual Basic 6.0强大的数据库开发功能。人们可以通过使用数据控件或者在程序中添加代码的方法来访问和控制大多数的数据库,如最常见的Access、SQL Server、FoxPro、Excel、Paradox等,而且随着Visual Basic 6.0编程技术的不断进步,Visual Basic 6.0在数据库方面的功能也突飞猛进。本设计以Access 7.0作为后台数据库,通过VB中提供的Data控件、ADO控件来进行访问,实现添加、更新、查询等基本操作。

3.1 数据库的建立

在Access中建立数据库不仅可以在可视化界面下通过向导实现,也可以通过程序实现。可视化数据管理器(VisData)是Visual Basic 6.0提供的一个相当实用的工具程序,凡是Visual Basic 6.0有关数据库的操作,例如数据库结构的建立以及记录的添加、修改、删除等,都可以利用这个有利的工具来进行。具体步骤如下。

1.启动数据管理器

在Visual Basic 程序窗口中,选择“外接程序”菜单中的“可视化数据管理器”命令,就会启动“数据管理器”的VisData窗口。

2.建立数据库表结构

在“VisData”窗口中执行“文件”→“新建”→“Microsoft Access” →“Version7.0” 命令,在随后出现的对话框中输入数据库文件名“yonghu”,并选择保存路径,确定后打开数据库窗口。

3.新建数据表

在“数据库窗口”中单击右键,在快捷菜单中选择“新建表”命令,出现“表结构”对话框,在“表结构”名称一栏中输入数据表名称“UsersInformation”,单击“添加字段”按钮,在出现的对话框中依次输入或选择表结构中的字段名称、类型、大小等信息。所有字段添加完毕后关闭该对话框,将返回“表结构”对话框,最后单击“生成表”按钮,就会生成数据表UsersInformation,并出现在“数据库窗体中”,至此,数据表结构建立完毕。进而可对其进行数据编辑。

3.2 VB6.0数据窗体向导

VB6.0有一个“数据窗体向导”可以用来自动创建数据库应用界面。也就是说,利用该向导,只需选择数据库和他的数据表就会自动地创建数据窗体,即自动地创建数据库应用界面。创建步骤如下:

21

兰州交通大学博文学院毕业设计(论文)

(1)选择“外界程序”菜单,单击“外界程序管理器”选项,在该对话框中双击“VB6.0数据窗体向导”使其加载,单击“确定”按钮后“外接程序”菜单将添加“数据窗体向导”选项。

(2)选择“外接程序”菜单,单击“数据窗体向导”选项,在出现的对话框中点击“下一步”,再选中Access数据类型后单击“下一步”,单击“浏览”,找到yonghu.mdb数据库,单击“下一步”,设置窗体名称为“业主信息管理”,选择窗体布局为“单个记录”,绑定类型为“ADO数据控件”,单击“下一步”,在“记录源”下拉列表中选择“UserInformation”,在“可用字段”双击要用的字段添加到“选定字段”列表中,单击“下一步”,在“可用控件”中选择需要的控件,单击“下一步”,再单击“完成”将自动完成“业主信息管理”窗体的创建。

(3)对自动生成的窗体加以修改,使其美观。

(4)运行后可以查看和编辑yonghu.mdb数据库中“UserInformation”数据表记录,界面如图3.1所示。

图3.1 “业主信息管理”窗体的运行界面

3.3 MSFlexGrid控件

MSFlexGrid控件显示和操作表格数据,其对包含字符串和图片的表格提供了灵活的排序、插入数据和格式编排功能。当与Data控件绑定时,MSFlexGrid控件只显示只读数据[7]。

你可以在MSFlexGrid中的任何单元放置文本、图片或这二者。使用Cols和Rows属性确定MSFlexGrid控件中的行数和列数。Row和Col属性指定MSFlexGrid控件的当前单元。你可以在代码中指定当前单元,也可以在运行时使用鼠标或键盘改变当前单元。

22

兰州交通大学博文学院毕业设计(论文)

Text属性引用了当前单元中的文本。如果单元中的文本太长以致不能在单元中一行显示,将WordWrap属性置为True将在单元中分多行显示文本。要在单元中显示多行文本,你需要增大单元的宽度(ColWidth属性)或行高度(RowHeight属性)。以上属性既可以通过属性栏直接进行设置,也可以通过编程实现。

1.MSFlexGrid控件的方法 (1)Clear方法

清除MSFlexGrid控件所有单元格中内容。 语句格式:MSFlexGrid.Clear (2)AddItem方法

在MSFlexGrid控件中添加一个新行。

语句格式:MSFlexGrid.AddItem(String,Index,Number)

String为新增行中的字符串,用Tab键作为一行中各单元格字符串的分隔符。 Index为新增行的行号,若省略则添加到最后一行。Number为添加行的带区号。

(3)RemoveItem方法

在MSFlexGrid控件中删除一行。

语句格式:MSFlexGrid.RemoveItem (Index,Number) Index为要删除行的行号,Number为要删除行的带区号。 2.MSFlexGrid控件的事件 (1)KeyPress

事件当用户按下或释放任何一个ANSI键时触发。

定义:Private Sub <控件名>_KeyPress(KeyAscii As Integer)。其中,形参KeyAscii用于将用户按下或释放的ANSI键值传送给KeyPress过程。

(2)KeyDown事件 当用户按下一个键时触发。

定义:Private Sub <控件名>_KeyDown(KeyCode As Integer, Shift As Integer)。其中,形参KeyCode用于表示用户按键的类型。

(3)KeyUp事件

当用户放开任何一个键时触发。

定义:Private Sub <控件名>_KeyUp(KeyCode As Integer, Shift As Integer) (4)MouseDown事件 当用户按下鼠标触发。

23

兰州交通大学博文学院毕业设计(论文)

定义:Private Sub <控件名>_MouseDown(Button As Integer, Shift As Integer,x As Single, y As Single)。

(5)MouseUp事件 当用户放开鼠标时触发。

MouseUp事件处理过程的原型定义与MouseDown过程原型定义类似,就不再叙述。 (6)EnterCell与LeaveCell事件

在进入一个单元格时触发EnterCell事件,在离开一个单元格时触发LeaveCell事件。这两个事件过程均无参数。

3.4 DataGrid控件

DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。当在设计时设置了DataGrid 控件的 DataSource 属性后,就会用数据源的记录集来自动填充该控件,以及自动设置该控件的列标头[8]。

1.DataGrid控件设计操作

当第一次创建DataGrid控件时,它只有一行和一列,还包含一个空行,用来添加新记录。在DataGrid控件的属性页窗口通过设置可以改变DataGrid控件的任何可视属性。选择DataGrid控件,单击鼠标右键,在出现的快捷菜单中选择“属性”命令,出现该控件的“属性页”对话框,如图3.2所示。

(1)“通用”选项卡:显示出应用于整个DataGrid控件的属性并且在设计时可以确定取值。

(2)“列”选项卡:显示出单个列的属性。如果选定多列,则“列”选项卡中最左边的列先被选中。设置列属性不影响整体的DataGrid控件的属性。

(3)“颜色”选项卡:允许选择所有DataGrid控件的颜色。列对象的颜色不会受这些设置的影响。

(4)“字体”选项卡:允许选择所有DataGrid控件和标题的字体。列对象的字体不会受这些设置的影响。

24

兰州交通大学博文学院毕业设计(论文)

如果一个单元格的文本太长,在单元格中显示不下,此文本会自动地在同一单元格折到下一行。要显示被折叠的文本,可以加宽单元格的列对象的宽度属性或DataGrid控件本身的RowHeight属性。

图3.2 DataGrid控件的“属性页”对话框

3.5 Data控件

Data控件是是VB中访问数据库的重要控件,它支持大多数与数据库有关的操作,通过使用Data控件可以开发非常复杂的数据库应用程序[9]。在本设计中它与MSFlexGrid控件捆绑,对用户信息进行显示。

1.Data控件的主要属性 (1)Connect属性

Connect属性用来指定数据库的类型,VB支持的数据库类型众多,如Access、Excel、Foxpro等。其中默认的数据库为Access。单击Connect属性右边的向下箭头,可下拉出一个Data控件所支持的数据库类型列表,用户可从中选择要操作的数据库类型。

(2)DatabaseName属性

设置被访问的数据库的名称和路径。可以在属性窗口中单击DatabaseName属性右边的按钮,在出现的一个共用对话框中选择相应的数据库,也可以在运行时利用语句进行设置。

(3)Exclusive属性

该属性的功能是决定Data控件所链接的数据库文件在运行时是否允许其他进程将 它打开。若该属性的值为True,则表明不允许其他进程打开该数据库。

(4)ReadOnly属性

25

兰州交通大学博文学院毕业设计(论文)

设置是否以只读方式打开指定的数据库。设置为True是只读方式,为False是读写方式。

(5)RecordSource属性

设置数据源,为底层表、SQL语句或QueryDef对象。 (6)Recordset属性

返回一个指定数据源中的记录集或运行一次查询所得的记录的结果集合。 (7)RecordsetType属性

该属性用来设置记录集的类型。记录集共有3种类型,分别是Table(表)、 Dynaset(动态集)和Snapshot(快照)。

Table类型是以表格直接显示数据,需要系统资源最多,但是其处理速度最快。 Dynaset类型的记录集可以在表中增加、修改和删除记录,是最灵活的记录集类型。Snapshot类型的记录集只能静态显示数据(只读),其灵活性最低,但是所需的资源最少。

(8)BOFAction属性

设置当BOF为True时,即记录集移动到第一个记录的上头时,Data控件动作。 (9)EOFAction属性

设置当EOF为True时,即记录集移动到最后一个记录的下头时,Data控件动作。 2.Data控件常用的事件 (1)Error事件

当Data控件产生执行错误时触发。使用语法如下:

Private Sub Data1_Error(DataErr As Integer, Response As Integer)

其中,Data1 是Data控件的名称;DataErr为返回的错误号;Response设置执行的动作,为0表示继续执行,为1表示显示错误信息。

(2)Reposition事件

Reposition事件是当某一个记录成为当前记录之后触发。通常利用该事件对当前记录的数据内容进行计算。

(3)Validate事件

Validate事件与Reposition事件不同,是当某一记录成为当前记录之前,或是在Update、Delete、Unload或Close操作之前触发。

3.Data控件常用的方法 (1)AddNew方法

26

兰州交通大学博文学院毕业设计(论文)

AddNew用于添加一个新记录,新记录的每个字段如果有默认值将以默认值表示,如果没有则为空白。

(2)Delete方法

Delete用于删除当前记录的内容,在删除后应将当前记录移到下一个记录。 (3)Edit方法

Edit用于对可更新的当前记录进行编辑修改。 (4)Find方法群组

Find方法群组是用于查找记录,包含FindFirst、FindLast、FindNext和FindPreviou方法,这4种方法查找的起点不同。如表3.1所示。

表3.1查找方法

Find方法 FindFirst FindLast FindNext FindPreviou 查找起点 第一个记录 最后一个记录 当前记录 当前记录 向前查找 查找方向 向后查找 向前查找 向后查找 向前查找 (5)Move方法群组

Move方法群组是用于移动记录,包含MoveFirst、MoveLast、MoveNext和MovePrevious 方法,这四种方法分别是移到第一笔记录、最后一笔记录、下一笔记录和前一笔记录。当在最后一个记录时,若使用了MoveNext方法时EOF的值会变为True,如果再使用MoveNext方法就会出错。对于MovePrevious方法如果前移,结果也是同样。

(6)Refresh方法

如果DatabaseName、ReadOnly、Exclusive或Connect属性的设置值发生改变,可以使用Refresh方法打开或重新打开数据库,来更新数据控件的集合内容。

(7)Seek方法

Seek方法适用于数据表类型(Table)记录集,通过一个已被设置为索引(Index)的字段,查找符合条件的记录,并使该记录为当前记录。

(8)Update方法

Update方法用于将修改的记录内容保存到数据库中。 (9)UpdateControls方法

UpdateControls方法可以从数据控件的记录集中再取回原先的记录内容,即恢复原

27

兰州交通大学博文学院毕业设计(论文)

先值。当在与数据控件链接的控件中修改了记录内容,可以用UpdateControls方法使这些控件显示恢复原来的值[10]。

3.6 ADO 控件

ADO 控件和Visual Basic 的内部数据控件(Data控件)很相似,用户可以利用其属性、方法和事件快速的创建与数据库的连接[11]。在本设计中与DataGrid控件捆绑,对报警记录进行显示。

1.ADO 控件与数据库相关的属性 (1)ConnectionString属性

该属性是一个字符串,可以包含一个连接所需的所有设置值,在该字符串中所传递的参数是与驱动程序相关的。例如ODBC驱动程序允许该字符串包含驱动程序、提供者、默认的数据库、服务器、用户名称及密码等内容。该属性的参数说明如表3.2所示。

表3.2 ConnectionString属性参数说明

参数 Provider File Name Remote Provider Remote Server 说明 指定用于连接的数据源名称 指定基于数据源的文件名 指定在打开一个客户端连接时使用的数据源名称 指定在打开客户端连接时使用的服务器的路径与名称 (2)UsersName属性

当数据库受保护时,需要指定该属性。和Provider属性类似,该属性可以在ConnectionString属性中指出。如果同时提供了一个ConnectionString属性以及一个UsersName属性,则ConnectionString属性中的值将覆盖UsersName属性的值[12]。

(3)Password属性

在访问一个受保护的数据库时,Password是必须的。与Provider属性和UsersName属性类似,如果在ConnectionString属性中指定了密码,则将覆盖Password属性中指定的值[12]。

(4)RecordSource属性

该属性通常包含一个数据库表名,一个查询或一个存储过程调用,用于决定从数据库中检索什么信息。

(5)Mode属性

28

兰州交通大学博文学院毕业设计(论文)

该属性决定想用记录集进行什么操作。 (6)CommandType属性

该属性用于指定RecordSource属性的取值类型是一个表的名称、一个查询、一个存储过程,还是一个未知的类型。

CommandType属性的取值如表3.3所示。

表3.3 CommandType属性的取值

值 8 1 2 4 常数 adCmfUnknow adCmdText adCmdTable adCmdStoreProc 说明 adCmfUnknow属性类型未知 为一条SQL语句 为一个数据库表名 为一个存储过程 (7)BOFAction属性和EOFAction属性

这两个属性用来指定当记录指针指向开始和末尾时的行为。提供的选择包括停留在开始或末尾、移动到第一个或最后一个纪录、在末尾添加一个新纪录。

ADO 控件的属性一般可以通过控件的属性页进行设置如图3.3所示。

图3.3 ADO 控件的“属性页”对话框

2. ADO 控件的常用方法 (1)UpdateControls方法

该方法用于更新绑定控件的内容。绑定控件是通过设置控件的DataSource属性和DataField属性,从而将该控件与ADO 控件的某个字段绑定到一起的。使用绑定控件,

29

兰州交通大学博文学院毕业设计(论文)

可以让该控件的内容自动更新,取回记录集当前记录的内容或者将更新的内容保存到记录集中[13]。

(2)AddNew方法

用于在ADO 控件的记录集中添加一条新的记录。其使用语法如下: Adodc1.Recordset.AddNew (3)Delete方法

用于在ADO 控件的记录集中删除当前记录。其使用语法如下: Adodc1.Recordset.Delete

(4)MoveFirst、MoveLast、MoveNext和MovePreviou方法

用于在ADO 控件的记录集中移动记录。MoveFirst、MoveLast、MoveNext和MovePreviou方法分别为移动到第一个记录、最后一个纪录、下一个纪录和上一个记录。其使用语法如下:

Adodc1.Recordset.MoveFirst/MoveLast/MoveNext/MovePreviou (5)CancelUpdate方法

用于取消ADO 控件的记录集中添加或编辑操作,恢复修改前的状态。其使用语法如下:

Adodc1.Recordset.CancelUpdate (6)UpdateBatch方法

用于保存ADO 控件的记录集中添加或编辑操作,其使用语法如下: Adodc1.Recordset.UpdateBatch

3.7 MSFlexGrid控件和Data控件的绑定

在本设计中,将MSFlexGrid控件和Data控件绑定用于对业主信息进行显示和查询。如图3.4所示。

1.MSFlexGrid控件主要属性设置

(1)MSFlexGrid1.Rows = 30;MSFlexGrid1.Cols = 7 (2)MSFlexGrid1.DataSource = Data1

(3)MSFlexGrid1.FiexdRows = 1;MSFlexGrid1.FiexdCols = 0 2.Data控件主要属性设置

(1)Data1.Caption =“业主信息表”

(2)Data1.DatabaseName =“C:\\Users\\SONY\\Desktop\\VB设计\\yonghu.mdb”

30

兰州交通大学博文学院毕业设计(论文)

(3)Data1.RecordSource =“UsersInformation” (4)Data1.Visible = False

3.其他控件的属性设置

其他控件的属性设置如表3.4所示。

表3.4 控件的属性设置

Frame1 Label1 Label3 Label5 Label7 Label9 Command1 Command3 Command5 Caption Caption Caption Caption Caption Caption Caption Caption Caption 查询 按姓名查询: 按房号查询: 姓名: 单元号: 电话: 退出查询 确定 取消查询 Frame2 Label2 Label4 Label6 Label8 Label10 Command2 Command4 Caption Caption Caption Caption Caption Caption Caption Caption 业主信息 按单元号查询: 序号: 性别: 房号: 单位: 确定 确定 图3.4 业主信息查询界面

Text控件的Text属性均为空

3.查询程序设计

本设计通过按姓名查询、按单元号查询、按房号查询这三种方式实现对业主信息的

31

兰州交通大学博文学院毕业设计(论文)

查询。“业主信息查询”窗体加载时,所有的记录都将显示在如图3.5所示的数据表格中,一旦确定查找后,包含所查找字段的信息将显示在数据表格中,并分别显示在右侧的“业主信息”栏中,增强阅读性。

3.8 DataGrid控件和ADO控件的绑定

在本设计中,将DataGrid控件和ADO控件绑定用于对报警记录进行显示和查询,如图3.5所示。

图3.5 报警记录查询界面

1.DataGrid控件主要属性设置 (1)DataGrid1.DataSource = Adodc1 (2)DataGrid1.AllowAddNew = False

DataGrid1.AllowArrows = True DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = True 2.ADO控件主要属性设置

(1)Adodc1.ConnectionString =“Provider = Microsoft.Jet.OLEDB.4.0;DataSource

= C:\\ Users\\ SONY\\Desktop\\VB设计\\lishijilu.mdb;Persist Security Info=False (2)Adodc1.RecordSource =“select * from jilu” (3)Adodc1.Visible = False

32

兰州交通大学博文学院毕业设计(论文)

3.其他控件属性设置

其他控件属性设置如表3.5所示。

表3.5 控件属性设置

Frame1 Label2 Label4 Label6 Combo2 Combo4 Command1 Command3 Command5 Caption Caption Caption Caption List List Caption Caption Caption 查询 年 日 按照房号查询: 1~12 1~3 确定 确定 取消查询 Label1 Label3 Label5 Combo1 Combo3 Combo5 Command2 Command4 Caption Caption Caption List List List Caption Caption 按照时间查询: 月 按照单元号查询: 2011~2020 1~31 101~501、102~502 确定 退出查询 3.查询程序设计

本设计通过三种途径,即按时间查询、按单元号查询,按房号查询来实现对报警记录的显示。“监控信息查询”窗体加载时,所有的记录都将显示在如图4.5所示的数据表格中,一旦确定查找后,包含所查找字段的信息将显示在数据表格中。

4 可视化界面设计

传统的编程方法使用的是面向过程、按顺序进行的机制,其缺点是用户始终要关心什么时候发生什么事情,应用程序的界面都需要编写语句来实现。用VB进行应用程序开发主要有两部分工作:即设计界面和编写代码。在开发过程中所看到的界面,与程序运行时的界面基本相同,同时VB还提供了大量的界面元素(即控件对象),如窗体、菜单、命令按钮、工具按钮、检查框等等。用户只需用鼠标将所用到的控件放到窗体的指定位置就可以设计出所需的界面,而不需编写代码后再编译生成,这就是可视化编程。

4.1 软件操作流程图

33

兰州交通大学博文学院毕业设计(论文)

开始 欢迎界面

权限界面 用户操作界面 N 密码是否正确? Y

实时监控界面 Y 管理界面

退出

图4.1软件操作流程

4.2 欢迎界面设计

打开Microsoft Visual Basic 6.0,新建“标准EXE”工程,默认已添加一个窗体Form1,把Form1和工程1都保存,在 Form1的属性页设置Caption属性为“欢迎使用”,Picture属性为所添加的图片。在窗体中添加两个Lable控件,Lable1 的Caption属性为“欢迎使用”,Lable2 的Caption属性为“室内煤气泄漏监控系统”。添加一个Timer控件,Interval属性为2000,Enable属性为true。程序开始运行2s后Form1隐藏,Form2显示。“欢迎使用”窗体运行界面如图4.2所示。关键代码如下:

Private Sub Timer1_Timer() Form2.Show

Timer1.Enabled = False Form1.Hide

34

兰州交通大学博文学院毕业设计(论文)

End Sub

4.3 用户操作界面设计

用户操作界面由标题栏、菜单栏、工具栏、和状态栏构成。在菜单栏点击工程/添加窗体,新建一个窗体Form2。Form2的Caption属性为“室内煤气泄漏监控系统”,Picture属性为所添加的图片,在窗体中添加一个Label控件,Label1 的Caption属性为“室内煤气泄漏监控系统”。

菜单栏用来方便用户选择执行,可以快速地进入所需的界面。菜单栏通过菜单编辑器实现,点击工具栏中的“菜单编辑器”按钮,弹出如图4.3所示的对话框,根据自己的需要,设置菜单及菜单项的标题、名称、快捷键等来完成菜单栏的设计。

编写程序后菜单栏运行时的状态如图4.4所示。

图4.2欢迎使用界面

35

兰州交通大学博文学院毕业设计(论文)

图4.3 “菜单编辑器”对话框

图4.4 菜单栏的运行

工具栏为用户提供了应用程序中最常用的菜单命令的快速访问方式。工具栏通常位于菜单栏的下方,由许多命令按钮组成,每个命令按钮上都有一个代表某一项操作功能的小图标。本设计中,工具栏是利用Toolbar控件和ImageList控件来创建的。向窗体中添加Toolbar控件和ImageList控件,将图片添加到ImageList控件中并设置属性之后,再右击Toolbar控件,选择“属性”命令,打开“属性页”对话框,如图4.5所示,将ImageList控件与Toolbar控件绑定,并对有关参数进行设置后即完成工具栏的添加。编

36

图4.5 Toolbar属性页的“通用”选项卡与“按钮”选项卡

兰州交通大学博文学院毕业设计(论文)

写相关程序后工具栏的运行状态如图4.6所示。

图4.6 工具栏的运行

状态栏一般用来提示系统信息和用户信息,如:软件版本号、系统日期等。在VB开发环境中使用StatusBar控件设计状态栏,通常显示在窗体的底部。在窗体中添加StatusBar控件,右击StatusBar控件,选择“属性”命令,打开“属性页”对话框,如图4.7所示,依次设置索引、文本、对齐、样式、斜面等参数即完成状态栏的设计。

图4.7属性页对话框

编写程序后用户操作界面运行的整体效果如图4.8所示。

37

兰州交通大学博文学院毕业设计(论文)

图4.8用户操作界面

4.4权限界面设计

权限界面主要是对监控系统起到安全保护的作用,以防止非法用户进入该系统。 向工程中添加一个新窗体Form3,Form3的Caption属性为“用户认证”,Picture属性为所添加的图片,在窗体中添加两个Label控件、两个Text控件和两个Command控件。Label1 的Caption属性为“用户名”,Label2 的Caption属性为“密码”;Text1的Text属性为空,Text2的Text属性也为空,Text2的PasswordChar属性为“*”;Command1的Caption属性为“确定”,Command2的Caption属性为“取消”。运行后界面如图4.9所示。

38

兰州交通大学博文学院毕业设计(论文)

密码验证程序如下:

Private Sub Command1_Click()

If Text1.Text =“jiahongliang”And Text2.Text =“123456”Then Form4.Show Unload Me Else

MsgBox“用户名或密码错误,请重试!”,vbOKOnly + vbInformation,“系统提示”

Text1.Text =“ ” Text2.Text =“ ” Text1.SetFocus End If End Sub

图4.9权限界面

4.5 管理界面设计

39

兰州交通大学博文学院毕业设计(论文)

管理界面主要是对系统的一些信息进行分类管理,由菜单栏、工作区和状态栏构成。 在工程中添加一个新窗体Form4,Form4的Caption属性为“室内煤气泄漏监控系统”,Picture属性为所添加的图片。菜单栏包括“实时监控(进入监控界面)”、“信息管理(监控信息查询、业主信息查询、业主信息更改)”、“系统维护(进入系统维护)”和“退出(退出系统)”。状态栏显示版权所有、系统时间和系统日期。菜单栏与状态栏的具体设计方法在4.3节已经叙述过,在此不作说明。在工作区中添加六个Label控件,从Label1到Label6的Caption属性分别为“室内煤气泄漏监控系统”、“SHI NEI MEI QI XIE LOU JIAN KONG XI TONG”、“实时监控”、“业主信息”、“监控信息”、“退出系统”。管理界面运行后如图4.10所示,双击各Label控件就会弹出相应的操作界面,是一种菜单栏的快捷访问方式。

4.6实时监控界面设计

实时监控界面是本系统的主界面,在实际应用中就是通过此界面对报警事件进行显示,及时提醒用户防止发生诸如中毒、火灾、爆炸等危险事故。

本界面由菜单栏、工作区、状态栏构成。菜单栏包括“监控系统(启动监控、停止监控)”、“信息管理(查询业主信息、更改业主信息)”、“退出(退出程序)”。状态栏显示版权所有、系统时间和系统日期。菜单栏与状态栏的具体设计方法在4.3节已经叙述过,在此不作说明。工作区大致可以分为三部分:串口参数、操作区域、直观监控区域。

在工程中添加一个新窗体Form5,Form5的Caption属性为“实时监控”。在窗体中添加五个Frame控件、四十二个Label控件,一个Text控件,三个Command控件,一

40

图4.10管理界面

兰州交通大学博文学院毕业设计(论文)

个MSComm控件,三个Timer控件,Label控件以建立控件数组的方式统一表示,它们的属性设置如表4.1所示。

表4.1 对象的属性设置

Frame1 Frame3 Frame5 Command2 Label1(0) Caption Caption Caption Caption Caption 一单元 三单元 操作区域 停止监控 佳宁小区10#楼煤气泄漏监控平面示意图 Frame2 Frame4 Command1 Command3 Label1(1) Label1(2) Label1(3) Label1(5) Label1(7) Caption Caption Caption Caption Label2(0) Backcolor Caption Label2(2) Backcolor Caption Label3(0) Backcolor Caption Label3(2) Backcolor Caption Label4(0) Backcolor Caption Label4(2) Backcolor Caption Label5(0) &H0000FF00& 102 Label5(1) &H0000FF00& 301 Label4(3) Backcolor Caption &H0000FF00& 202 &H0000FF00& 101 Label4(1) Backcolor Caption &H0000FF00& 401 &H0000FF00& 302 Label3(3) Backcolor Caption &H0000FF00& 201 &H0000FF00& 102 Label3(1) Backcolor Caption &H0000FF00& 402 &H0000FF00& 301 Label2(3) Backcolor Caption &H0000FF00& 202 3楼 正常 阀门已关闭 101 Label2(1) Backcolor Caption &H0000FF00& 401 Label1(4) Label1(6) Label1(8) Caption Caption Caption Caption Caption Caption Caption Caption Caption Caption 二单元 串口参数 启动监控 退出系统 1楼 2楼 4楼 报警 实时监控状态: 201 41

兰州交通大学博文学院毕业设计(论文)

Backcolor Caption Label5(2) Backcolor Caption Label6(0) Backcolor Caption Label6(2) Backcolor Caption Label7(0) Backcolor Caption Label7(2) Backcolor Label8(0) Backcolor &H0000FF00& &H0000FF00& Label8(1) &H0000FF00& 302 Label7(3) Backcolor Backcolor &H0000FF00& &H000000FF& &H0000FF00& 102 Label7(1) Backcolor Caption &H0000FF00& 402 &H0000FF00& 301 Label6(3) Backcolor Caption &H0000FF00& 202 &H0000FF00& 101 Label6(1) Backcolor Caption &H0000FF00& 401 &H0000FF00& 302 Label5(3) Backcolor Caption &H0000FF00& 201 Backcolor Caption &H0000FF00& 402 Label8(2) Label9(1) Label9(3) Label9(5) Label9(7) Label9(9) Backcolor Caption Caption Caption Caption Caption &H0000FFFF& COM1 9600 8 无奇偶校验 1 Label9(0) Label9(2) Label9(4) Label9(6) Label9(8) Text1 Caption Caption Caption Caption Caption Text 串口号: 波特率: 数据位: 校验: 停止位: 利用Form5 中的MSComm控件来实现PC机与多台单片机之间数据的发送与接收。本系统采用触发OnComm事件来接收报警,没有做查询,即当下位机有报警信息发出时触发OnComm事件,执行报警显示程序,在界面上通过改变Label2(0)~Label2(3)、Label3(0)~Label3(3)、Label4(0)~Label4(3)、Label5(0)~Label5(3)、Label6(0)~Label6(3)、Label7(0)~Label7(3)的背景颜色来显示监控状态并在Text1中用文字显示,同时将报警记录保存在数据库“lishijilu”中。 程序流程图如图4.11所示。

42

兰州交通大学博文学院毕业设计(论文)

将报警记录保存到数据库 显示报警信息 接收报警信息 触发OnComm事件 打开串口 COM1串口 串口参数初始化 开始 煤气泄漏报警系统(下位机)

串口参数初始化程序如下: Private Sub Form_Load() MSComm1.CommPort = 1

退出程序 图4.11 通信程序流程图

MSComm1.Settings =“9600,n,8,1” MSComm1.InputLen = 0

MSComm1.Handshaking = comNone MSComm1.InputMode = comInputModeBinary

43

兰州交通大学博文学院毕业设计(论文)

MSComm1.RTSEnable = True MSComm1.DTREnable = True MSComm1.InBufferSize = 1024 * 8 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If End Sub

程序运行后,实时监控界面如图4.12所示。

图4.12实时监控界面

5 监控系统的通信模拟实验

由于受下位机设备的,本系统通过PC机与PC机之间信息的发送与接收来模拟PC机与单片机之间的通信及报警信息的显示与保存。

新建一个工程,名称为工程1,打开工程1默认窗体Form1自动添加,设置其Caption属性为“通信模拟”。在窗体中添加一个Label控件、一个Text控件、一个Frame控件、

44

兰州交通大学博文学院毕业设计(论文)

一个MSComm控件、4个Command控件,窗体界面如图5.1所示,它们的属性如表5.1所示。

表5.1 对象属性设置

Label1 Frame1 Command1 Command3 Caption Caption Caption Caption 报警显示: 操作区 报警显示 关闭阀门 Text1 MSComm1 Command2 Command4 Text Settings Caption Caption 9600,n,8,1 发送报警信息 排除故障

图5.1通信模拟窗体界面

通信控件MSComm1的初始化设置必须和与之通信的另外一个MSComm控件的设

置相同,这样的话编写相应的通信程序后就可以与装有本课题所设计的系统软件的PC机通信了,继而实现煤气监控系统的模拟。

为模拟过程编写代码,运行后点击“报警显示”,图5.1中的文本框将显示报警信息。信息中的单元号、楼层、房号将通过程序编写的随即函数产生,关键代码如下:

Private Sub Command1_Click()

Randomize ' 对随机数生成器做初始化的动作。

danyuanhao = Int((3 * Rnd) + 1) ' 生成 1 到 3 之间的随机数值。 louceng = Int((5 * Rnd) + 1) ' 生成 1 到 5 之间的随机数值。 fanghao = Int((2 * Rnd) + 1) ' 生成 1 到 2 之间的随机数值。

45

兰州交通大学博文学院毕业设计(论文)

Text1.Text = danyuanhao &“单元” & louceng &“0”& fanghao &“室煤气泄漏!” End Sub

点击“发送报警信息”,此时就与另外一台PC机进行串行通信,将报警信息传送给监控系统并显示在其监控状态上,与此同时,用Label控件所代表的房间相应的背景颜色发生改变,更加直观明了地让操作人员及时收到报警信息。同样,点击“关闭阀门”、“排除故障”后,监控系统也会做出相应的反应,具体代码见附录2。

致 谢

46

兰州交通大学博文学院毕业设计(论文)

毕业设计是我们在本科阶段对四年所学课程的一次综合应用,也是考核我们专业知识素养的有效手段。在此期间,虽然遇到了一些棘手的问题,但在老师和同学的帮助下,我还是顺利的完成了此次学士学位毕业论文。

首先,感谢兰州交通大学博文学院为我们提供了一个良好的学习平台,让我们接受一流的专业知识讲授,为此次毕业设计奠定了坚实的基础。其次,由衷的感谢卫晓娟老师在我大学的最后学习阶段给予自己辛勤的指导和谆谆的教诲。从选题到开题报告,从软件设计到程序调试,从论文写作到最终定稿,她都倾注了大量的心血,一遍又一遍地指出我所存在的问题。每当我在设计过程中遇到棘手的问题时,卫老师都能耐心地帮我答疑,及时排除一切障碍。她渊博的专业知识和精益求精的工作态度深深的感染了我,更令我敬佩的是她平易近人的人格魅力,对待我们就像朋友一般,从无怨言。再次,感谢大学四年里带过我们课程的所有老师和同学们,是你们一点一滴堆起我知识的堡垒,给予我无私的奉献和热情的帮助。

最后,我要向在百忙之中抽时间对本文进行审阅、评议和参加本人论文答辩的各位师长表示感谢!

参考文献

47

兰州交通大学博文学院毕业设计(论文)

[1] 何衍庆等.集散控制系统原理及应用[M].北京:化学工业出版社,2009.3

[2] 李江全等.计算机典型测控与串口通信开发软件应用实践[M].北京:人民邮电出版社,2008.7 [3] 李江全等.Visual Basic数据采集与串口通信测控应用实战[M].北京:人民邮电出版社,2010.6 [4] 李朝清.PC机及单片机数据通信技术[M].北京:人民邮电大学出版社,2002.5 [5] 李春葆等.Visual Basic程序设计[M].北京:清华大学出版社,2008.5 [6] 刘彬彬等.Visual Basic程序设计自学手册[M].北京:人民邮电出版社,2008.3 [7] 温小敏.Visual Basic数据库系统项目开发实践[M].北京:科学出版社,2003.2 [8] 王建明.面向对象程序设计:Visual Basic 6.0[M].北京:机械工业出版社,2001.6 [9] 孟建军,殷红.面向对象的测控系统软件设计[M].西安:西安电子科技大学出版社,2008.5 [10] 尼春雨,舒熊等.Visual Basic基础与案例开发详解[M].北京:清华大学出版社,2009.8 [11] 陈紫红,安剑,孙秀梅等.Visual Basic项目开发全程实录[M].北京:清华大学出版社,2008.6 [12] 廖杉山.Visual Basic中文版面向对象与可视化程序设计[M].北京:清华大学出版社,2000.7 [13] 明日科技等.Visual Basic技术方案宝典[M].北京:人民邮电出版社,2008.7

48

兰州交通大学博文学院毕业设计(论文)

附录1

Private Sub Form_Load() Timer1.Interval = 2000 Timer1.Enabled = True End Sub

Private Sub Timer1_Timer() Form2.Show

Timer1.Enabled = False Form1.Hide End Sub

Private Sub Command1_Click()

If Text1.Text = \"jiahongliang\" And Text2.Text = \"123456\" Then Form4.Show Unload Me Else

MsgBox \"用户名或密码错误,请重试!\系统提示\" Text1.Text = \"\" Text2.Text = \"\" Text1.SetFocus End If End Sub Option Explicit Dim fanghao As Integer Dim louceng As Integer Dim danyuanhao As Integer Dim stateflag As Integer Dim Bus_position As Integer

Dim outputbuffer As Variant '用于发送数据的缓冲区 Dim length As Integer

Dim inputbuffer As Variant '用于接收数据的缓冲区

1

兰州交通大学博文学院毕业设计(论文)

Private Sub Command1_Click() Command1.Enabled = False Command2.Enabled = True Command3.Enabled = False

Text1.Text = \"串口已打开,一切正常!\" Timer1.Interval = 2000 Timer1.Enabled = False Timer2.Interval = 200 Timer2.Enabled = False Timer3.Interval = 1000 Timer3.Enabled = False

If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If End Sub

Private Sub Command2_Click() MSComm1.PortOpen = False Command1.Enabled = True Command2.Enabled = False Command3.Enabled = True

Text1.Text = \"串口已关闭,监控结束!\" Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = False End Sub

Private Sub Form_Load() MSComm1.CommPort = 1

MSComm1.Settings = \"9600, n, 8, 1\" MSComm1.InputLen = 0

MSComm1.Handshaking = comNone

MSComm1.InputMode = comInputModeBinary

2

兰州交通大学博文学院毕业设计(论文)

MSComm1.RTSEnable = True MSComm1.DTREnable = True MSComm1.InBufferSize = 1024 * 8 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If Text1.Text = \"\" Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = False stateflag = 4 End Sub

Private Sub MSComm1_OnComm() Dim length As Integer

Dim inputbuffer As Variant '用于接收数据的缓冲区 Select Case MSComm1.CommEvent Case comEvReceive length = 0

length = MSComm1.InBufferCount inputbuffer = MSComm1.Input MSComm1.InBufferCount = 0 If length = 7 Then

If inputbuffer(0) = &HFE And inputbuffer(1) = &HEF And inputbuffer(5) = &H0 And inputbuffer(6) = &HFF Then

danyuanhao = inputbuffer(2) fanghao = inputbuffer(3) louceng = inputbuffer(4) stateflag = inputbuffer(5) Timer1.Enabled = True

Else

If inputbuffer(0) = &HFE And inputbuffer(1) = &HEF And inputbuffer(5)

3

兰州交通大学博文学院毕业设计(论文)

= &H1 And inputbuffer(6) = &HFF Then

stateflag = inputbuffer(5) Text1.Text = \"阀门已关闭\" Else

If inputbuffer(0) = &HFE And inputbuffer(1) = &HEF And

inputbuffer(5)=&H2 And inputbuffer(6) = &HFF Then stateflag = inputbuffer(5) Text1.Text = \"故障已排除\"

End If End If End If End If

End Select

Dim mydatabase As Database Dim mydatabase As Database Dim table As Recordset

Set mydatabase = DBEngine.Workspaces(0).OpenDatabase(\"C:\\Users\\SONY\\Desktop\\VB设计\\lishijilu.mdb\")

Set table = mydatabase.OpenRecordset(\"jiluable.MoveLast table.AddNew

table.Fields(0) = Year(Now) & \"-\" & Month(Now) & \"-\" & Day(Now) table.Fields(1) = Hour(Now) & \":\" & Minute(Now) & \":\" & Second(Now) table.Fields(2) = Trim(Str$(danyuanhao))

table.Fields(3) = Trim(Str$(louceng)) & \"0\" & Trim(Str$(fanghao)) Select Case stateflag Case 0

table.Fields(4) = \"煤气泄漏\" Case 1

table.Fields(4) = \"阀门已关闭\" Case 2

4

兰州交通大学博文学院毕业设计(论文)

table.Fields(4) = \"故障已排除\" End Select table.Update

table.Close mydatabase.Close Timer2.Enabled = True End Sub

Private Sub caijishuju1() Select Case fanghao Case 1

Text1.Text = \"一单元\" & louceng & \"0\" & fanghao & \"室煤气泄漏!\" Label2(louceng - 1).BackColor = &HFF& Case 2

Label3(louceng - 1).BackColor = &HFF&

Text1.Text = \"一单元\" & louceng & \"0\" & fanghao & \"室煤气泄漏!\" End Select End Sub

Private Sub caijishuju2() Select Case fanghao Case 1

Text1.Text = \"二单元\" & louceng & \"0\" & fanghao & \"室煤气泄漏!\" Label4(louceng - 1).BackColor = &HFF& Case 2

Label5(louceng - 1).BackColor = &HFF&

Text1.Text = \"二单元\" & louceng & \"0\" & fanghao & \"室煤气泄漏!\" End Select End Sub

Private Sub caijishuju3() Select Case fanghao Case 1

Text1.Text = \"三单元\" & louceng & \"0\" & fanghao & \"室煤气泄漏!\" Label6(louceng - 1).BackColor = &HFF&

5

兰州交通大学博文学院毕业设计(论文)

Case 2

Label7(louceng - 1).BackColor = &HFF&

Text1.Text = \"三单元\" & louceng & \"0\" & fanghao & \"室煤气泄漏!\" End Select End Sub

Private Sub Timer1_Timer() Timer1.Enabled = False End Sub

Private Sub Timer2_Timer() If stateflag = 0 Then Select Case danyuanhao Case 1 'danyuanhao = 1 Call caijishuju1 Case 2 'danyuanhao = 2 Call caijishuju2 Case 3 'danyuanhao = 3 Call caijishuju3 End Select Else

If stateflag = 1 Then Select Case danyuanhao Case 1

If fanghao = 1 Then

Label2(louceng - 1).BackColor = &HFFFF& Else

Label3(louceng - 1).BackColor = &HFFFF& End If Case 2

If fanghao = 1 Then

Label4(louceng - 1).BackColor = &HFFFF& Else

6

兰州交通大学博文学院毕业设计(论文)

Label5(louceng - 1).BackColor = &HFFFF& End If Case 3

If fanghao = 1 Then

Label6(louceng - 1).BackColor = &HFFFF& Else

Label7(louceng - 1).BackColor = &HFFFF& End If End Select Else

If stateflag = 2 Then stateflag = 4

Timer3.Interval = 1000 Timer3.Enabled = True Select Case danyuanhao Case 1

If fanghao = 1 Then

Label2(louceng - 1).BackColor = &HFF00& Else

Label3(louceng - 1).BackColor = &HFF00& End If Case 2

If fanghao = 1 Then

Label4(louceng - 1).BackColor = &HFF00& Else

Label5(louceng - 1).BackColor = &HFF00& End If Case 3

If fanghao = 1 Then

Label6(louceng - 1).BackColor = &HFF00& Else

7

兰州交通大学博文学院毕业设计(论文)

Label7(louceng - 1).BackColor = &HFF00& End If End Select Else

Text1.Text = \"一切正常\" Exit Sub End If End If End If

Timer2.Enabled = False End Sub

Private Sub Timer3_Timer() Text1.Text = \"一切正常\" Timer3.Enabled = False End Sub

Private Sub Command2_Click() Dim dy As String Dim search_dy As String If Text1.Text <> \"\" Then

search_dy = \"select * from \" & \"UsersInformation\" & \" order by [UserName] ASC\" Data1.RecordSource = search_dy Data1.Refresh

search_dy = \"select * from \" & \"UsersInformation\" & \" WHERE[UserName]='\" & Text1.Text & \"'\"

Data1.RecordSource = search_dy Data1.Refresh

Text4(0).Text = Data1.Recordset.Fields(0) Text4(1).Text = Data1.Recordset.Fields(1) Text4(2).Text = Data1.Recordset.Fields(2) Text4(3).Text = Data1.Recordset.Fields(3) Text4(4).Text = Data1.Recordset.Fields(4)

8

兰州交通大学博文学院毕业设计(论文)

Text4(5).Text = Data1.Recordset.Fields(5) Text4(6).Text = Data1.Recordset.Fields(6) Else

Text1.Text = \"\" Text2.Text = \"\" Text3.Text = \"\" Text4(0).Text = \"\" Text4(1).Text = \"\" Text4(2).Text = \"\" Text4(3).Text = \"\" Text4(4).Text = \"\" Text4(5).Text = \"\" Text4(6).Text = \"\" Exit Sub End If End Sub

Private Sub Command1_Click() Dim dy As String Dim search_dy As String

If Combo1.Text <> \"\" And Combo2.Text <> \"\" And Combo3.Text <> \"\" Then search_dy = \"select * from \" & \"jilu\" & \" order by [报警日期] ASC\" Adodc1.RecordSource = search_dy Adodc1.Refresh

search_dy = \"select * from \" & \"jilu\" & \" WHERE[报警日期]='\" & Combo1.Text & \"-\" & Combo2.Text & \"-\" & Combo3.Text & \"'\" Adodc1.RecordSource = search_dy Adodc1.Refresh Else

Combo1.Text = \"\" Combo2.Text = \"\" Combo3.Text = \"\"

9

兰州交通大学博文学院毕业设计(论文)

Exit Sub End If End Sub

10

兰州交通大学博文学院毕业设计(论文)

附录2

Dim danyuanhao As Integer Dim louceng As Integer Dim fanghao As Integer Private Sub Command1_Click()

Randomize ' 对随机数生成器做初始化的动作。

danyuanhao = Int((3 * Rnd) + 1) ' 生成 1 到 3 之间的随机数值。 louceng = Int((5 * Rnd) + 1) ' 生成 1 到 5 之间的随机数值。 fanghao = Int((2 * Rnd) + 1) ' 生成 1 到 2 之间的随机数值。

Text1.Text = danyuanhao & \"单元\" & louceng & \"0\" & fanghao & \"室煤气泄漏!\" End Sub

Private Sub Command2_Click()

Dim chaxunyinda() As Byte '是通信时的查询应答信号 Dim outputbuffer As Variant '用于发送数据的缓冲区 ReDim chaxunyinda(6) As Byte chaxunyinda(0) = &HFE chaxunyinda(1) = &HEF

chaxunyinda(2) = \"&H\" + Hex(danyuanhao) chaxunyinda(3) = \"&H\" + Hex(fanghao) chaxunyinda(4) = \"&H\" + Hex(louceng) chaxunyinda(5) = &H0 chaxunyinda(6) = &HFF outputbuffer = chaxunyinda MSComm1.Output = outputbuffer Text1.Text = \"报警信息已发送\" End Sub

1

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务