吴高明 周 健 康凤梅 王土央
(1.桂林电子科技大学电子工程及自动化学院 广西 桂林 541004;2.桂林电子科技大学教学实践部 广西 桂林 541004)
管理软件的主要功能是:通过RS232串行口接收汇聚节点收集到的停车场车位状态数据;根据这些数据以图形的方式显示车位的占用情况,并显示汽车进入和离开的时间,通过设置收费单价可以计算并显示每个车位的收费情况;软件还能显示每个车位当天的使用情况,也可以查询车位的历史数据信息。本软件界面简洁明了,管理者可以很直观的知道每个车位的具体使用信息。同时还设置了一个状态数据显示框,管理者能够通过这些数据准确地对汇聚节点发送来的状态数据进行解读和分析,如:无线探测节点是否工作,剩余的电量;路由节点覆盖了多少探测节点等。本软件主程序流程图如图1所示。
图1 主程序流程图
本软件系统使用RS232串口和汇聚节点进行通信。串口参数最重要的是波特率、数据位、停止位还有校验位,进行通信的端口必须要匹配这些重要参数。波特率是一个衡量通信速度的参数,表示每秒钟传送多少位数据。数据位是衡量通信中数据位的个数。停止位表示单个周期的最后一位,通常为1,1.5和2。校验位表示通信中的检错方式,在上位机与单片机中一般不进行校验。软件初始设置时,为了匹配汇聚节点的串口通信设置,把串口的参数初始化为:波特率57600,数据位8位,停止位1位,校验位无。
编程工具使用Visual C++6.0。为了实时查看串口接收到的数据,创建了一个接收数据编辑框。添加5个组合框,分别用来选择串口号、波特率、数据位、停止位、校验位等参数。在表示串口号组合框的属性栏下面的 “数据”选项卡中填入COM1、COM2、COM3、COM4 用来初始化串口号;在表示波特率的组合框属性栏下的 “数据”选项卡输入4800、9600、19200、57600、115200、843200,用来初始化串口的波特率,软件设计的默认波特率是57600;在表示数据位的组合框属性栏下的“数据”选项卡输入以下数据:8、7、6、5,软件默认的是8位数据位;在表示停止位的组合框属性栏下的“数据”选项卡输入以下数据:1、1.5、2,软件默认的是1位停止位;在表示校验位的组合框属性栏下的 “数据”选项卡输入以下数据:None、Odd、Even,软件默认的是没有校验位。最后在每个组合框的“样式”选项卡中的“类型”选择“下拉列表”,这样用户就不能主动输入数据,只能从给定的选项中选择,可以有效防止由于用户输入非法数据而引起的异常。以上组合框的功能是完成串口参数的选择,要使这些参数生效必须设置一个“打开串口”的按键,相应的设置一个“关闭串口”的按键来中断串口通信。
软件的主界面如图2所示,左边显示车位的使用情况,包括车位开始占用的时间、开始计费时间、离开时间;中间显示每个车位的计费信息,以及车位的使用情况等;右边主要是串口通信的设置。该软件主要是通过计算机串口接收汇聚节点上传的数据,并进行数据处理分析。具体的工作流程是:先进行串口参数设置,选择计算机与汇聚节点相连的串口,再选择“波特率”、“数据位”、“停止位”、“校验位”等信息与汇聚节点的串口设置相同,即波特率115200,数据位8位,停止位1位,校验位无。这在初始化的时候已经默认配置好,所以一般情况下都无需更改。点击“打开串口”按键,如果串口号存在并且没有其他程序占用该串口,串口可以成功被打开。软件所要做的就是等待汇聚节点通过串口把数据传送过来。串口数据包的格式是以$开头,第二个数字表示停车位N(这里代表是第几个停车位),第三个是分隔符@,第四个代表车位被占用否(0:表示未占用,1:表示已占用)。比如,$1@0代表停车位1是空的,同时把显示区的相应图标改成 “空”;$5@1表示停车位5已经有车了,同时把显示区的车位图标换成车,这样看起来就比较形象,能够让管理者一目了然。当不想继续接收数据,则可以点击“关闭串口”,释放串口资源。在“数据接收区”里能够实时显示下位机传回来的数据和状态,以便错误分析和观察。
图2 软件主界面
要初始化串口的默认值,可以在CDlg类下的OnInitDialog()函数下添加初始化语句:
m_ctrlCommN.SetCurSel(3);
m_ctrlBaudRate.SetCurSel(4);
m_ctrlDataBit.SetCurSel(0);
m_ctrlStopBit.SetCurSel(0);
m_ctrlCrcBit.SetCurSel(0);
为“打开串口”这个按钮添加一个消息响应函数OnButtonOpencomm(),用来响应打开串口时的一些设置。为“关闭串口”这个按钮添加一个消息响应函数OnButtonClosecomm(),用来响应关闭串口的配置。为CMSComm这个类所对应的空间添加一个消息响应函数OnComm(),这个函数专门处理串口数据到达时的一些处理,其中包括数据转换和车位图片变换。
为保证汇聚节点能通过串口与软件进行通信,需要把汇聚节点的Atmega128L单片机的串口设置为波特率57600,数据位8位,停止位1位,无校验位。初始化完成后,就可以把要发送的数据赋值给UDR寄存器,这样就能通过串口把需要发送的8位数据传送到终端服务器了。
本停车场管理软件系统设置了车子开始占用开始时间,离开时间,还有计费时间等计费选项,管理员可以根据需要改变计费单价,在管理软件上可以实时显示每个车位应付费总额。还设置了车位停车总数,用来统计某天或者某几天车辆在该停车场停车数量。在软件界面的右方还设计了用于设置一些参数调整的功能选项,比如说传感器检测的频率,频率越高检测时间越准确,但是整个检测系统的功耗也随之加大;还有节点和车位的对应关系,通常每个传感器都有唯一的标识,此标识与车位一一对应,但是遇到特殊情况的时候,可能需要相应调整,则可以用该功能模块进行修改。本软件界面简洁明了,使用简单方便,采用图形化的方式实时显示停车场各个车位的使用情况,实现了较好的效果。
[1]龚建伟,熊光明.Visual C++/Turbo C 串口通信编程实践[M].北京:电子工业出版社,2007,9.
[2]沈建良,等.ATmega128 单片机入门与提高[M].北京:北京航空航天大学出版社,2009.
[3]周韧研,商斌.Visual C++串口通信开发入门与编程实践[M].北京:电子工业出版社,2009.
[4]王公仆,王文成.计算机与单片机的串口通讯程序设计[J].轻工机械,2007,25.
[5]王军政,汤金元.基于PC与Atmega128单片机的室内服务机器人控制系统设计[J].机床与液压,2010,38(20).