繁体   English   中英

如何使用javascript通过客户端串口进行通信?

[英]how to communicate through serial port on client side using javascript?

最近收到了一个请求,要求通过我的网页向客户端机器上通过串口连接的设备添加通信。

我做了一些谷歌搜索,发现带有node-serialport的node.js似乎是javascript方式。 但是,就我而言,设备实际上是连接到客户端的计算机,而不是服务器。

我的问题是如何在这个意义上实现node.js? 由于代码是在客户端浏览器上运行的,我是否可以在我的网页上“嵌入”node.js?

或者还有其他替代方法吗? 虽然Applet和ActiveX不合适。

谢谢

更新:曾设法说服客户从网上加载applet,因此我们将通过applet路由。 谢谢大家的好消息! =)

浏览器中的 JavaScript只能访问浏览器提供的API:它位于浏览器沙箱中,它(正确地)无法访问客户端文件系统或其他硬件。

这与node.js不同,node.js是一个可以访问各种其他文件系统API的服务器实现。

要“突破”浏览器,您必须使用某种浏览器扩展。

您必须创建插件,小程序或客户端应用程序,才能在将数据发送到服务器之前将数据导入客户端的Web浏览器。

您可以创建一个小应用程序,读取创建.js文件的客户端计算机的串行端口,然后您的网页包含客户端计算机上“动态”创建的js文件的src,然后您的网页就可以访问串口以迂回的方式。

这就是GPSGate的工作原理: http ://gpsgate.com/developer/gps_in_browser/

另请参见此处: 如何从网页中的串行端口读取

以及基于Java applet的解决方案: http//code.google.com/p/java-simple-serial-connector/

http://code.google.com/p/java-simple-serial-connector/wiki/jSSC_Terminal

如果要从浏览器访问node.js函数,请尝试app.js。

这只能通过Active X或Java或Flash等插件来完成。 JavaScript中的代码仅与从浏览器提供的API一样强大。

想要向服务器发送HTTP请求吗? JavaScript可以做到这一点(取决于同源策略),因为浏览器具有XMLHttpRequest API。 想要查询当前在操作系统上运行的进程? JavaScript无法做到这一点,因为没有浏览器提供API来查询操作系统正在运行的进程。

我所知道的浏览器没有实现任何类型的JavaScript API来执行串口操作,因此没有使用插件就无法实现。

然而,这并不排除某天可能存在这样的API: getUserMedia函数可以从摄像头或麦克风中获取数据,理论上它也可以扩展以从其他设备获取数据。

另一个选项(具有安全权限的ActiveX或Java小程序除外)可能是Google Native Client和Pepper API,但这是否足以访问串口,我不知道。

Firefox扩展可以包含可以访问串行端口的本机XPCOM组件,您可能会发现已经有一种方法可以从浏览器chrome访问串行端口(扩展名为),因为安全令牌和智能卡系统支持串行读取器。 Firefox扩展也可用于提供下一个解决方案,这需要在系统上放置本机组件或应用程序。

你能告诉我们这里有什么浏览器和操作系统(以及为什么要排除ActiveX和Java)?

其他人建议通过某种协议暴露串口的本机运行代理。 您可以使用node,或python,或任何其他可以创建串行连接和套接字的语言。 要从浏览器应用程序访问代理,您需要授予页面特殊的安全权限,然后您可以将代理设置为HTTP或WebSocket服务器。 您还可以从代理服务javascript,该代理将授予脚本HTTP和WebSocket访问其作为代理的源服务器。 Google Chrome扩展程序可以使用其套接字客户端访问任何目标和端口。 另外,我认为可以在Google Chrome中设置配置以允许在某些页面或每个页面上使用此配置,同样允许网页使用本机客户端。

如果不了解您的目标,我无法确定最佳解决方案。

读取串口数据的另一个选择是在服务器端使用sockjs和sockjs-client-node,在客户端使用sockjs-0.3.js。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM