孙永伟
(山东省淄博市工业学校,山东淄博,255400)
在本设计中,密码模块包括密码键盘和显示电路,都与智能门禁控制器直接通信,软件流程图如图1所示。
图1 智能门禁控制器与密码模块的通讯流程图
业主在电梯前将电梯呼叫到达,然后进入电梯通过密码键盘输入密码,点击“确定键”,智能门禁控制器接收到密码后,将其与数据库里的信息对比,判断密码是否正确,如果正确,将在显示电路上显示“密码正确”并允许业主操作电梯,如果错误,将在显示电路上显示“密码错误”并不允许业主操作电梯。密码正确后,业主选择自己所要到达的目的楼层,智能门禁控制器接收到信息后将其发送给电梯控制器,业主即可到达目的楼层。以下是部分密码键盘和显示电路的单片机扫描程序:
本设计为了保证电梯运行状态的更新效果,采用了Handler对象,接收线程和更新数据线程分别占用不同的线程,用以实现线程与线程之间的通信,Hander采用的原则是先进先出,对不同线程中运行的多个任务进行有序的排队,Hander可以发送和处理的对象包括消息对象和Runnable对象,每一个Handler对象都关联一个线程以及线程所对应的消息队列。当一个Handler对象被创建时,相关联的线程以及线程所对应的消息队列也就被创建了[4]。Handler主要有两个作用:
(1)安排消息或Runnable 在某个主线程中某个地方执行;
(2)安排一个动作在不同的线程中执行。
本设计主要包括两个线程,一个是主线程,主线程主要是更新操作界面的显示,电梯的运行方向、所在楼层以及电梯的模拟动画等,另一个是接收线程,用于接收WIFI模块发送来的信息。接收线程接收到智能门禁控制器通过WIFI通讯模块传送来的数据,判断接收到的数据的长度,如果为空,则返回;如果不为空,则将数据通过handler.sendMessage(message)发送到主线程,然后主线程进行更新数据。关键程序如下所示。
电梯控制主要是按照设定好的通信协议格式将用户的命令发送到智能门禁控制器,控制过程如图2所示。
图2 电梯控制流程图
首先加载控件Up、Down、Start按钮,为按钮up、down、start设置监听器,如果有按钮按下,首先判断是哪个按钮,如果是Up键,发送呼叫电梯上行命令,如果是Down键,发送呼叫电梯下行命令,如果是Start键,发送电梯向目的楼层出发命令,最终通过sendMessage(bytes)发送出去[5]。关键程序如下所示。
本系统的软件设计和硬件设计工作至此基本结束,后期根据实验室设备条件进行了软硬件的测试实验,基本能够满足用户要求。由于场地和实验室条件限制的原因,智能门禁控制系统只进行了实验室测试系统调试。实验室试验中,不配置电梯,因此系统只有单片机(门禁控制器)、密码键盘(完成密码输入和选层两个功能)一个液晶显示器、一个步进电机、WIFI模块和一台手机,其中一台显示器用来显示单片机接收到来自键盘和手机的指令。由于没有电梯,手机用户在通过验证后单片机只向其发送设置好的电梯运行状态并接收呼梯、楼层请求,采用步进电机模拟实现,电梯向上运行一层楼时电机正转一圈,电梯向下运行一层楼时反转一圈[7]。
(1) 按照正确的方式将门禁控制器、密码模块、WIFI模块、显示电路以及电源模块进行连接,检查无误后给电源模块上电,观察液晶显示模块是否正常显示电梯的运行状况。
(2) 通过密码键盘输入用户密码,然后呼叫楼层,观察电机是否按照期望旋转方向和旋转转数进行旋转,当电梯到达用户所在楼层后,输入目的楼层并确定,再观察电机是否按照期望旋转方向和旋转转数进行旋转。
(3) 打开手机上的智能电梯软件,首先显示的是登录界面,输入用户名和密码,点击登陆按钮,观察是否跳转到操作界面,如果没有跳转到操作界面就会提示“用户名或密码错误”,需要重新输入正确的用户名和密码,如果跳转到操作界面,观察是否正常显示电梯的运行状况。
(4) 在操作界面中输入用户所在楼层,然后点击“呼叫电梯上行”按钮,观察电机是否按照期望旋转方向和旋转转数进行旋转并到达用户所在楼层,然后输入目的楼层,点击“启动电梯”按钮,察电机是否按照期望旋转方向和旋转转数进行旋转并到达用户目的楼层。
通过上述实验发现整套系统可以正确的完成各项功能,而且步进电机模拟运转准确,运行稳定。