当前位置:网站首页>基于W5500实现的考勤系统
基于W5500实现的考勤系统
2022-07-25 10:49:00 【WIZnet】
工具:W5500EVB 、RC-522射频模块、蜂鸣器模块
编译环境:keil5
目的:通过W5500EVB讲读取到的IC卡信息上传到后台数据库,后台处理后实现浏览器端登录浏览用户打卡信息。
后台接收到相应的数据后开始处理数据并实现在浏览器端显示IC卡的ID以及绑定客户的用户名、打卡时间、签到状态等信息。该系统还添加有用户注册、登录、密码找回等功能。
过程
整个系统的实现主要分为以下两部分:
1、模块驱动及数据上传;
2、后台数据处理及前端显示;
整个系统的前端显示可通过浏览器注册、登录、添加和查询用户信息、密码找回、生产用户Excel表格等。下面分别介绍两个部分的实现过程。
一、 模块驱动及数据上传
该部分的实现相对简单,网上有很多关于RC-522的驱动代码,我就不在赘述了。这里主要说一下读取到卡的ID以后的操作。在这之前还要先讲一下单片机的网络连接方案。
网络连接方案有很多,例如传统的软件TCP/IP协议栈方案;较新的硬件TCP/IP协议栈方案;软件协议栈代码量较大,对工程师来说工作量也相对较大。硬件协议栈较为简单,只需要将要发送的数据交给网络芯片处理就行了。数据的发送和接收都有该芯片来实现。我们只需在应用层传输/读取数据就行了。
硬件协议栈的方案是由WIZnet首次提出,并成功推出以太网芯片系列。W5500EVB就是采用以STM32RCT6为主控芯片加W5500以太网芯片的方案来实现网络接入的功能。
设备在读取到卡的ID以后将ID数据封装打包以后交给W5500,W5500将数据通过HTTP协议将数据发送给后台服务器并接收服务器返回的响应报文。成功发送和响应后蜂鸣器会发出50ms的响声来提示数据上传成功。如不成功则会发出100ms的响声来提
数据上传错误。数据上传的代码如下示:

其中post_data_to_server()函数是将ID数据打包成HTTP报文的格式。Send函数是W5500的官方库函数用来执行数据的发送。getSn_RX_RSR()函数是读取SOCKET的接收缓存来判断是否有数据需要接收,这里是来接收HTTP服务器的响应报文。
以上就实现了IC卡数据读取和上传的功能,下面说一下后台服务器和前端实现的部分。
二、后台数据处理及前端显示
该系统的后台服务器的环境搭建采用的是Apache + php+ MySQL组合,该组合非常适合开发中小型的web应用,开发的速度比较快。本系统中在硬件设备将卡的ID数据上传到服务器以后,服务器接收并将数据与数据库中的数据进行对比,然后更新与此ID对应的用户信息。浏览器再向服务器发出请求报文,服务器将数据库中的数据发送给浏览器并显示。
根据上面说的在设备上传数据之前我们需要先将卡的ID插入到数据库中,而且还要在已登录的状态下插入、查看、删除数据。再加上权限设置,这样才算是一个相对较完整的系统设置。
首先我们在phpMyAdmin中新建自己的数据库,如图:

其中company是注册用户是所填写的用户信息;
Record是用来存储用户所添加的员工打卡签到的信息;
Register是用来存储用户添加的员工信息;
Test是存储用户员工的签到状态;
Time是存储签到时间;
Uaccount是存储用户的账户信息;
以上字段是用来存储用户的各项数据和信息的,浏览器在向服务器请求数据的时候服务器会从这里将对应的数据取出交给浏览器并显示。
服务器部分的功能是由服务器脚本语言PHP来编写实现的。首先我们要写一个系统注册和登陆的页面,然后将注册信息存储在数据库,这样下次登陆就可以直接比对数据库来判断是否为有效用户。如图为注册登陆界面:

注册登陆成功以后就可进入签到信息列表界面,该界面用来显示用户所添加的员工信息的签到状态。因为刚注册所以我们要先添加员工信息。

