基于ZigBee的串口监控软件设计与实现

2011-01-29 07:19王中生
电子设计工程 2011年14期
关键词:控件站台上位

王中生,曹 梅

(西安工业大学 计算机科学与工程学院,陕西 西安 710032)

随着城市的发展,车辆的增加,使人们出行越来越不便。如何能有效解决当前面临的交通拥堵问题是公交系统目前需要重点解决的任务。笔者设计的系统通过ZigBee模块来实现对车辆的定位,将车辆的现行信息传输回路由节点,通过串口通信与计算机相连,将数据显示在屏幕上使调度人员能够实时了解车辆行车信息,从而能够有效地对道路拥堵状况有所了解并进行及时的处理,对司机的行车情况及时了解。

1 ZigBee技术

ZigBee技术是一种短距离、低功耗的无线通信技术,采用IEEE802.15.4协议。其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。

2 串口通信

串口通信是工业监控系统中至关重要的环节,主要采用基于RS232的串口开发。目前在Windows下实现串口通信主要有3种方式[1]:1)利用 MSComm控件串口通信编程;2)利用win32 API函数来实现;3)利用CSerialPort类进行串口编程。本系统采用MSComm控件进行开发是因为它是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,通过串行端口发送和接收数据,VC为其提供了使用RS232进行数据通信的所有协议,并提供了标准的事件处理函数和过程,软件开发人员可以方便地通过属性和方法的设置进行串口通信。

3 系统结构设计

本系统由硬件系统与软件系统组成。下位机采用ZigBee模块进行数据的发送与接收,上位机采用VC++6.0开发软件。如图1所示。ZigBee模块将车辆信息、站台信息无线发送,避免了布线的麻烦。与其配套的上位机软件是一个拥有良好界面的数据监控和存储中心。下位机主要完成数据的采集与发送,上位机完成数据分析与存储。本系统将ZigBee模块安装到公交车上,通过ZigBee模块的无线通信功能将车辆信息与到站信息经由网关节点最终通过串口传送给上位机,由界面直观显示给调入人员。并将车辆ID、线路名固定地写入到ZigBee模块中,发送数据时就将这些信息发送给其他ZigBee模块;公交站牌上同样也安装ZigBee模块,当其接收到公交车辆上的节点模块发送的数据时,就将自己的站台号加入该模块的信息中并转发给其他站牌节点模块,判断该发送信息是公交车辆上节点模块发送还是站牌节点模块发送,如果是公交车辆节点模块发送的信息,判断站台号信息是否已经加入到该模块中,如果已经加入就将其转发给网关节点;如果未加入站台号信息,就将自身的站台号信息加入其中。如果是站牌节点模块发送的数据,就将其转发给网关节点,网关节点汇集信息后将其通过串口传输给上位机,上位机程序将信息进行解码后显示给调度人员。

图1 系统总体结构图Fig.1 Overall structure diagram of system

3.1 串行通信模块

主要进行数据的传输,对所收到的数据进行处理、分析、存储。这里,下位机单片机将车辆ID、线路名、站台号的十六进制码传输给计算机,上位机需将这些字码解码后展示给调度人员。

在进行串口数据传输时,必须制定通信协议[2]。通过对系统的分析,帧格式为无奇偶校验位,8位数据位,1位停止位,波特率为38 400 B/s帧格式如图2所示。

图2 系统帧格式Fig.2 Frame of system

3.2 数据接收模块

为实现下位机数据能够传输到上位机上,本程序采用MSComm控件进行软件开发,MSComm控件提供了多种属性,通过使用这些属性,能够方便地进行开发[3]。

数据接收模块流程图如图3所示。

1)打开串口。使用 PortOpen()函数;2)初始化串口,设置串口参数;3)建立串口通信事件。通信控件提供了2种处理串口通信的方法:查询法和事件驱使法。本系统中,采用事件驱使法实现,当发生通信事件或错误时,将触发OnComm事件。用户将在OnComm事件中添加代码,实现想要的功能。部分代码如下:

图3 数据接收模块流程图Fig.3 Flow chart of data receiver module

4)关闭串口。

3.3 数据处理模块

