目录
项目任务:
1、设计界面要具备开关串口的功能,串口协议默认(115200,8位数据宽度,1位停止位,无校验);
2、要具备读取卡号(卡信息)的功能;
3、可以对新卡进行注册;
4、可以对已经注册的卡进行读取;
5、手动读取卡数据(每个小组设定的读卡块位置不同,数据也不同);
6、对读取到的数据进行判断,并正确显示“注册”或“卡无效”等信息。
页面设计:
任务准备
一、设备使用及连接
1.串口助手使用
一、连接好NewLab实验台,并放上M3模块,把实验台调整到“通讯模式”
二、在设备管理器中查找本机的串口号 ,默认不是在COM1
三、打开“串口助手”,设置好参数(波特率什么都可以)
四、若测试成功,可以安装LF 天线模块M3模块的PB10、PB11分别连接LF射频模块的CLK、DATA引脚。(CLK=PB10,DATA=PB11)
2.NewLab平台通信协议
NewLab平台通信协议是确保门禁系统中各个组成部分(如门禁控制器、读卡器、门磁、电锁等)之间能够有效、准确地进行信息交换和数据传输的关键。
2.1.NewLab平台通信协议概述
定义:NewLab平台通信协议是一套专门为低频卡门禁系统设计的通信标准,它规定了系统中各个设备之间通信的格式、速率、数据校验等关键参数。
2.2.NewLab平台通信协议的主要组成部分
通信格式:NewLab平台通信协议规定了数据包的格式,包括帧头、数据部分和帧尾等关键部分。其中,帧头包含了数据包的类型、长度等信息,数据部分包含了具体的指令和数据,帧尾则用于数据的校验和确认。
通信速率:NewLab平台通信协议规定了门禁系统中各个设备之间的通信速率,确保数据能够快速、准确地传输。
数据校验:为了确保数据的准确性和完整性,NewLab平台通信协议采用了多种数据校验方法,如CRC校验等。这些校验方法能够有效地检测出数据传输过程中的错误,并进行相应的处理。
SYNC: 通信协议同步帧,ID:从设备地址,Command:命令,Size:数据段大小,CRC16: 采用CRC16校验方式。具体可以看CRC
2.3.NewLab平台通信协议在低频卡门禁系统中的应用
在低频卡门禁系统中,NewLab平台通信协议被广泛应用于门禁控制器与读卡器之间的通信。当用户持有低频卡靠近读卡器时,读卡器会读取卡上的信息并通过NewLab平台通信协议将数据传输给门禁控制器。门禁控制器会根据读取到的信息与存储的授权信息进行比对,如果验证通过,则控制器会发送指令给门磁或电锁,打开门禁设备,允许用户进入。
二、系统软件及技术设计
1.系统软件设计
门禁管理软件:用于人员信息管理、权限设置等。软件应具备界面友好、操作简便的特点,方便管理员进行日常操作和管理。
数据库:存储人员信息、权限信息、事件记录等。数据库应具备高可靠性、高安全性的特点,确保数据不会丢失或被非法访问。
中间件:作为数据传输和处理平台,实现数据的接收、存储、处理和传输。中间件应具备高性能、高可扩展性的特点,确保门禁系统能够支持大规模的数据处理和管理需求。
2.系统工作原理
人员携带低频卡靠近读卡器时,读卡器读取卡中的信息,并将数据发送给门禁控制器。门禁控制器接收数据后,与预设的权限数据库进行比对。若卡号匹配且权限允许,门禁控制器控制门禁执行机构打开,允许人员进入。
3.技术设计
低频卡技术:研究低频卡(如125KHz)的工作原理、识别距离、安全性等特性,选择适合的门禁系统低频卡。
RFID技术:了解RFID技术的基本原理、组成部分和工作频段,分析其在门禁系统中的应用优势。
物联网技术:研究物联网技术在门禁系统中的应用,如Zigbee无线通信技术为系统设计提供技术支持。
三、系统组成以及工作原理
1.低频卡门禁系统概述
低频卡门禁系统是一种基于无线射频识别(RFID)技术的安全控制系统,它主要利用低频电磁波进行非接触式通信,以实现对特定区域进出权限的管理。低频卡门禁系统通常包含读写器、卡以及相应的管理软件。
1.1.读写器
读写器是门禁系统的核心设备,负责发射无线电波并接收来自卡的响应信号。读写器通常安装在门禁点附近,如入口通道或出口通道。当卡靠近读写器时,读写器会自动检测卡的存在并发送信号,读取卡中的信息。
1.2.卡
卡是门禁系统中的身份凭证,分为ID卡和IC卡两种类型。ID卡通常含有固定的序列号,而IC卡则具有更大的存储空间,可以存储更多的用户数据和权限信息。卡通过与读写器之间的电磁耦合进行通信,传递身份信息。
1.3.管理软件
管理软件用于设置和维护门禁系统的各项参数,如用户权限和事件记录等。
2.数据流程及功能模块
数据流程:设计门禁系统的数据流程,包括卡号读取、信息比对、指令发送等过程,确保数据的准确性和实时性。功能模块:根据设计目标和需求,划分门禁系统的功能模块,如身份认证模块、门禁控制模块,并明确各模块的功能和接口。
任务实施
1.设置界面
1.1.串口控制功能
设计界面应具备开关串口的功能,串口协议默认为115200波特率、8位数据宽度、1位停止位、无校验。提供串口参数设置选项,允许用户根据实际情况调整串口参数。
1.2.卡号读取与显示功能
设计界面应能够实时读取低频卡上的卡号(卡信息),并在界面上清晰显示。卡号显示应易于辨识,字体大小适中。
1.3.卡片管理功能
提供新卡注册功能,允许管理员为新用户分配低频卡并设置权限。提供已注册卡片的注销功能,管理员可根据需要注销不再使用的卡片。设计界面应显示已注册卡片的列表,包括卡号、持卡人姓名等信息。
1.4.手动读取卡数据功能
设计界面应提供手动读取卡数据的功能,管理员可通过该功能读取指定卡片的数据以进行验证或调试。读取到的数据应在界面上清晰显示,包括卡号、卡片状态等信息。
1.5.权限控制功能
设计界面应能够显示当前门禁设备的权限状态(如开门、禁止入内等),并根据卡片验证结果实时更新。提供权限设置选项,允许管理员为不同卡片设置不同的门禁权限。
2.手动发送和接受
2.1. 发送指令
指令格式:根据门禁系统的通信协议,构造发送指令。指令通常包括帧头、数据部分和帧尾。数据部分包含具体的操作指令和参数,如读卡指令、开门指令等。
发送方式:通过门禁系统控制软件的手动发送功能,将构造好的指令发送给门禁控制器。在C#等编程语言中,可以使用SerialPort类的Write方法发送数据。
2.2. 发送验证
响应等待:发送指令后,门禁控制器会执行相应的操作,并通过串口返回响应数据。系统应等待一段时间(如100ms),以便接收门禁控制器的响应。
响应校验:接收到的响应数据应经过校验,确保数据的完整性和正确性。常用的校验方法有CRC校验等。
private void btSend_Click(object sender, EventArgs e) //发送数据
{
// 1 、以字符串形式发送
string str = "ABCDEFDG";
com1.Write(str);
com1.WriteLine(str); //发送字符串后发送新一行
// 2、 字节数组发送方式
byte[] buff = new byte[] { 0xff, 0x55, 0x00, 0x00, 0x01, 0x01, 0x00, 0x50,0x74};
com1.Write(buff, 0, buff.Length);
// 3、字符数组发送方式
char[] buff1 = new char[] { 'a', 'b', 'c', 'd' };
com1.Write(buff1, 0, buff1.Length);
}
2.3. 接收准备
串口监听:在门禁系统控制软件中,设置串口监听功能,以便实时接收门禁控制器发送的数据。
数据缓冲区:为接收到的数据分配足够的缓冲区,确保数据不会丢失。
2.4. 数据接收
数据读取:当门禁控制器发送数据时,系统应从串口读取数据,并保存到数据缓冲区中。在C#等编程语言中,可以使用SerialPort类的Read方法读取数据。
数据解析:对接收到的数据进行解析,提取出有用的信息,如卡号、状态码等。根据门禁系统的通信协议,解析出数据的具体含义。
2.5. 数据处理
状态更新:根据接收到的数据,更新门禁系统的状态,如显示当前卡号、更新门禁权限等。
异常处理:如果接收到的数据存在异常(如校验失败、格式错误等),系统应进行异常处理,如显示错误提示、记录日志等。
string buff = com1.ReadExisting();
string buff = com1.ReadLine()
textBoxReceive.Text += buff;
int len = com1.BytesToRead;
byte[] buff=new byte[len];
com1.Read(buff,0,len);
str += buff[i].toString("X").PadLeft(2,'0') X代表以16进制显示, PadLeft表示显示的位宽,2表示以两位宽显示,‘0’表示不够两位用0补
3.自动接收数据
3.1. 发送机制设置
定时器设置:使用定时器(Timer)实现自动发送功能。可以设置定时器的间隔时间(Interval),例如每秒钟(1000毫秒)发送一次数据。发送内容:根据门禁系统的需求,构造需要发送的数据包。数据包通常包括帧头、指令内容和帧尾。发送方式:通过门禁系统控制软件的自动发送功能,按照设定的间隔时间将数据包发送给门禁控制器。
3.2. 发送监控与日志
发送状态监控:系统应实时监控发送状态,确保数据包成功发送。如果发送失败,系统应记录错误信息并尝试重新发送。发送日志记录:系统应记录每次发送的数据包内容、发送时间、发送状态等信息,以便后续分析和排查问题。
3.3. 接收机制设置
串口监听:设置串口监听功能,以便实时接收门禁控制器发送的数据。数据缓冲区:为接收到的数据分配足够的缓冲区,确保数据不会丢失。接收事件处理:当接收到数据时,触发接收事件处理函数。该函数负责从缓冲区中读取数据,并进行后续处理。
3.4. 数据解析与处理
数据解析:根据门禁系统的通信协议,对接收到的数据进行解析。提取出有用的信息,如卡号、状态码等。状态更新:根据解析出的数据,更新门禁系统的状态。例如,当接收到开门指令时,控制门禁设备打开门禁。异常处理:如果接收到的数据存在异常(如校验失败、格式错误等),系统应进行异常处理。
3.5. 接收监控与日志
接收状态监控:系统应实时监控接收状态,确保数据能够正常接收。如果接收失败,系统应记录错误信息并尝试重新接收。接收日志记录:系统应记录每次接收的数据内容、接收时间、接收状态等信息,以便后续分析和排查问题。
serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);//必须手动添加事件处理程序
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)//串口数据接收事件
{
if (!radioButton3.Checked)//如果接收模式为字符模式
{
CheckForIllegalCrossThreadCalls = false; //关闭跨线程异常警告
tring str = serialPort1.ReadExisting();//字符串方式读
textBox1.AppendText(str);//添加内容
}
else
{ //如果接收模式为数值接收byte data;
CheckForIllegalCrossThreadCalls = false; //关闭跨线程异常警告
data = (byte)serialPort1.ReadByte();//此处需要强制类型转换,将(int)类型数据转换为(byte类型数据,不必考虑是否会丢失数据
string str = Convert.ToString(data, 16).ToUpper();//转换为大写十六进制字符串
textBox1.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");//空位补“0”
//上一句等同为:if(str.Length == 1)
// str = "0" + str;
// else
// str = str;
// textBox1.AppendText("0x" + str);
}
}
总结
测试结果视频