低频卡也称为电磁感应卡,是一种被广泛应用于物联网领域的无源RFID卡片。它通过感应信号和读卡器之间的电磁耦合来实现卡片和读取器之间的信息传输。低频卡的工作频率一般为125kHz或134.2kHz,其传输距离一般在10cm左右。
低频卡具有以下优点:
1. 安全性高:由于低频卡工作频率较低,其传播范围比高频和超高频卡片更小,容易实现局限性读取,从而提高了卡片的安全性和抗干扰性能。
2. 可编程性强:低频卡具有良好的可编程性和可读性,允许用户通过编程或写入数据,来实现卡片的批量管理、身份验证和物品跟踪等功能,提高了物联网应用场景下卡片的使用效率。
3. 成本低廉:由于低频卡采用成熟的电磁感应技术,所需的芯片和材料成本较低,其生产成本相对更低,符合大规模应用下降低成本的需求。
低频卡可用于物联网工程中,如工业控制、车库门禁系统、物资跟踪、农业收割、个人物品管理、宠物管理等领域。低频卡可以通过与读卡器的交互来识别和认证用户身份、管理物品信息等,为人们带来更便利和安全的生活和工作环境。
总之,低频卡作为物联网领域中的一种重要关键技术,拥有安全性高、可编程性强和成本低廉等优点,被广泛应用于物联
代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace duka
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SerialPort com1 = new SerialPort(); //创建串口对象
private void button3_Click(object sender, EventArgs e)
{
byte[] buff = new byte[] { 0xff, 0x55, 0x00, 0x00, 0x03, 0x04, 0x05, 0x01, 0x00, 0x00, 0x66, 0x88, 0x81, 0x63 };
com1.Write(buff, 0, buff.Length);
label1.Text = "注册完成!";
}
private void Form1_Load(object sender, EventArgs e)
{
String[] port = SerialPort.GetPortNames(); //获取端口
for (int i = 0; i < port.Length; i++) { comboBox1.Items.Add(port[i]); }
if (port.Length != 0) comboBox1.SelectedIndex = 0;
if (!com1.IsOpen)
{
button1.BackColor = Color.Red;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (!com1.IsOpen) //如果串口关闭,则打开
com1.PortName = comboBox1.Text;
com1.BaudRate = 115200;
com1.DataBits = 8;
com1.StopBits = StopBits.One;
com1.Parity = Parity.None;
com1.Open();
button1.Text = "关闭端口";
button1.BackColor = Color.Green;
button2.Enabled = true;
button4.Enabled = true;
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (com1.BytesToRead != 0)
{
int len = com1.BytesToRead;
byte[] buffer = new byte[len];
com1.Read(buffer, 0, len);
for (int i = 0; i < len; i++)
{
textBox1.Text += buffer[i].ToString("X").PadLeft(2, '0') + " ";
}
if (buffer[9] == 0x66 && buffer[10] == 0x88)
{
button6.Text = "开门";
button6.BackColor = Color.Green;
}
else
{
button6.Text = "禁止入内";
button6.BackColor = Color.Red;
}
for (int i = 0; i < len; i++)
{
textBox1.Text += buffer[i].ToString("X").PadLeft(2, '0') + " ";
}
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = "";
byte[] buff = new byte[] { 0xff, 0x55, 0x00, 0x00, 0x01, 0x01, 0x00, 0x50, 0x74 };
com1.Write(buff, 0, buff.Length);
label1.Text = "ff, 55, 00, 00 , 01, 00, 50, 74";
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button4_Click(object sender, EventArgs e)
{
textBox1.Text = "";
byte[] buff = new byte[] { 0xFF, 0x55, 0x00, 0x00, 0x03, 0x03, 0x01, 0x01, 0x0F, 0x30 };
com1.Write(buff, 0, buff.Length);
label1.Text = "读卡完成";
}
private void button5_Click(object sender, EventArgs e)
{
byte[] buff = new byte[] { 0xff, 0x55, 0x00, 0x00, 0x03, 0x04, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x48 };
com1.Write(buff, 0, buff.Length);
label1.Text = "注销完成!";
}
private void button6_Click(object sender, EventArgs e)
{
}
private void button2_Click_1(object sender, EventArgs e)
{
textBox1.Text = "";
byte[] buff = new byte[] { 0xff, 0x55, 0x00, 0x00, 0x01, 0x01, 0x00, 0x50, 0x74 };
com1.Write(buff, 0, buff.Length);
label1.Text = "ff, 55, 00, 00 , 01, 00, 50, 74";
}
}
}