张波
摘要:本文主要讨论了多媒体教室远程管理系统的软件设计部分。下位机软件模块包括主程序、射频读卡子程序和网络通信子程序,网络通信子程序模块重点阐述了TCP协议驱动层的基本方法和TCP连接建立的三次握手过程;上位机软件模块主要是监控主程序,重点阐述消息包的处理过程;数据接口通过一卡通和教务的web服务接口完成数据同步。最后,总结了系统的设计意义。
Abstract: This article mainly discusses the software design of multimedia classroom remote management system. The software cludes lower machine contains main program, RFID subroutine and network communications subroutine. The network communications subroutine focuses on basic methods of TCP protocol driver layer and the process of TCP's three handshake; the main software of upper monitor is monitor master program. The article particularly explains processing procedure of the message packets; the data interfaces complete data synchronization through the web services provided by campus card system and educational administration system. Finally, the article concludes the system's design significance.
关键词:多媒体教室;上位机;下位机;TCP协议;Web服务
Key words: multimedia classroom;upper monitor;lower machine;TCP protocol;Web services
中图分类号:G434 文献标识码:A 文章编号:1006-4311(2016)05-0195-03
0 引言
随着多媒体教学的日益普及,各个学校的多媒体教室数量在迅速增长。在现有管理人员不变的情况下,如何更加高效的管理多媒体教学设备成为学校迫切需要解决的问题。本论文从技术的角度给出一种远程监控管理多媒体教室设备的方案。
系统硬件是基于Silabs公司的C8051F020单片机进行开发的,外围电路主要分为四个模块:设备控制模块、射频读卡模块、网络通信模块和时钟发生模块。射频读卡模块采用Philips公司的MFRC522射频读卡芯片,网络通信模块采用Silabs公司的CP2200以太网控制器。硬件接线图在这里不是重点,本文主要讨论系统上位机和下位机软件设计部分。
1 下位机软件设计
1.1 系统主程序设计
系统主程序如图1所示。C8051F020单片机(以下简称下位机)在没有通电的情况下,服务器(以下简称上位机)组态软件显示中控为离线状态。当下位机上电复位完成初始化以后,网络模块会以TCP协议自动连接上位机端口,上位机组态软件显示中控为在线状态。在线状态下,下位机会循环判断是否有IC卡在识别区,如果读得卡号则推送给上位机进行验证,如果上位机一直没有回应(超过3秒)则通过查询本地flash存储进行验证。下位机会一直监听上位机的控制指令并完成对周边多媒体设备的控制。下位机每15秒种向上位机发送保持在线状态的心跳包,同时每1小时发送一次下位机flash存储数据表更新的请求包以尽量保持和一卡通账号数据及教务课表数据一致。下位机根据设备控制模块键盘电路的中断请求,读取键值并执行。
1.2 射频读卡子程序设计
射频读卡子程序如图2所示。MFRC522初始化完成之后,通过寻卡-防冲撞-选卡三步循环读物理卡号,然后将读取的物理卡号提交至服务器进行身份验证。如果在3秒内收到服务器返回的通过验证命令,系统就直接打开电源输出,否则就认为是网络故障或离线状态,先从时钟芯片读取当前日期时间段,然后查询下位机本地flash存储进行工号验证。这样设计既保证网络在线的情况下教师能够完成刷卡身份验证,又保证了网络故障或离线的情况下教师同样可以正常使用多媒体设备。
1.3 网络通信子程序设计
网络通信模块软件主要包括模块初始化程序、CP2200驱动程序以及嵌入式TCP/IP协议栈三部分,其中CP2200驱动程序主要完成接收网络数据以及向网络发送数据的工作。由于嵌入式Internet系统软硬件资源有限并且通常功能需求较少,因此在构造嵌入式TCP/IP协议栈的时候可以对TCP/IP协议进行裁剪。本系统设计的嵌入式TCP/IP协议栈只选取了三项协议:ARP、IP和TCP,以下将重点阐述下位机的TCP模块。
TCP(传输控制协议)是建立在IP协议之上的运输层协议。由于加入端口(port)的功能,实现了传输通道的复用和分用功能。TCP数据报首部为20~60字节,是一种面向连接的,能提供可靠数据传输的服务。TCP协议功能主要由TCP初始化函数init_tcp()、TCP保活函数tcp_inactivity()、TCP发送函数tcp_send()、TCP接收函数tcp_rcve()和TCP重传函数tcp_retransmit()实现。
在和上位机建立tcp连接时,需要进行三次握手才能完成,如图3所示。第一次握手下位机发送请求包,之后下位机将收到上位机的应答兼请求包并回发应答包开始第二次握手,上位机收到下位机的应答包之后再回发应答包进行第三次握手,此后双方的tcp连接建立完成。在连接已经建立的状态下,下位机在收到一个tcp包时,先將对应连接对象的上位机请求号增加接收数据的长度,并且将下位机请求号和上位机应答号都置为tcp包应答号,然后再发应答包。上位机的应答号必须和下位机的请求号保持一致,如果应答号小于请求号则表明下位机没有收到上位机的应答包,下位机重发缓存的数据包,如果重发两次仍然是应答号小于请求号则直接关闭该连接。如果是应答号大于请求号则直接关闭该连接。重发的管理过程是通过tcp_retransmit()函数实现的。Tcp连接的关闭是通过四次挥手的过程完成的,如图四所示,这里就不赘述具体过程了。
本系统之所以选择tcp协议而不是网络开销相对较低的udp协议,主要是因为tcp协议能够很容易的跨越各种网关和防火墙进行通信并且稳定性和可靠性更好,如果考虑后期再加入远程系统维护功能模块则无疑选用tcp协议更加合适。至于增加的一点网络开销,在校园网网络设备端口和带宽向千兆位甚至更高位发展的今天,完全可以忽略掉了。
2 上位机软件设计
2.1 监控主程序的设计
监控主程序如图5所示,主窗口加载以后便创建用于服务端侦听的主socket、处理接入的子线程和管理子线程。其中处理接入的子线程负责客户端socket的接入处理,当有远端连接时,首先创建新的连接对象和新的连接socket,并进行关联,然后创建新的连接子线程并进行关联,最后将连接对象加入客户端集合对象中;管理子线程主要负责离线连接对象的清理、自动恢复和删除选中的客户端socket、读取后台数据库状态并更新树形列表和查询数据库显示当前教室状态。它首先循环遍历客户端集合对象结构中的每一个连接对象,然后将超时的对象剔除,超时的判断根据是连接对象的刷新时间与当前时间间隔超过20秒,剔除之前应关闭对应的远端socket和连接子线程并且更改其状态为离线,之后将后台数据库教室节点中控状态设置为离线。下面的读取后台数据库状态并更新树形列表就根据所遍历节点的ip地址查询数据库中中控的状态值,根据中控状态值,为0设置节点关闭,为1设置节点打开,为2设置离线并从客户端集合结构中剔除。最后一步,查询数据库显示当前教室状态,就是根据当前选择教室号从数据库中查询中控状态值、投影机状态值、主机状态值和投影灯泡时间,然后根据这些值去更新右侧下方的标签。这里需要注意的是为了避免子线程间使用同一数据连接对象对数据库操作发生意外冲突,建议每个子线程用不同的数据库连接对象操作数据库,单个方法过程的数据操作只需要打开关闭数据库一次即可,这样可以提升数据库读写效率。
监控程序处理各种类型的消息包是由单独启动一个连接子线程进行的,当收到有效数据包时首先记录时间戳,后面管理子线程会根据这个时间戳判断下位机是否离线。然后判断是否刷卡消息包,如果是则根据物理卡号查询一卡通表工号,再根据当前时间段查询教室课表工号,将这两个工号比较,如果相同则向下位机返回打开命令并更新后台教室状态数据表为打开,如果不同就不做操作直接返回;如果不是刷卡消息包就判断是否激活消息包,如果是激活消息并且是第一次激活则修改后台教室状态为关闭状态;如果既不是刷卡消息又不是激活消息则判断是否为响应消息包,如果是响应消息包则根据响应的操作修改后台教室状态数据表;如果以上都不是就判断是否为数据更新请求消息包,如果是则查询对应教室号的课表数据和一卡通数据然后发送给下位机。
2.2 数据接口的设计
系统数据接口包括一卡通接口和教务接口两部分。一卡通接口是调用一卡通的web service接口,从一卡通原始数据表抽取工号、卡号和姓名三个字段,然后经过数据格式转换存储到本地的数据表yikatong当中供使用;教务接口是调用教务系统的web service接口,从教务系统原始数据表抽取课程名称、教师姓名、上课时间(含周次和节次,分号间隔)、上课地点(和上课时间对应,分号间隔)四个字段,然后经过格式转换存儲到本地的数据表jiaowu中供使用。
数据接口处理当中的难点在于数据结构和格式的转换。例如原始一卡通表中的卡号为十进制的字符串类型varchar(10),可变长度,最长为10,而系统需要的是4个字节十六进制表示的卡号,可以先将获取的字符串转换成32位无符号整形,然后将32位无符号整形转换成字节数组,最后将字节数组作为参数插入数据库卡号字段。再例如原始一卡通表中的工号是可变长度字符串类型varchar(10),而系统需要的工号是固定长度10 char(10),这里只要将原始工号长度不满10的左边填充0就可以了。而教务表的整个数据组织结构都和系统不一样,需要按照工号、教室号、时间段、周次组织数据,这样就先要从一卡通根据姓名查得工号,然后将上课时间,上课地点按照分号对应拆解开,在上课时间里面再按周次拆解,经过层层循环拆解最终形成系统的数据结构。上课时间段目前是按照每天5段(1-2,3-4,5-6,7-8,9-10),每周7天一个循环,也就是一共35段计算,周次以实际教学计划为准。
为了保证数据接口的安全调用,所有的web service调用必须集成网站的windows身份验证,只有指定的开发者才能够调用,使用NetworkCredential类便可以安全调用集成windows身份验证的web service服务。数据接口的调用方式除了以手动点击按钮的方式启动外,也可以定时调用,为了不影响校园网络的运行可以在夜间进行大数据量的同步,教务临时排课尽量提前一天完成,这样夜间完成同步第二天便是最新的同步数据。
3 结束语
通过本系统,一方面能够让管理人员在控制室远程监控和管理教室设备,对于发生故障的设备能够在第一时间给予维修,提高了设备的运行效率,减少了设备维护人员的工作量。据统计,使用该管理系统以后,设备维修的平均响应时间缩短75%,教室设备的平均故障率降低53%,设备管理人员的维护工作量减少了68%,师生对于多媒体教室的使用满意度大幅度提升。另一方面教师不用领取专门的讲台门禁卡,可以直接用校园卡刷卡使用多媒体教室,更加方便而且利于统一管理。
参考文献:
[1]李庆.基于嵌入式TCP/IP技术的网络型多媒体中控器设计[J].陕西科技大学学报,2010.
[2]位永辉,刘笃仁.基于MF RC500的非接触式IC卡读写器设计[J].电子元器件应用,2007.
[3]肖俊武,许爱秋,鲁俊伟.利用C8051F020的SMBus实现时钟/日历芯片读取[J].电子元器件应用,2006.