从RFID阅读器中提取数据
本文关键字:提取 数据 RFID | 更新日期: 2023-09-27 18:35:28
我正在从事食堂管理项目(在一家公司)。 我想在戴上 RFID 阅读器时通过他们的 ID 卡对用户进行身份验证。我已经浏览了几个网站,但它们不符合我想要的。我的问题是,我无法从RFID阅读器上的ID卡中提取序列号。任何人。请帮我解决这个问题..我正在使用Visual Studio 2012(Windows应用程序),我使用的语言是C#。我的代码如下:
private void button1_Click(object sender, EventArgs e)
{
RFID = new SerialPort();
RFID.PortName = "COM1";
RFID.BaudRate = 9600;
RFID.DataBits = 8;
RFID.Parity = Parity.None;
RFID.StopBits = StopBits.One;
RFID.Handshake = Handshake.None;
RFID.Open();
RFID.DtrEnable = true;
RFID.DataReceived += new SerialDataReceivedEventHandler(RFID_DataReceived);
}
private void RFID_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
String data = RFID.ReadExisting();
label8.Text += data;
}
我从来没有写过基于串行通信的东西,但可以尝试帮助你,因为没有更好的选择:)
阅读有关SerialPort.DataReceived事件的ms文档(http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived%28v=vs.110%29.aspx)我有以下嫌疑人:
-
DataReceived 事件在辅助线程上引发 那么,是否调用了该事件? 是否同步线程?
-
上面链接的页面包含一些简单的示例,该示例将接收到的数据打印到控制台上。请尝试构建它并运行。它有效吗?否则,您可能遇到硬件、设备驱动程序或设备设置问题。
希望这有帮助
我所做的是使用计时器而不是事件处理程序:
private void scale_com_port_open()
{
try
{
serialPort2.PortName = "COM9";
serialPort2.BaudRate = Convert.ToInt32("115200");
serialPort2.DataBits = Convert.ToInt32("8");
serialPort2.StopBits = (StopBits)Enum.Parse(typeof(StopBits), "One");
serialPort2.Parity = (Parity)Enum.Parse(typeof(Parity), "None");
serialPort2.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
然后,我添加了一个计时器,该计时器每隔 100 毫秒触发一次。
private void timer3_Tick(object sender, EventArgs e)//database inserting rfid tag ID
{
string rfid_no = "";
textRFID.Text = "";
try
{
if (serialPort2.IsOpen)
{
string rfid_data = serialPort1.ReadExisting();
if(rfid_data == "") {}
else
{
textRFID.Text = rfid_data;
timer3.Enabled = false;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
这每次都对我有用
DataReceived Event 永远不会调用,因为您必须调用 RFID。读取存在();第一。您可以拨打 RFID。读取存在();在循环中的单独线程中,只要您得到 exiption,就可以读取。如果发生异常,则读取器可能已断开连接或发生其他情况。顺便说一句:您使用的是哪种RFID阅读器?