APP下载

基于PyQt的实验室开放管理系统客户端的设计与实现

2022-09-01

通信电源技术 2022年9期
关键词:数据类型服务器端串口

于 倩

(中国电子科技集团公司第五十四研究所,河北 石家庄 050000)

0 引 言

随着网络信息技术蓬勃发展,其使用范围越来越广泛,通过以互联网信息技术为主导的综合信息管理平台对实验室的各种信息实施集中管理的技术手段已经成为一种主要的解决的渠道。实验室是学校推行素质教育、实施“重视实践、激励创新能力”教学模式的主要基地。由于实验室面对中小学生对外开放,可以最大限度使用教师教学的实验资料,拓宽中小学生的认识面,培养中小学生的创新能力和自主动手意识,因此实验室对外开放是学校进一步提高教学质量的主要内容之一[1-6]。实验室的开放管理是促进试验室对外开放、提升对外开放效益与水平的关键技术手段。科研人员开展了实验室开放管理,但各个学校开放管理都不尽相同,很多院校都设计或研发了自己的实验室开放管理,并和其他的体系加以融合。

1 高校实验室管理难点

1.1 大学试验室种类多,试验室仪器设备多

为给研究生创造充分的实验时间,大学通常设有大量的实验室,同时各个实验室都能配备足够多的实验器材。以南京大学软件研究所为例,一个研究室通常有40~50个设备给本科生使用,而这样的实验室大约有几十个。但是如果缺乏对实验室开放管理的技术支持,将需要巨大的人工力量来控制实验室的开放管理以及对仪器的维修,而且人工控制的错误风险也将大大超过计算机软件控制。

1.2 高校实验室使用人员身份信息复杂

对于研究机构或公司,其实验室通常是关闭的,可供研究组织的内部人员使用,并且使用的人员在一定时期内相对稳定。然而,大学实验室的不同之处在于,公共实验室通常向全校师生开放,人数众多,而且工作人员的身份也是随机的。由于身份不同,因此不同的实验室工作人员使用实验室的方式也不同。学生进入该系的研习班不收费,但教师进入其他学科的研习班必须收费。如果缺乏实验室开放管理制度,就无法识别实验人员的身份,无法了解实验人员所使用实验设施的情况,可能会影响到实验室的正常使用。

1.3 高校实验室对外开放时间各不相同

科研单位和专业的科研机构一般有规定的办公时间。大学实验室的开放时间通常都比较复杂,一般本科生与硕士使用的实验室开放时间不同,而一些单次实验持续时间比较长的实验室开放时间也与其他研究所不同。

2 服务器端概述

实验室的系统分为服务器端和客户端两个部门,系统全部数据处理都存放在客户端,同时由客户端承担全部的处理。系统服务器端管理与终端用户的通信,包括提供从服务器端获取的信息和修改内容。系统客户端与服务器端之间使用自定义的协议集实现通信。

客户端必须承担对全部信息的保存和管理,并且只有客户端才能进行更新信息。

Spring能够用来控制业务对象,因为利用Spring所提出的控制反转(Inversion Of Control,IOC)容器,能够直接把目标间的依赖性问题交由Spring加以控制,从而减少了硬解码所导致的过程耦合。由于利用Spring,开发者能够不用再为单例模型类、属性文件分析等很基础的要求撰写程序,从而能够更加注重于上层应用研究。Spring并不排斥所有优秀的公开源代码框架,能够减少所有框架的应用难度。Spring实现了对所有优秀架构的直接支援,并且能够和MINA与Hibernate良好的协调运作。Hibernate实现了数据的持久化服务,采用Hibernate,开发人员在运用数据库系统时只要求操作面向对象,而放弃了数据库系统中心的思想,并引入了完整的面向对象思想。

服务器端过程如图1所示,以卡片扫描功能为例进行详细说明。首先,服务器端发送卡片扫描消息。服务器端收到消息后,MINA对消息进行编码,并分析消息表单和包含的信息。此传入信息是卡号,然后由先前注册的消息处理功能处理消息。在消息处理模式下,可以使用Spring对象池中的适当对象算法编辑卡号,以进行Intranet分析和翻译。此时,对象必须读取惯性数据库中的信息,以确定卡号是否显示在数据库中、是否报告为丢失。如果操作方面没有足够的信息,将返回对象弹簧箱中的数据,并返回相应的结果,在根据计算结果对数据进行编码的同时进行挖掘,并将数据返回给客户。

图1 服务器端处理过程示意

3 系统客户端的实现

3.1 硬件控制层的实现

3.1.1 网络功能实现

网络功能主要依赖于PyQt IV的QtNetwork模块,该模块为开发人员所建立的可移植性应用程式提供了许多类。该模块既给出了Qhttp和Qftp等类型来实现更通用的应用层协议定义;又提供了QtcpSocket、QtcpServer、QudpSocket等类型,实现更底层的应用定义;还包括了QNetworkRequest、QnetworkReply和qnetwork Access Manager,为更高级别的应用编程操作而提供,可以同时支援各种协议。

