访问扫描仪,条形码,相机与asp.net应用程序

时间:2012-05-24 00:54:07

标签: asp.net barcode-scanner

我有这个奇怪的要求从asp.net应用程序访问扫描仪,条形码阅读器,相机等。由于这些是本地资源,我知道不可能这样做。我想知道是否还有其他解决方案来解决这个问题。

我正在考虑创建一个将在本地系统上运行的Windows服务,并打开一个端口并监听它并完成所需的工作。我想知道是否有办法使用JS或其他库或activex从asp.net页面向本地端口发送某种消息。

如果你有完全不同的解决方案,我会全力以赴。

2 个答案:

答案 0 :(得分:2)

我们通过创建一个小应用程序解决了一个类似的问题(连接到串口的票据打印机)(TCL / TK原创,因为它在Win / Mac / Lin上很好地运行,但是现在C#/ .NET从单声道长大后),

  • 获取用户/密码
  • 使用网络请求创建会话。
  • 打开浏览器
  • 将URL中的会话令牌作为锚点(http [s]://foo.bar/baz?x = y #sessiontoken)

这种方式永远不会通过网络传输,但可以在客户端的JS代码中使用。

帮助应用程序启动浏览器后,它使用长轮询和会话令牌(浏览器和帮助应用程序已知)与Web服务器通信 - 作为客户端应用程序,它可以很自然地与外围设备通信

以这种方式打印的100张票据中有100张...

修改 是的,我知道这会变得越来越长,但我需要(并被要求)详细说明。

如果你想避免使用ActiveX / Silverlight /无论什么路线,我强烈建议,你需要4个玩家:

  1. 网络服务器
  2. 浏览器
  3. 帮助应用程序(“代理”)
  4. 设备(票务打印机,条形码扫描仪,无论如何)
  5. 你的基本问题是,1.需要与4.谈话,但不能。因此,您选择两条并行路径:为用户提供的通信在服务器和浏览器之间进行交换,而用于设备的通信则在服务器和代理之间进行交换,后者将其中继到设备(当然,反过来)。

    代理是一个非常简单的应用程序,它通过操作系统设备与设备进行通信(如何完成此操作取决于设备),并通过HTTP请求与Web服务器进行通信。

    取决于您需要的信息流方向:

    • 简单地说,便于从设备到服务器的信息流 在设备上有活动触发webrequest。 (输入设备,例如条形码扫描仪)
    • 为了便于从服务器到devide的信息流,请使用长轮询。 (输出设备,例如票据打印机)
    • 两个方向都做(服务器触发的输入设备,例如相机)

    现在剩下的问题是,如何将浏览器中的人为操作与设备操作相关联 - 简而言之:服务器如何将您在 浏览器中选择的故障单发送到您的票据打印机,而不是接下来的任何打印机长轮询。

    要解决此问题,使用会话ID是很自然的 - 但它需要让浏览器和代理知道相同的会话ID。为此,您需要将它们从一个传递到另一个。由于您无法将其从浏览器传递给代理(或者此讨论没有实际意义),您需要以相反的方式进行通信 - 并且URL中的锚点是实现此目的的工具。您执行以下操作:

    • 用户启动代理(不是浏览器!)并输入其凭据
    • 代理程序调用向服务器发送登录的Web请求,并获取会话令牌(请使用一些基本加密或转到HTTPS)
    • 代理然后启动浏览器(例如,通过执行cmd.exe /c start "http[s]://domain.tld/start.aspx?x=y#sessiontoken"
    • 由于会话令牌是一个锚,它不会通过网络发送,但可用于浏览器双面代码...... Bingo!
    • 现在两个并行路径是打开的:人类请求的浏览器,知道会话令牌,以及代理现在进入上述模式,

答案 1 :(得分:0)

您可以使用ActiveX来执行此操作,或者使用Silverlight(或Flash)提供有限的支持(至少根据我的经验,相机,麦克风和扫描仪)。

但是,考虑到之前与您尝试做的事情相关的经验,我建议您更好地购买预建的SDK。

成像:

http://www.viscomsoft.com/

条形码:

http://www.tec-it.com/software/barcode-software/tbarcode/barcode-generator/Default.aspx