我有一个大学项目,我必须在后台使用 RFID 读取器来跟踪员工的上类/下类情况。前台 winform GUI 处理日常事务,例如订单、报价等。因此,我需要能够不间断地使用该程序,同时跟踪员工的进出情况。我研究了后台工作人员、某种新的方式和输入抓取。但我似乎找不到任何有用的东西。 RFID 阅读器充当键盘,我可以知道它的名字。使用Raw Input
需要澄清的是,用户必须能够不间断地使用该程序(多种形式),同时来自 RFID 读取器的任何输入都必须记录在后台列表中。
我对后台工作人员、多线程和输入抓取很陌生,所以我会感谢一些详细的帮助。另请询问您是否需要我提供更多详细信息。
最佳答案
我这里的 RFID 读取器是一个 NordicID Sampo,它带有一个 API,可以启动一个读取数据的线程。您可以通过创建一个任务来构建它,该任务从该线程添加的缓冲区中读取数据。然后您可以将该数据传递到表单或通过电子邮件发送或其他方式。
您的扫描仪可能有类似的机制。
示例: StartStreaming 是设备 API 的包装器,可启动读取设备数据的线程。
class RFIDReader : IDisposable
{
public void StartStreaming()
{
if (RFID_ConnectSerialPort(mAPIHandle, 4, 115200) == 0 || RFID_ConnectAutoUSB(mAPIHandle) == 0)
{
RFID_StartInventoryStreaming(
(value, antenna) => {
mAntennas[antenna].Add(value);
});
}
}
/////// MORE FUNCTIONS
}
客户端代码启动自己的任务并定期检查数据:
static void Main(string[] args)
{
Action a = new Action(() =>
{
using (RFIDReader scanner = new RFIDReader())
{
scanner.StartStreaming();
while (true)
{
foreach (string s in scanner.GetData(0))
{
WriteLine($"antenna0: {s}");
}
Thread.Sleep(1000);
}
}
});
Task t = Task.Factory.StartNew(a);
t.Wait();
}
关于c# - 使用 USB RFID 读取器输入和后台处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38849888/