如何从浏览器访问客户端PC上的设备

问题描述:

从浏览器访问客户端PC上的设备(条形码阅读器,扫描仪等)的各种方法有哪些?我意识到我的用户可能需要一个插件。这些设备可能具有特定于其设备的API;如果可能,我想利用它们的API(也许Java,也许C,也许命令行)。如何从浏览器访问客户端PC上的设备

+0

我见过的每款条形码扫描器都可以作为键盘使用,所以它可以在任何地方使用键盘,而无需额外的设置。 – 2010-02-01 18:13:07

+0

这些设备与扫描仪相比更像条形码阅读器。 – Upperstage 2010-02-01 18:14:44

A signed Java applet可以独立于平台访问大多数事物。用户必须安装Java,并且必须允许签名的小程序运行。

如果你编写插件到NSAPI,一旦他们安装了它,你就可以访问用户可以访问的任何东西。当然,他们必须安装插件。

Flash提供了相当多的设备访问权限。

+0

很好的回答;谢谢。 – Upperstage 2010-02-01 18:13:29

这不是一件简单的事情,它没有标准化的API(除了可能在限于Internet Explorer的JScript/ActiveX区域中)。

要通过TWAIN界面访问扫描仪,请查看this question了解我所知道的所有常用选项。

大部分其他事情都归结为自定义编程的Active-X和其他插件。我已经看到了SO上讨论过的商业条码扫描器插件,但现在找不到问题。

+0

NSAPI非常标准。 – 2010-02-01 18:12:07

+0

很好的链接,谢谢。 – Upperstage 2010-02-01 18:12:22

许多条形码阅读器可以插在键盘和PC之间,所以扫描的条形码直接进入键盘缓冲区。其他设备可以插入串行端口或具有仿真串行端口的驱动程序。以下python代码会将数据从实际或虚拟COM端口复制到活动窗口的键盘缓冲区。 COM端口号是硬编码的,但可以很容易地更改。

import serial 
import SendKeys 

ser = serial.Serial(2) 
print ser.portstr 
while 1: # exit loop when ctrl/c pressed 
    line = "" 
    while 1: 
     char = ser.read() 
     if char == "\r": break 
     line = line + char 
    print line 
    SendKeys.SendKeys(line, 0) 
ser.close() 

根据你想要做的事情,Silverlight和Adobe在这个领域都有一些有限的能力。 WebCams,在Silverlight 4.0中打印等等。但是,这并不重要。 Silverlight 4.0和Flash都支持条形码扫描。