从浏览器为EPOS发送数据USB端口

时间:2014-04-02 20:52:53

标签: javascript google-chrome browser usb controls

棘手的问题,我不确定它是否可以解决。

我正在开发一个完全在浏览器中运行的EPOS系统(更喜欢谷歌浏览器)

有几位顾客提到明显需要它能够在完成销售时打开抽屉。

用户按下"保存销售"按钮(顺便说一下,使用AJAX提交,因此如果Javascript可以在解决方案中使用,那就方便了!)然后生成发票PDF。按下按钮,为了达到我们的需要,我需要能够向USB端口发送脉冲,以触发其抽屉上的电磁阀。

浏览器是否可以通过这种方式与USB端口通信?

如果可能,对此的扩展还将使功能也能通过USB向信用卡终端发送交易总额。

看了一下,我怀疑,我需要创建一个小软件,用户下载到他们的本地机器,然后浏览器与之通信,这个本地应用程序与USB通话,但我是害怕我不知道从哪个方向开始。

非常感谢任何指针,教程或帮助!

提前致谢

编辑:

我发现了这个: https://developer.chrome.com/apps/app_usb

但我认为我说这只适用于我开发Chrome应用而不是Chrome浏览器的网站?

2 个答案:

答案 0 :(得分:0)

如评论中所述,您可以设置在客户端上运行的本地服务器。该服务器应具有访问USB端口的适当权限。

“服务器”,我不是指像nginx这样的网络服务器,而是指具有特定目的的应用程序。这个应用程序的确切语言并不重要,但它必须提供USB库。示例跨平台库:

这意味着您必须自己实施USB设备驱动程序。如果您的客户已有程序(例如eject-drawer.exe)或不同的API /接口(例如/dev/theEPOSdevice),请尝试使用这些抽象。如果USB设备适合某个设备类,您也可以选择使用该类定制的库。对于USB HID,您可以使用HIDAPI(python bindingnode.js library)。

假设客户端服务器在http://localhost:8080/上运行,并且您的webapp在http://app.example.com/上运行。你有一些沟通的选择:

  • localhost:8080上设置apprioriate CORS标头,并使用“常规AJAX”电话。
  • localhost:8080上的iframe中加载app.example.com并使用postMessage API来促进跨域通信。

最后一部分并不是特别困难,您可能会花一些时间在上半部分,需要与USB设备连接。祝你好运!

答案 1 :(得分:0)

嗯,可以使用VB中的签名ActiveX来解决。或Java Applet。在权限允许的情况下,他们中的任何一个都可以访问USB设备。 Java applet是多平台的,所以它们应该是你的首选。

这个解决方案比运行盛放的http服务器更轻量级,而且更容易维护,因为所有代码都位于同一个地方,恕我直言。

有很多关于如何通过互联网上的任何一种语言通过USB连接发送数据的教程,所以我不会发布任何示例代码。