APP下载

图书馆在馆人数显示部分软件设计与实现

2009-09-29刘庆武付美艳王黎明

新媒体研究 2009年14期

刘庆武 付美艳 王黎明

[摘要]图书馆在馆人数检测与显示系统为图书馆管理员实时掌握图书馆的在馆人数提供了有力地支持。它主要有信号检测与信息显示两大模块组成。从系统结构、人机界面、技术难点及性能改善四个方面介绍其显示部分软件部分的设计与实现。

[关键词]PLC通讯 系统服务 进程通讯 LED控件 多线程

中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2009)0720058-01

一、引言

图书馆人数检测与显示系统主要由信号检测、信息显示两大模块组成。信号检测模块主要由光电传感器检测信号并传输给PLC,PLC完成进出人数的计数,并通过RS232接口传输给计算机;显示模块主要由计算机读取PLC的进出人数,并使用7段数码管控件在计算机屏幕上输出显示。本文从系统结构、人机界面的设计、技术难点及性能改善四个方面总结系统显示部分软件的设计与实现。

二、系统结构

显示部分主要功能包括:保持与PLC的通讯并读取PLC中的进出人数、计算当前在馆人数、显示在馆人数三部分功能。由于计算当前在馆人数操作较为简单,软件部分采用两层体系结构:通信层和显示层。

通讯层采用Windows系统服务的实现方式,通讯服务开机自启动,无需用户干预,保持与PLC的实时通讯。通过发送命令字的方式取得进出人数,分别将进出人数写入共享内存,如此往复,直到服务程序终止运行为止。

显示层采用窗口程序方式,它主要功能是计算在馆人数,并使用自主开发的七段数码管控件在屏幕上显示输出,同时包含了对通讯服务程序的启动和关闭功能。程序执行流程如下如所示:

采用两层的系统结构,一方面可以降低层次之间的耦合便于系统的维护和升级;另一方面有利于分工合作,从而提高开发效率。

三、人机界面及性能改善

应用程序能否得到用户的满意,操作方便、界面友好的人机界面是一个不容忽视的重要因素。本系统主要采用系统托盘、右键菜单以及自主开发七段数码管的方式,尽可能减少用户的操作的步骤,方便用户的日常使用。

1.托盘程序。越来越多的程序都做成托盘程序,这类程序具有不占屏幕,后台运行,便于控制等优点。当显示窗口程序关闭时,程序以图标的方式放到系统托盘中,并未真正关闭。这样用户将不用每次打开程序都要寻找程序的位置,而且也避免不小心将程序关闭。

2.右键菜单。使用.NET提供的ServiceController类,实现对通讯服务程序的启动、关闭等控制功能,并以右键菜单的方式集成到显示程序的窗口中。

3.LED显示。七段数码管在工业控制中有着十分广泛的应用,具有显示醒目、直观等优点。使用自主开发LED控件不仅会解决系统的移植性问题,而且也为系统以后的维护变更带来了方便。

4.多线程。为提高系统的实时性,减少系统资源的浪费,可将SerialPort的类的对象添加到了一个线程中,服务启动时开启这个线程,这样不影响主线程的运转。在显示程序中,显示控件的频繁刷新也有可能影响显示效果,所以将其也写到一个线程中,以防止影响显示窗口出现瞬间刷新速度跟不上而出现拖影的现象。

四、技术难点

系统的开发环境为.NET Framework,使用的开发语言是C#程序设计语言,开发工具为Microsoft Visual Studio2005。在程序实现过程中系统主要的技术难点有:一是在通讯服务程序中实现上位机与PLC的通信;二是通讯服务程序与显示程序通过共享内存的方式实现进程间的通信。

1.通讯服务程序。PLC与计算机以“帧”为单位进行通信。计算机通过RS232串行通讯端口向PLC发命令帧,PLC收到后解析命令,若是请求进人数命令,则将进人数包装成响应帧通过端口再返回给计算机,若是请求出人数命令,则将出人数包装成响应帧返回给计算机。计算机在接到响应帧后,从中提取出人数。

2.进程通讯。在Windows中提供了多种使应用程序能够迅速而方便地共享数据和信息的机制,包括窗口消息、邮箱、管道和共享内存等等。在本系统中主要使用共享内存的方式实现进程通信。

内存由操作系统管理,操作系统已将其以动态链接库的方式给用户程序调用。具体实现中主要用到方法CreateFileMapping,MapViewOfFile,OpenFileMapping等,它们的具体用法请参照MSDN。

五、总结

通过实际的测试运行良好,方便了工作人员实时掌握图书馆在馆人数。但是系统仍有一些不足之处,比如:在进出频繁的时候,加载背景图片后占用CPU资源较多,这有待进一步完善。该系统完全可以运用在其他需要人数检测的场所,如超市、医院等。如对信号检测端进行改造的话,可用于对汽车等物体的检测。