HTML5可以与外围设备(如扫描仪和信用卡读卡器)进行通信吗?

我的公司编写的软件安装在客户端计算机上执行销售点交易。软件与各种外部外设(收据打印机,条形码扫描器,信用卡读卡器等)接口。我们使用我们在Visual Studio中使用Microsoft OPOS库创建的winforms应用程序,该应用程序又与我们的云服务器(即客户端 – 服务器模型)通信。

在这个模型中有明显的低效率,主要是更新。我正在研究其他方式通过网络与这些外围设备通信,最好通过网络浏览器。据我所知,Java是唯一能够做到我们正在寻找的技术(通过applet),我认为Adobe Flash也可以(通过Air平台)。这些都是可行的,但不是优选的,因为我们想在支持Web的移动设备上运行我们的软件。

有没有人有建议其他方式通过网络与外部设备通信?

解决方法

不是那么简单…还没有,但种类

所以答案是,像生活中的大多数其他事情,复杂。如果你想要“简单”的答案,它是肯定的,不,是的和是的。容易理解吗?

更新2014年11月3日:从原来的帖子已经过了两年多,但答案现在大部分是一样的。然而,我们在几个领域更接近于您的初始目标。

更新2016年12月28日:另一对夫妇年了,另一个更新。这一个将更多地集中在两个新的发展比任何其他。请参阅“完整设备API”下的新“WebUSB& Web蓝牙”部分。但答案保持不变。

所以,会有一些方法去解决这个问题,我会倒退。也就是说,我将从你想要的,它的样子,为什么你不能拥有它开始。然后我会努力你的东西,为什么你可能不想要它。但首先,一些背景。

背景

HTML5规范已进入“推荐”状态。这意味着HTML5是为它的外观设置的。但是,我将使用HTML5,以同样的方式,每个营销人员在世界上决定是最好的。也就是说,我不会谈论HTML。好吧,我会的,只要你会从一个HTML页面使用它,但不是真的。我实际讨论的是JavaScript(JS)和that’s a horse of a different color.但对于所有的意图和目的,我们把它都放在同一标题下的HTML5,现在已决定意味着“闪亮和新”。

此外,我正在讨论的项目将有所不同的支持。一些是非常依赖于浏览器的项目(如Chromium特定的实现),有些是更多的标准驱动的项目,可能没有实现或实验它们的浏览器。我会尝试区分两者,因为我一起去。

完整设备API

状态:传入,但未准备好

能够从浏览器访问设备正在缓慢但稳定的进步。现在,许多现代浏览器可以访问一些更常见的设备,如the cameragamepads,但它们都是高级API。 Browser vendorsthe standards groups和许多涉及网络的公司都试图使webapps与您的本地应用程序一样强大。

但你正在寻找的API仍在进行中,有一个方法。对于你的特殊情况,以及将webapp连接到大多数设备的更一般情况,我们还有几年的时间可以使用。如果你想看看什么真棒的东西在这个领域,这里只是一些选项可以帮助你直接:

> Web Near Field Communication (NFC) API
这不幸可能现在在水中死了。但是它似乎最初的一些人在W3C(大多是英特尔看起来)看着添加一个NFC API的网络。
> Media Capture Streams
WebRTC组正在编程访问媒体流,如相机,这将允许集成像条码扫描或其他功能的东西。这已达到CR状态,为available in browsers,但其自身的帮助较少。
> Web Bluetooth
如果您拥有支持蓝牙功能的工具,此API可以帮助您通过能够监听和连接的计算机和设备与他们进行连接。目前的主要驱动因素似乎是Chrome团队,包括实验性实施,但我不会考虑它随时随地使用(请参阅“WebUSB& Web蓝牙”部分)。
> WebUSB
这将允许完全访问低级USB信息,包括列出设备并与其交互。与Web BlueTooth相同,这似乎是目前的Chrome宠物项目,但我也不会依赖它(参见“WebUSB& Web蓝牙”部分)。
> Network Service Discovery
如果您在网络上有其他设备或项目广播和使用HTTP,此API将允许您发现和与这些服务进行交互。没有浏览器实现,但它是在W3C的工作草案。

最初,Mozilla正在推动其中的一些,因为Boot2Gecko(或Firefox OS)。然而,随着该项目正式取消,我们在这些领域现在没有看到很多进步。

然而,Chrome团队的成员似乎已经决定开始,并开始不仅努力这些,而是​​把它们放在浏览器。这导致我们…

WebUSB& Web蓝牙

Like sausages,it’s better to not know how Web Standards are made
-Abraham Lincoln (probably)

