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

Posted

技术标签:

【中文标题】如何从浏览器访问客户端 PC 上的设备【英文标题】:How to access devices on a client PC from a browser 【发布时间】:2010-02-01 18:02:36 【问题描述】:

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

【问题讨论】:

我见过的每个条码扫描器都可以用作键盘,因此无需额外设置即可在任何地方使用键盘。 这些设备更像是扫描仪而不是条形码阅读器。 【参考方案1】:

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

如果您向NSAPI 编写插件,一旦他们安装了它,您就可以访问用户可以访问的任何内容。当然,他们必须安装插件。

Flash 提供了对设备的大量访问。

【讨论】:

【参考方案2】:

这不是一件小事,并且没有标准化的 API(可能在仅限于 Internet Explorer 的 JScript/ActiveX 领域除外)。

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

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

【讨论】:

【参考方案3】:

可以在键盘和 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()

【讨论】:

【参考方案4】:

根据您要执行的操作,Silverlight 和 Adob​​e 在此领域的能力都有限。网络摄像头、Silverlight 4.0 中的打印等。但是,这并非易事。 Silverlight 4.0 和 Flash 都支持条码扫描。

【讨论】:

以上是关于如何从浏览器访问客户端 PC 上的设备的主要内容,如果未能解决你的问题,请参考以下文章

从通用浏览器访问智能卡的架构?或者:如何弥合从浏览器到 PC/SC 堆栈的差距?

可以使用 HTML5/JS 远程访问移动设备上的文件吗?

pc网站如何能转化成让手机访问的网站

从 Windows Virtual PC XP 模式访问托管在 Windows 7 上的网站

从使用蓝牙/wifi 连接的移动设备访问 PC 上的本地主机

移动web终端 viewport设置