朱先远,周正贵
(安徽商贸职业技术学院电子信息工程系,安徽芜湖241000)
基于GPS双围栏的学校自动考勤系统
朱先远,周正贵
(安徽商贸职业技术学院电子信息工程系,安徽芜湖241000)
给出一种基于GPS双围栏的学校自动考勤系统的设计方法。客户端App程序可通过Service服务调用GPS模块来获取终端当前地理位置,并结合双GPS围栏考勤算法得出某个学生的校外或校内状态,进而得出该学生当前是进校还是离校。运行结果表明,相比于基于超高频RFID考勤技术,基于GPS双围栏技术考勤算法更准确、可靠。
GPS围栏;移动终端;自动考勤;I/0完成端口
目前,管理学生考勤有两种方法,一是通过教师点名,二是利用高频、超高频的RFID技术(Radio Frequency Identification Technology)[1-3]或者ZigBee[4-5]等近场通信技术完成。基于RFID技术的考勤是利用射频技术在阅读器(Reader)与标签(Tag)之间非接触地传递信息来获取被标识物体信息。在这种技术中,由于多个标签共享Tag-to-Reader的上行信道,使得在标签同时回应多个阅读器的查询时易出现冲突[6],致阅读器误读或漏读标签信息。基于ZigBee的考勤技术主要是根据当前节点接收到的周围的设定参考点的相对Rssi信号值进行定位的,但Rssi信号值随终端放置方位不同而改变,会导致最终计算结果不准确,且这种方法依赖的终端设备还需要扩展ZigBee模块。
考虑以上问题,我们给出一种基于双GPS围栏的考勤算法来实现对学生的自动考勤。GPS围栏是指某一规定的虚拟地理边界,当一个带有GPS模块的移动终端进入或离开该地理区域时,系统可自动发现它,并发出通知和警告。鉴于GPS的精度有限,设置一条围栏易产生边界区域频繁误考勤的问题,系统设置了间距为10 m的双围栏,当用户进入内围栏时签到,离开外围栏时签退,在两围栏间的区域不做考勤。
根据系统需求,我们设置了业务层、数据交换层和服务层,如图1所示。
图1 基于双GPS围栏自动考勤系统层次架构图
由图1可见,服务层主要是提供学生考勤统计查询和通知下发等服务。业务层主要发生在移动终端处,通过调用移动终端的GPS模块定时获取(设定周期为90 s)用户的GPS数据,并计算终端与围栏的相对位置,最终根据学生进校、离校状态是否发生变化选择性地将计算结果上传至数据交换层。图中的GPS服务器采用A-GPS服务方式。数据交换层是基于I0CP(I/0 Completion Port)[7-8]技术实现的,I0CP技术属于一种通信模型,适用于高效处理大量客户端同时与服务器进行数据交换的情况,是一种高负载服务器技术,也可以认为它是能异步I/0操作的模型。虽然学生签到和签退具有集中性,即在上学和放学时,数据交换并发性强,服务器负载重,但I0CP技术可以很好地接收来自业务层的考勤数据。
2.1围栏内外判断算法
判断移动终端是进入还是退出规定区域,可以看成判断点在多边形内外的问题。解决该问题常用的方法为射线法,其基本原理是判断由某一点P向左所作射线与多边形交点的个数,奇数表示P在多边形内,偶数表示P在多边形外。一般情况下,射线形如图2中的PA,但也有特殊情况:如射线刚好经过多边形一个顶点,会被误认为和两条边都有交点;或射线与某一条边共线,如图2中PC,会被认为与边有无穷多的交点。这些情况均会导致判断错误。
图2 射线与多边形交点的几种可能情况
针对这些特殊情况进行判断的规则如下。假设当前处理的边是P1P2。
1)如果点P在边P1P2上,则直接判定点P在多边形内。
2)如果射线正好穿过P1或者P2,那么,若P的纵坐标与P1、P2中较小的纵坐标相同,则在此次判断过程中,忽略这个交点。
3)如果从P点发出的射线与P1P2平行,则忽略对射线与这条边上交点的判断。
终端在围栏内外的判断算法如下。
Step1:初始化当前点P(x,y)(即学生当前所处的经纬度坐标)。GPS双围栏WL和WL’分别由点(x1,y1)、(x2,y2)、…、(xn,yn)连接成的闭曲线和由点(x1’,y1’)、(x2’,y2’)、…、(xn’,yn’)连接成的闭曲线构成。
Step2:调用判断点是否在多边形内部的算法[9],分别确定P点与两个围栏的相对位置。
Step3:根据判断结果,返回P点的状态。若P点在外围栏外则返回校外;若P点在内围栏内则返回校内;若用户处于两围栏间区域,不作返回。
2.2客户端数据获取流程
考虑到GPS模块工作耗电量大,我们遵循的设计思想是综合运用终端传感器、GSM/CDMA等通信模块,同时采用间隔工作、最小网络通信模块工作技术。当用户登录终端之后,终端会自动下载服务端围栏数据,并启动MainThread线程,该线程以90 s为周期获取用户当前GPS数据,并进行围栏内外判断,再将判断结果与用户此前的状态做对比。若用户的围栏内、外状态发生变换,则启动GSM网络请求,将新数据上传至服务器,否则丢弃消息,重新获取GPS数据;若围栏内外判断算法无输出,则表明用户处于内外围栏的中间区域,此时客户端程序不作签到、签退处理。
图3 客户端数据处理流程
2.3服务器端数据并发处理技术
学生签到、签退时,考勤系统的服务器端数据并发量大,易出现因阻塞而屏蔽客户端请求的情况。为此,我们采用I0CP技术,使用链表队列对系统中多个学校的上万个客户端请求进行处理。采用链表队列处理客户端数据,所有进程互不干扰,不会出现上述问题。如图4所示,服务器端为连接成功的客户端创建线程并插入到缓冲链表队列中,以使服务器端可接收客户端发送过来的数据。
图4 IOCP模型
此外,为了避免长时间没有任何操作的用户占用服务器资源,程序的模拟线程池机制采用了清理策略。其方法是:在系统中定义一内存使用表C,采用最近最久未使用(Least Recently Used)置换算法更新表,对在规定时间内不进行任何操作的用户(如线程在一段时间未收发数据),会将其所占用的内存资源回收并重新分配。
为了检验基于GPS双围栏学校自动考勤系统设计的有效性,本文将系统服务端部署环境为Intel Core(TM)i3-3310M CPU 2.40 GHz 4个、4 G内存、Win7、Sqlserver2008R2,App客户端程序运行环境为华为C8815(电信版)、电池容量2 100 mAh的手机终端。我们选择芜湖市某县级中学作为实验校区,该校区有5 000多名学生,考勤成功率、漏报率和误报率均通过各班班主任人工核对得到,将各项数据和该校之前搭建的基于2.4 G超高频RFID远距离考勤技术所得结果进行比较。表1为根据一周连续统计考勤数据的计算结果。
表1 基于GPS双围栏技术与基于2.4 G RFID考勤技术性能对比
从表1可以看出,在漏报方面,基于超高频2.4 G RFID技术考勤表现较好,其原因是基于GPS双围栏的GPS模块受环境如学校门口高大建筑物等因素影响,故从启动到获取GPS数据的时间不确定,一般在30~120 s,这会导致出现获取数据失败的情况。在成功率和误报率方面,基于2.4 G RFID技术表现较差,这主要是在多标签并发考勤时易出现漏报或误报,且受考勤设备附近较大物体反射面的影响,反复考勤难以避免。
图5 围栏设置界面
基于2.4 G RFID的考勤方式需要在校门内外两侧各安装一个RFID读写器,并为每个学生添置一个有源Tag。若学生依次被门外读写器、门内读写器识别,则为进校,次序相反则为出校。这种方式对硬件依赖大,系统部署较繁杂。本文中的基于GPS双围栏技术考勤方法无需添加物理部署,只需为每个学生的Android终端安装App程序即可,在之后的使用中App程序不需要再次操作,而是自动在后台运行。
图5所示为数字化校园管理后台。管理员在登录后,可选择围栏设置,为校区设置对应的内外围栏。服务器根据数据库中预存的移动设备识别码(MEID号)来区分不同的客户端。客户端程序启动后,先自动下载服务器围栏等数据并完成初始化工作,然后启动终端GPS位置数据监测线程,周期性获取终端经纬度坐标数据,并判断学生当前校外、校内状态的改变情况:若状态由校外变为校内,则上传一条到校记录;若状态由校内变为校外,则上传一条离校记录。
在客户端上传考勤记录后,管理员可以在考勤查询界面(图6)中查询学生进出校情况。管理员在后台点击“学生考勤”即可根据“学校名称”、“班级”和“学生姓名”三个条件联合查询所有满足条件的学生用户在系统中的考勤记录。
图6 学生考勤查询界面
我们使用GPS双围栏签到技术实现了移动终端用户进出学校的自动签到和签退功能。学生所持智能手机只需预装App,启动后台运行的Service服务,就可通过该服务调用GPS模块,获取当前的地理位置。将手机当前位置与系统数据库中的围栏数据进行比较后,即可得出学生的校外或校内状态,进而得出该生当前是进校还是离校。
本系统的客户端程序设定GPS模块工作时间间隔为90 s,CDMA通信模块仅在校内、校外状态在发生改变时才进行数据上传,移动终端的GPS模块和网络通信模块的休眠时间较长。系统采用I0CP技术对客户端数据的并发进行处理,通过软件技术克服硬件对网络并发请求处理的不及时的问题,且系统不依赖RFID读写器等硬件,考勤系统搭建部署容易实现。
[1]FINKENZELLER K.RFID Handbook:Radio-frequencyIdentification Fundamentals and Applications[M].2nd Edition.England:John Wiley and Sons,2003:6-9.
[2]张博轩,赵伟杰,杜晨.基于RFID的高校学生考勤系统的设计[J].科技创新与应用,2014(15):56.
[3]彭赟.基于RFID的远程考勤系统研究与设计[D].镇江:江苏科技大学,2014.
[4]宋伟.ZigBee技术在IC考勤系统中的应用研究[J].科技信息,2014(10):52-53.
[5]刘红日,王敏,卢成亚,等.基于RFID和Zigbee网络的考勤系统的设计与实现[J].中国新通信,2014(10):108-110.
[6]谭文群.基于ZigBee技术的煤矿井下人员定位考勤系统的设计[J].煤矿安全,2007(9):54-56.
[7]杜翔,雷跃明.基于I0CP的服务器端应用程序[J].计算机系统应用,2009(2):151-154.
[8]刘珍阳,宋刈非,张蕊.基于I0CP的高性能服务器软件设计[J].计算机与数字工程,2013(7):1154-1156.
[9]周培德.判定点是否在多边形内部的算法[J].北京理工大学学报,1995(4):437-440.
【责任编辑梅欣丽】
DesignoftheSchoolAutomaticAttendanceSystemBasedonGPSDualFence
ZHU Xianyuan,ZHOU Zhenggui
(Department of Electronic Information Engineering,Anhui Business College of Vocational Technology,Wuhu 241000,China)
Based on GPS dual fence a school automatic attendance system?was designed.Compared with the system based on RFID and ZigBee,the algorithm was more accurate and reliable.And at the same time since today’s students use the phone with a GPS module,the server also needs to increase the signal receiving device.It is simple to build deployment for the system,for client data server uses I0CP parallel processing technology.Systems running instances showed that the system had good results.
GPS fence;mobile terminal;automatic attendance;I0CP
TP393.03
A
2095-7726(2015)09-0043-04
2015-03-12
安徽省教学研究重点项目(2013jyxm417);安徽商贸职业技术学院质量工程项目(ZL201425)
朱先远(1981-),男,安徽六安人,硕士,研究方向:移动计算和服务计算。