【问题标题】:How to execute a WINFORM when card is swiped on a card swipe machine刷卡机刷卡时如何执行WINFORM
【发布时间】:2013-10-06 18:19:43
【问题描述】:

我正在尝试为读卡器构建一个在后台运行的窗口服务,我将在文本框上获取卡的数据。我的问题是: 当有人在读卡器上刷卡时,窗口服务 WINFORM 应该在文本框中获取卡的数据。我怎样才能做到这一点。

或者,

如果有人能告诉我如何在刷卡时执行 WINFORM,那也可以

谢谢

【问题讨论】:

  • 你的问题很模糊。如果你写过考勤软件,修改一下就可以显示刷卡信息了。如果没有,您将必须指定该软件的工作方式,并且可能会设法将信息转发到该应用程序。

标签: c# winforms point-of-sale


【解决方案1】:

Windows 服务不应该向用户显示任何类型的 UI,它们完全作为后台任务运行,不接受用户的输入,也不向它们显示任何输出或状态。如果您需要服务与用户“交谈”,通常的做法是将项目拆分为 2 个不同的程序,一个是服务本身,它是一个无需 UI 的东西,它进行后台处理,另一个是普通用户应用程序,可能在登录时运行,显示通知并与服务通信。还要考虑到服务在注销和登录后仍然存在,并且在给定时间可能有许多用户登录,因此向任何人显示对话框是没有意义的。

我的建议是将服务变成一个普通程序,安装程序配置为在启动时运行,它会监控读卡器并显示询问用户详细信息的弹出窗口。由于除了监控之外不会有任何后台工作,而且如果表单是绝对需要的,那么在没有用户登录的情况下进行监控是没有意义的,我认为服务不是最好的选择。

【讨论】:

    【解决方案2】:

    我见过两种读卡器:

    1 - 插入您的键盘端口并充当键盘(也可以插入 USB 端口,但仍模拟键盘)。刷卡时,信息将写入当前具有焦点的任何应用程序和文本字段。

    2 - 具有某种硬件驱动程序(很可能是 USB 驱动程序,可能是串行或其他)。

    如果您不确定自己拥有的是哪个,请打开记事本,确保它有焦点,然后刷卡。如果详细信息显示在记事本中,那么您有 #1。如果他们没有,那么你可能有 #2

    如果您的读者是第一名,那么您可以将一些代码放入 Textbox 的 TextChanged 事件中以执行您需要的操作(我假设您可以按照您所说的构建应用程序将代码添加到应用程序)。

    如果您的读者是#2,那么它真的取决于它使用的驱动程序。有些可能会提供可以集成的 API,但您需要查找文档。

    您有读卡器的型号和制造商吗?

    【讨论】:

    • 制造商:MagTek 型号:21040145。我已经完成了与#1 完全相同的操作,但是要实现这一点,我需要打开一个应用程序来获取卡的数据。但是这里需要在不打开任何应用程序的情况下获取数据。可以实现吗?
    • 您可以尝试使用系统范围的键盘挂钩。这是一篇关于在 C# 中实现的文章:blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx。但由于安全原因,这不适用于 Windows 服务:social.msdn.microsoft.com/Forums/vstudio/en-US/…。将您的应用程序构建为 WinForms 应用程序并将其配置为自动启动是否足够好?它可以在任务栏的通知区域运行。
    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多