基于PyQt5的动态交通标志牌管理软件的设计与实现

2020-02-04 02:03滕广华
电子技术与软件工程 2020年20期
关键词:标志牌管理软件串口

滕广华

(山东奥邦交通设施工程有限公司 山东省济南市 250000)

1 背景

随着交通强国战略的实施,我国高速公路里程不断增加,人们对高速公路道路及交通安全设施的要求也在不断提高。传统的道路标志牌大多为静态的固定印刷标志,仅能显示两地间距离等少量信息,无法高质量地提供交通出行服务,而近年来出现的动态交通标志牌则提供了更多交通信息,该动态交通标志牌设置在高速公路主线合流点之后,通过路段交通流检测设备数据与第三方互联网公司路况数据的融合,用于显示实时交通流下的预估旅行时间信息。标志由静态标志和 LED 显示模块两部分组成。

高速公路网所在环境具有封闭性,设备物理分布范围广,后期维护难度大等特点,给标志牌设备的安装调试和维护管理带来了挑战。本文针对以上特点,结合该管理软件的基本需求,基于目前热度比较大的Python语言和Qt 界面框架,设计并开发完成了一款动态交通标志牌设备管理软件。

2 关键技术

2.1 PyQt5

Qt 是一组C ++库和开发工具,包括用于图形用户界面,网络,多线程,正则表达式,SQL 数据库,SVG,OpenGL,XML,用户和应用程序设置,定位和位置服务,短距离通信( NFC 和蓝牙),网页浏览,3D 动画,图表,3D 数据可视化以及与应用商店的接口。PyQt5 是来自Qt 公司的一组结合Python 环境和Qt 应用程序框架的开发库集合,将Qt 类中的1000 多个组件实现为一组Python 模块,支持以Python 的方式开发Qt 应用程序。不仅如此,PyQt 还支持诸如Windows,Linux,UNIX,Android,macOS 和iOS 等多个平台,开发快捷友好,应用前景广泛。

2.2 QR code

QR code 是一种矩阵式二维条码(又称棋盘式二维条码)。它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制”1”,点的不出现表示二进制的”0”,点的排列组合确定了矩阵式二维条码所代表的意义。[1]

图1:动态交通标志牌管理软件总体功能框图

图2:软件注册流程

3 软件需求分析

3.1 软件功能分析

软件在功能上主要包括软件注册模块、串口通信模块、网络通信模块、设备管理模块等四部分。软件整体功能框图见图1所示。

软件注册模块:该模块主要包括软件验证和软件注册等功能,在软件正式运行前进行软件注册状态的验证,验证通过则进入主界面,否则进入软件注册界面,引导用户获取注册码并进行软件注册。考虑高速公路网封闭性的特点,软件将在非互联网环境下运行。

图3:串口通信流程

图4:网络通信流程

串口通信模块:该模块主要包括本地串口检测、串口参数配置、串口开启与关闭、串口数据发送与接收等功能,可通过连接设备的485 串口和设备进行通信。

网络通信模块:该模块实现了一个TCP 服务器,负责通过网络和设备进行远程通信。主要包括本地IP 地址绑定和端口监听、TCP 客户端维护、TCP 数据收发等功能。

设备管理模块:该模块是设备管理软件的主要功能模块,基于以上基础功能模块,该模块实现的功能主要包括设备搜索、设备地址修改、设备信息获取、设备内容及亮度设置、设备重启、设备升级等,可选择通过串口直接收发数据,或者通过网络进行串口数据的负载传输。

表1:获取设备型号协议命令及说明

3.2 非功能需求

(1)可靠性需求:对程序中可能出现错误的代码段使用trycatch 异常捕获机制,避免抛出错误导致系统退出;软件不应出现崩溃等问题。

(2)安全性需求:软件初次使用前需要注册码进行注册,将软件与所在运行环境的硬件绑定,软件再次运行时要校验是否注册,未注册软件不能运行;用户密码采用单向加密算法(包括但不限于MD5,SHA-1,SHA-256)加密,不存储明文密码;传输的数据都采用高强度的加密算法加密(DES),使得数据即使泄漏、被截获后,也无法识别相关的数据内容,确保数据安全;软件中使用到的关键数据如密钥,特征码等信息禁止在代码中硬编码,软件从密钥文件中读取,密钥文件对用户不可见,密钥文件混淆加密存储。

(3)物理需求:采用2 台服务器,实现冗余备份处理和内部业务的负载平衡。性能指标要求是:主频2GHz 以上,内存4G 以上或采用更高档的专业服务器,硬盘1TB 以上。

