c# - 使用 USB RFID 读取器输入和后台处理

标签 c# winforms background-process hid rfid

我有一个大学项目,我必须在后台使用 RFID 读取器来跟踪员工的上类/下类情况。前台 winform GUI 处理日常事务,例如订单、报价等。因此,我需要能够不间断地使用该程序,同时跟踪员工的进出情况。我研究了后台工作人员、某种新的方式和输入抓取。但我似乎找不到任何有用的东西。 RFID 阅读器充当键盘,我可以知道它的名字。使用Raw Input

RFID 详细信息:RFID Reader Details

需要澄清的是,用户必须能够不间断地使用该程序(多种形式),同时来自 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/

相关文章:

android - 防止 Activity 在后台做某事

c# - 什么会导致 EntityCommandDefinition.ExecuteStoreCommands 中的 EntityCommandExecutionException?

vb.net - BackgroundWorker 事件处理程序

c# - Linq 到文本文件

vb.net - 当属性绑定(bind)到设置时,奇怪的拆分容器行为

linux - 使用 '&' 和 'wait' 时后台进程不会死亡

ios - 如何使用 Swift 配置后台应用刷新?

c# - 获取 ASP.NET 中两个等待已久的并发进程的正确进度更新

c# - 从调试进程 MainModule 获取符号

c# - 如何在 Unity 中为刚体对象制作动画