在这一领域有一点点嗡嗡声,因为它看起来像Chrome团队在这些作为实验功能,并开发了自己的规范。这是伟大的!也许不是你的方式,你希望。

每个浏览器供应商和W3C贡献者组都有自己的风格,并以自己的方式对规范做出贡献。结果通常是一个相当合理的规范,浏览器已同意。但从无到有的东西是…凌乱。真正的凌乱。这是一个相当一个过程很多次。它并不总是导致一个好的规范(是的,我说的是弗洛里安妥协…),但即使它,它需要一段时间。

但是,似乎谷歌自己开发了这个版本的规范。而且,根据我的经验,Google的规范方法总是有点…好…将我的个人意见放在一边,我们会说“gung-ho”。他们往往只是潜水深入到底。这似乎是他们在这里做的。

我非常怀疑这些规范或实现将看起来像这样当他们成为标准。这没有什么错。这是过程的一部分。但我不会依靠这个实现或开发任何代码或产品反对它。这是一个前所未有的功能在网络上,所有的浏览器供应商都想在这个大的说话。

也就是说,这实际上是好的。谷歌经常做的事情(更好或更坏)与这样的情况是强制谈话,它可以推动事情。而且在浏览器中提供一个功能,即使是一个实验功能,也可以根据需求提高热量。因此,我们可能会在这一领域看到更多的进展。

PhoneGap Apache Cordova。你知道,为你的手机

状态:不完整的功能和电话

Apache Cordova,之前是Adobe PhoneGap,是一种以HTML,CSS和JS编写程序的方法,它允许您访问电话等较低级别的功能,并可跨设备编译。这将是一种实现您的程序的方式,但它将是一个电话应用程序,不一定是一个桌面。一个选择,考虑,我想到的东西我会提到。

Cordova已经实现了一些上述功能,但没有一些更强大的像NFC或蓝牙。

Native-App解决方案(适用于Windows 8)

状态:可能,但操作系统和桌面应用程序

Windows 8提供了在HTML和JS中构建应用程序的能力。这将允许您通过their API轻松访问操作系统上的较低级别的功能。从它的外观,它是相当广泛,你可以做很多。但是,您提到了跨OS支持,这显然限制了一个操作系统。

它是如此闪光!

状态:死亡/死亡,不可能作为一个网络应用程序

Flash将不能通过Web直接访问系统。您可以创建一个AIR应用程序,但这将失败的基于Web的目的。此外,移动设备上的Flash支持,以及在网络上看起来,正在减少。

NodeJS

状态:可能有点痛苦,只有可能作为一个桌面应用程序

NodeJS和JS应用程序在过去几年一直是一个热门话题。我没有在我原来的帖子中讨论它,因为我觉得它还不是那里。然而,事情已经发展,它更接近于准备好这种事情,并有越来越多的用户群的支持和力量。也就是说,对于你的特殊情况,我不建议使用它。它必须在用户计算机上是本地的,并且由于NodeJS(以及类似的引擎)在目前的情况,它将需要大量额外的配置和设置,这会使事情复杂一点。

所以你可以使用HTML,CSS和JS与NodeJS或类似的引擎构建一个应用程序,并具有低级别的访问你所需要的,但它必须是本地的,它需要更多的工作,我相信你想做的每一个您希望为客户安装的时间。

…现在我在哪里?

那么,这会离开我们呢?好吧,简单:如果你想要一个单一的语言/一组代码作为你的代码库,HTML / CSS / JS不是一个伟大的选择…但。但他们可能有一天。现在,您的选择仅限于您认为最适合您的客户的选择。 Java是你列出的一个稳定的选项,但显然有自己的缺点。随着网络的发展,我认为我们会看到许多非常酷的东西从新的功能,但我们有一个方法去。

更多阅读:

> 70014
> HTML5 Apps on Windows 8
> Wikipedia list of projects built using JS

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码
HTML5使用DOM进行自定义控制
使用HTML5 Canvas绘制阴影效果的方法
使用PHP和HTML5 FormData实现无刷新文件上传
如何解决HTML5 虚拟键盘出现挡住输入框的问题
HTML5中div和section以及article的区别分析
html5和CSS 实现禁止IOS长按复制粘贴功能
html5 touch事件实现触屏页面上下滑动
canvas 模拟实现电子彩票刮刮乐的代码
HTML5 Plus 实现手机APP拍照或相册选择图片上传的功能
Android自定义环形LoadingView效果
HTML5 canvas绘制五角星的方法
html5使用html2canvas实现浏览器截图
使用Canvas处理图片的方法介绍
利用Canvas模仿百度贴吧客户端loading小球的方法