(4)实施需求:服务器运行平台操作系统使用Windows Server2016,使用Viso 作为建模和分析工具,制图工具采用ProcessOn,使用PyCharm+Qt Designer 作为软件开发工具。

(5)易用性需求:关于易用性方面我们从以下几个方面进行分析并确定初步方案 :

数据的接收和发送窗口实时显示当前收发的数据,并可以选择显示模式为字符串编码显示或16 进制HEX 码显示;数据发送时可选择自动添加CRC 校验码,省去手动计算的繁琐;可创建自动定时发送任务,发送频率可选,以满足数据定时发送的场景需求;系统具有在线帮助说明,能帮助用户学习系统的使用;用户操作过程中的任何系统提示都采用简体中文字体进行提示,方便用户理解。对于任何的系统性的错误,在录入过程中出现的错误,错误提示后返回原录入焦点。

4 软件设计与实现

4.1 软件注册模块

软件开始运行时,首先检查是否已经注册,具体流程为:获取软件运行环境(服务器)的硬盘号及C 盘序列号作为机器码MC;查看本地的注册文件并根据注册文件获取内容RC;对RC 进行DES 解密,得到待验证的机器码MC’;比较MC’和MC 的一致性,得出软件是否已注册的结论,若软件已注册,则显示软件主界面,否则进入软件注册界面。在软件注册界面,组合得到软件注册服务请求URL:http://serverip/register.do?code=MC,调用python 的qrcode 模块将该URL 进行编码为二维码并保存为图片显示在注册界面的Label 上,用户使用手机扫描二维码,向服务器请求注册服务,服务器收到请求后对MC 进行DES 加密并将加密字符串返回,用户输入注册码进行软件注册,软件对注册码进行DES 解密得到待验证的机器码MC’,比较MC’和MC 的一致性,若两者一致则表示注册成功,将注册码写入到注册文件后随即退出注册界面并显示软件主界面,软件注册流程完成。若有中间过程不符合预期结果,则软件重复显示注册窗口或直接退出。软件注册流程参照图2。

4.2 串口通信模块

串口通信模块提供了软件和设备间通过串口方式进行数据交换的能力,首先检测本地机器串口并选择,根据用户配置的串口波特率,数据位,停止位,奇偶校验等参数配置并开启串口,然后定时循环读取设备发往本机串口的数据。串口通信流程见图3。

4.3 网络通信模块

该模块在本地机器上实现TCP Server 服务器,具体来说,首先创建一个socket,用户选择绑定的本地IP 地址和端口Port,之后TCP Server 在该端口进行Listen 监听,当有客户端连接成功后,Server 端调用accept()得到客户端的socket,将该客户端连接信息加入到维护列表,并创建一个新线程维护该客户端会话,进行和该客户端间的数据收发。网络通信模块见图4。

4.4 设备管理模块

作为该管理软件的核心功能模块,该部分主要包括设备搜索,设备地址修改,设备信息获取,设备内容及亮度设置,设备重启,设备升级等相关功能,根据协议进行命令数据的组合,并将命令通过串口或网络发送至设备端,从而实现设备的控制与管理。

设备使用标准MODBUS 通讯协议,使用 RTU 模式。串口波特率为115200,8 位数据位,1 位停止位,无奇偶校验位,无流控;消息帧发送至少要以 3.5 个字符时间的停顿间隔开始,即在传输完每帧的最后一个字节,至少需要 3.5 个字符时间的停顿来标定消息帧的结束。下一个新的消息帧可在此停顿后开始,整个消息帧必须作为一连续的流传输。

本设备主要操作指令说明如表1(以获取设备型号命令为例)。

5 总结

动态交通标志牌设备管理软件是专为高速公路沿线动态标志牌设备安装调试和后期管理维护而开发的一款软件,该软件具有使用方便、管理高效等特点,特别适合在网络环境封闭、设备物理分布广泛的环境下使用;另外本软件基于PyQt5 开发,它结合了Python语言的简单高效和Qt Designer 动态布局所见即所得的界面开发方式,大大提高了软件开发效率,增强了软件的可靠性和可修改性。

猜你喜欢
标志牌管理软件串口
好莱坞标志牌将“黑着”庆生
仓储管理软件在物流自动化解决方案中的应用与发展
高速公路标志牌养护维修技术要点研究
浅谈AB PLC串口跟RFID传感器的通讯应用
项目法在工程造价管理软件中的应用
你能看明白吗
共享电单车的管理软件
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
基于并行控制的FPGA多串口拓展实现