数据从下位机传过来后,需要进行分析、转换等操作,从而得到所需的数据[4]。将数据按照规定的帧格式传输,每帧包含3个数据,分别为车辆ID、线路名、站台号,以十六进制形式表示。ZigBee[7]终端节点储存的数据包含固定字节的车辆ID、线路名,而站台号初始设为00x,当安装在站牌上的ZigBee路由节点接收到数据后,判断站台号数据位是否为00x,如果是则认为该数据是由终端节点发送,在该位将自己的站台号加入后转发给其他节点;如果不是则认为该帧已经加入了其他站台号,转发数据即可。

上位机接收到数据后,分离出其中的数据位,将车辆ID、线路名、站台号依次取出其中的值,进行数据类型转换后保存到数据库中。数据处理模块的流程图如图4所示。

图4 数据处理模块流程图Fig.4 Flow chart of data processing module

3.4 数据显示模块

完成对数据的实时监控,将车辆到站信息直观地显示给调度人员,同时能够对车辆信息、线路信息进行管理。调度人员还能查询每天车辆的行进路线,从而对公交司机的考勤进行管理,如图5所示。

图5 系统主界面Fig.5 Main interface of system

3.5 数据保存模块

为了方便数据的查询,采用access数据库作为存储数据的工具。VC提供了多种方法连接数据库,这里采用ADO连接方法[5]。ADO(ActiveX Data Objects)是一个用于存取数据源的COM组件,它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的。本系统采用ADO类连接数据库,具体方法如下:

1)建立数据库 在access里创建数据库Bus.mdb,分别建立 4张表:BusT、LineT、GetDataT、TS。BusT 表中字段如下:ID(车辆 ID)、Name(线路名)、Stnum(站台数)。LineT 表中字段如下:lname(线路名)、sID(站台号)、sname(站台名)。GetDataT表中字段如下:bID(车辆 ID)、bNO(线路名)、LID(站台名)、Ctime(车辆到达时间)、TS(趟数)。

2)添加对ADO数据库的支持 在文件stdafx.h中添加#import"c:program filescommon filessystemadomsado15.dll"no_namespace rename("EOF","adoEOF"),实现 ADO 类的导入[6]。在数据处理函数中OnOnCommMscomm()完成对接收到的数据及接收到的时间存入数据库的操作,在储存数据时,通过对信息的过滤,将发送多条相同的信息只取出第一条,其余信息过滤掉。将公交车从起点到终点定位一趟,计算公交车当日一共跑了几趟,从而对公交司机进行考核。部分代码如下:

4 结束语

本系统能够及时地将车辆信息与道路信息显示给调度人员,从而对行车状况进行及时的掌握与调控。经过调试,该系统能够将数据稳定地传输到上位机,方便进行监控,其数据库管理也具有良好的操作。根据相关显示的信息,调度人员能够对车辆进行及时调控与调度,具有一定的应用价值。

[1]龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践[M].北京:电子工业出版社,2004.

[2]谢维成,杨加国.单片机原理与应用及C51程序设计[M].2版.北京:清华大学出版社,2009.

[3]金卫民.VC下利用串口进行数据通讯的研究[J].计算机工程与设计,2003,24(12):120-122.JIN Wei-ming.Research of data communication by using RS232 in VC[J].Computer Engineering and Design,2003,24(12):120-122.

[4]李现勇.Visual C++串口通信技术与工程实践[M].北京:人民邮电出版社,2002.

[5]王莉,阳春华.基于VC++的串口通信设计及其应用[J].控制工程,2004,11(S1):89-92.WANG Li,YANG Chun-hua.Design of serial communication based on C++and its application[J].Control Engineering of China,2004,11(S1):89-92.

[6]宋坤,刘锐宁,李伟明.VC++开发技术大全[M].北京:人民邮电出版社,2007.

[7]陈孟元,凌有铸,王冠凌,等.基于ZigBee技术的广播电视授时无线网络系统设计[J].工业仪表与自动化装置 ,2010(1):18-20.CHEN Meng-yuan,LING You-zhu,WANG Gua-nling,et al.Design on broadcast television time wireless network system based on ZigBee technology[J].Industrial Instrumentation&Automation,2010(1):18-20.

猜你喜欢
控件站台上位
为黑恶势力站台撑腰的县委常委
人生的站台
新型有机玻璃在站台门的应用及有限元分析
关于.net控件数组的探讨
特斯拉 风云之老阿姨上位
八号站台的那只狗
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
以新思路促推现代农业上位
ASP.NET服务器端验证控件的使用