在实际开发中,主要使用本模块中的Qtcp Socket类。网络模块中维护了QtcpSocket类的一个示例,用于网络操作。

3.1.2 串口功能实现

串口模块主要用来控制PLT-485模块,而PLT-485模块则通过电力线载波控制,完成了对实验仪器供电的管理。主机使用串口对PLT-485控制器发送操作命令的读取工作。

PySerial封装了串口的操作,并可以根据本地平台类型(Windows、Linux、BSD、Jython或IronPython)选择后端串口应用程序界面(Application Program Interface,API)。

当向串口写入信息后,先确定串口能否开启,若不能开机则启动串口,并在写入信息过程中捕捉异常值,如写入错误则返回-1。最终不管写入成功还是错误,在所有输出结束后都必须关掉串口。

3.2 服务层的实现

3.2.1 数据帧编解码实现

数据帧是计算机与PLT-485系统实现交流的基础数据类型,通过数据帧格式,可以确定出数据帧数据结构。在编码过程中首先按照对数据帧实例中各个属性的设定,分别在数据帧字节上填写对应数据,然后再进行校验和比较,并返回已经编码好的数据字符串。解码流程也与此相似,只是流程方向相反。

3.2.2 消息编解码实现

消息的具体解码型后,再根据消息类型分为2种方法,首先使用MessageHandler类分析出了消息的具体类型,其次再使用更具体的消息编码函数,最后采用Python语言中的Struct模型完成了消息解码运算。Struct模型还可以作为Python字符串与原始二进制文件互相转化。在Struct模型中,既通过格式字符串说明了转换规则,也通过格式化字符串描述了在转换时的文本字段的位置与内容排布。

当解码过程开始时,若消息长度低于8Byte,则表示消息不完全。如果消息类型未注册,则无法解密。如果消息格式正确,首先分析消息数据的数据类型,然后通过Struct的解包功能完成从原始二进制信息到Python数据类型的转换。消息格式字符串通常为“LIS”,第一个“L”表示模块使用网络字节顺序执行转换过程。“LIS”是指排列在消息数据块中的2个整数字符串,它们最初是二进制信息。处理程序是一个信息字典。键是描述消息类型的整数,该值表示为消息数据类型的示例。在分析消息数据类型之后,根据特定消息数据类型的对应实例进一步说明文件。

3.3 用户界面层的实现

用户界面维护包含用户界面的创建和控件的管理。

卡有关的功能或与硬件有关的功能,都必须封装在硬件层。但是,目前使用的磁卡系统的开发人员并不能实现这些设置。由于磁卡读卡器利用USB端口可以直接连到电脑,而读卡器在读取卡片信息时会透过键盘事件的方式把卡号传送至应用程序,因此就等于使用者可以透过鼠标直接输入卡号,卡的功能在逻辑上并没有完全和用户功能分离。

3.4 数据库设计

在对比了目前主要的数据库管理系统以后,考虑选用MySQL,其特点如下。

(1)MySQL是开放式源代码数据库系统,具备很好的可移植功能,并在各个编译平台通过了稳定能力试验;

(2)MySQL可以充分运用CPU资源,运用多线程编程,支撑多用户、多任务。

(3)MySQL通过如Java数据库连接(Java Database Connectioity,JDBC)、开放数据库连接(Open Datebase Connectivity,ODBC)或者TCP/IP等多种形式完成数据库系统网站链接,便于程式设计。

(4)MySQL有Navicat等相似的绘图工具,便于使用者对数据库信息系统管理、优化、信息检索等应用。

(5) MySQL为各种主流编程语言,如C、C++、Ruby、Java和Python等,开通了API端口,便于程序设计。

(6) MySQL软件系统小巧、特性强大、安装方便,可以同步管理上千万条实时记录。

(7) MySQL支援 Linux、Mac OS、Windows等各种操作系统,并最终选定了 MySQL作为实验室管理系统的主要数据库系统。

4 结 论

综上所述,本文的分析主要利用了实验室开放系统的优点。但经过对比当时市场上已有的实验室开源操作系统,操作系统必须具备高功能、可扩展性和通信稳定性。系统使用Python编程语言开发,并采用了PyQt作为图形用户界面架构,以便于进行拓展功能。而电源管理使用了电力线载波控制,既不需要另外的控制线,还可以直接和现有的供电线路系统集成,以减少部署成本。

猜你喜欢

数据类型服务器端串口
Linux环境下基于Socket的数据传输软件设计
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
MCS—51单片机中的多串口通讯技术的应用
基于SeisBase模型的地震勘探成果数据管理系统设计
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
线上众筹产品的特征分析与研究
相似度计算及其在数据挖掘中的应用
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用