如图点击用户管理中心进入员工信息界面:

在该界面我们可查看、添加、修改、删除员工信息以及添加上下班时间。在完善这些信息后浏览器将这些数据信息发送给服务器,服务器再将这些数据插入到数据库中。上图中的信息列表、员工列表都是在完善员工信息和签到信息以后服务器从数据库中拿出发送到浏览器显示的结果。
这些工作完成以后服务器就可以接受来自设备上传的卡ID数据并将改数据与数据库中的已记录数据进行对比进而执行相应的操作。
此外该系统还有密码找回、生产Excel报表、用户搜索等功能。关于密码找回在登陆界面点击忘记密码然后填写注册时的邮箱就可通过邮件来重新设置自己的登陆密码;如图:


关于生产报表点击了信息列表页面的生成报表就可以直接下载系统自动生成的员工信息列表;该过程是由服务器自动完成,服务器向数据库索要用户员工信息然后生成Excel表格;如图:

关于用户搜索是在浏览器部分输入用户员工姓名信息,浏览器将这些数据提交给服务器,服务器再将这些数据与数据库中的数据进行对比然后将该员工的信息以表格的形式显示在浏览器页面,如图:
以上就是关于后台处理数据及前端浏览器显示的全部过程,到此整个系统的后台处理就完成了,我们可以通过浏览器登陆查看相关数据信息。
关于考勤系统的总结:
该系统主要有注册、登陆、密码找回、添加员工信息、设置签到时间、查看/修改/删除员工信息、查看员工签到信息以及搜索的功能。在实现这些功能的开发过程中主要运用PHP服务器脚本语言和MySQL数据库语言以及HTML浏览器脚本语言来完成数据在数据库和服务器以及浏览器之间的传输。在浏览器显示的代码中还添加了CSS代码来修改HTML标签的样式以增强浏览器端显示的可视性。
该系统已经过初步的测试,如有其他问题请及时与我沟通。谢谢!
边栏推荐
- 只知道预制体是用来生成物体的?看我如何使用Unity生成UI预制体
- 基于Caffe ResNet-50网络实现图片分类(仅推理)的实验复现
- 常见WEB攻击与防御
- DNS分离解析的实现方法详解
- DICOM medical image viewing and browsing function based on cornerstone.js
- Compressed list ziplist of redis
- The principle analysis of filter to solve the request parameter garbled code
- Greedy problem 01_ Activity arrangement problem
- There is a newline problem when passing shell script parameters \r
- Job interviews are always a second kill? After reading the seckill system notes secretly stored by JD T8, I have given my knees
猜你喜欢

SQL injection LESS18 (header injection + error injection)

Filter过滤器解决request请求参数乱码的原理解析

【mysql学习09】

The most efficient note taking method in the world (change your old version of note taking method)

活动报名 | 玩转 Kubernetes 容器服务提高班正式开营!

leetcode 剑指 Offer 28. 对称的二叉树

How can you use unity without several plug-ins? Unity various plug-ins and tutorial recommendations

Small program of vegetable distribution in community

Nowcodertop1-6 - continuous updating

PostgreSQL stepping on the pit | error: operator does not exist: UUID = character varying
随机推荐
[dynamic planning] 70. Climbing stairs
Mlx90640 infrared thermal imager temperature measurement module development notes (V)
数据库完整性——六大约束学习
Getting started with redis
Reptile foundation I
Fillet big killer, use filter to build fillet and wave effect!
爬虫基础一
基于cornerstone.js的dicom医学影像查看浏览功能
Small and micro enterprise smart business card management applet
Reinforcement learning (IV)
【mysql学习09】
推荐系统-协同过滤在Spark中的实现
Database design - Simplified dictionary table [easy to understand]
Convert string to number
Dataframe print 省略号问题
Nowcodertop7-11 - continuous updating
Summary of combination problems of Li Kou brush questions (backtracking)
Shell - Chapter 8 exercise
MLX90640 红外热成像仪测温模块开发笔记(五)
JS convert pseudo array to array