【问题标题】:Javascript interface with RS-232 Serial Port带有 RS-232 串行端口的 Javascript 接口
【发布时间】:2016-12-14 15:18:09
【问题描述】:

我目前正在从事一个涉及 4 端口 A/V 开关的项目。此开关可通过 RS-232 控制。

将与交换机接口的计算机运行 Vista。我想创建一个侧边栏小工具,它有 4 个按钮 - 交换机上的每个端口 1 个。当用户按下按钮时,它会切换到该端口。

我做了一些谷歌搜索,似乎没有一个很好的方式来在 javascript 和 rs-232 之间进行接口。

有人对我有什么建议吗?

谢谢!

【问题讨论】:

  • 检查交换机上的说明 - 有时会有选择其中一个端口的组合键。 (例如 )除此之外,我认为其他人是正确的 - JS 与机器特定的东西是隔离的。
  • 你说的是在浏览器中执行的 JavaScript 吗?

标签: javascript serial-port windows-vista


【解决方案1】:

你喜欢复杂的黑客攻击吗?

安装网络服务器。使用 CGI、Python、PHP、Perl 或其他方法从 Web 服务器上的页面控制串行端口。

将控件指向网页。

【讨论】:

  • 这并不复杂。谁“-1”d 这是愚蠢的。这比编写 ActiveX 或 XPCOM 代码将垃圾发送到串行端口要简单得多。
  • +1;它甚至不一定必须是一个完整的 Web 服务器,可能只是一个 C 守护程序(我猜 C 是访问串行端口的最简单方法),它在套接字上侦听并说出足够接近 HTTP 的内容来愚弄浏览器;-)
  • 我不确定这种方法是否真的会让事情变得更容易。第一个请求锁定串行端口。当另一个请求在第一个完成之前进来时,你想发生什么?我更多地按照 Kieron 所描述的思路进行思考。
  • 请求排队 - 第一个请求不会永远占用(超时将强制执行。当然,串行端口服务器部分必须处理这种情况,这与打印文档的问题相同- 一个硬件,有多个用户。
【解决方案2】:

我认为您需要在两者之间添加一个 Java 或 Active-X 层。 JavaScript 与操作系统很好地隔离(故意)。

【讨论】:

    【解决方案3】:

    特别是Javascript,或者只是通过某种方法从浏览器中获取?和哪个浏览器? (IE 还是 Firefox?)使用 XUL + javascript 的 Firefox 插件非常简单,尽管您仍然必须在 XPCOM(Mozilla 的 ActiveX/COM 等效项)中实现一些东西才能使用 RS232。

    或者,您可以使用JSDB 作为即兴网络服务器(在本地计算机的备用端口上)。在 JSDB 中使用 RS232 端口非常容易:

    c:\>jsdb
    js>S=new Stream('com1://115200');
    com1
    js>S.write('\x00');    // send ASCII character 0 to the serial port
    1
    js>
    

    因此,您的浏览器端实现可能只是您最喜欢的书签/链接/事物链接到http://localhost:9999/comport/1,其中 9999 是 JSDB 正在侦听的端口,“1”是串行端口开关。 JSDB 代码会监听端口并在解析来自浏览器的 GET 请求后发送相应的 RS232 命令。

    【讨论】:

    • 很好,是否也可以设置奇偶校验超时等?
    • idk,抱歉,已经快 10 年了。在 jsdb.org 上询问 Shanti Rao,他是创建者。今天我可能会使用 Python。
    【解决方案4】:

    RealTerm 具有广泛的 COM 接口,并且可以通过 Windows 上的 JavaScript 轻松控制。 SourceForge downloads page 的版本为 2.0.0.57,i2cchip.com 有一个版本 2.0.0.70。

    默认安装的“examples”子目录中有一个JavaScript示例。

    遗憾的是,JavaScript 示例似乎已从更高版本中删除4 可能仍然可以这样做,但没有示例。

    【讨论】:

      【解决方案5】:

      我没有解决方案,但这可能是一个开始。

      1. 签名的 Java 小程序可以让您访问系统
      2. 使用 RXTX (Java Serial COM API) 连接串口
      3. Applet 需要将文件安装到 jre/ext 文件夹。完成后重启应用。

      现在,如果您在自己的机器上运行 javascript,您可以使用 HTA 来完全访问系统。

      【讨论】:

      • 您发布以I don't have a solution, but here could be a start of one 开头的答案???最多一条评论
      【解决方案6】:

      您可以尝试查看 V8 之类的东西,并为 C 库编写一个小包装器以向 VM 公开。

      【讨论】:

        【解决方案7】:

        您需要在系统上安装一个 RS-232 ActiveX 组件,然后在侧边栏小部件的 javascript 代码中创建一个对象。请注意,从 ActiveX 组件创建对象没有标准,这仅在 JScript 中可用,JScript 是我们众所周知的 Javascript 语言的 Microsoft 实现。

        【讨论】:

          【解决方案8】:

          很抱歉根据我自己的问题发帖 - 我还没有注册,所以现在我无法编辑它。

          我想为该任务实现一个 Vista 侧边栏小工具。不幸的是,看起来这些基本上只是带有 javascript 的 html 文档,所以看起来这对我来说不是一个好的解决方案。我可能只会写一个小 .Net 应用程序之类的。

          感谢您的所有意见。如果还有人有想法,我会采纳的。

          【讨论】:

            【解决方案9】:

            AFAIK,Vista 小工具的运行时支持使用签名的 ActiveX 控件。您也可以使用 Java。您可以为 .Net 创建一个 ActiveX 包装器,它对串行设备有相当多的支持。大多数情况下,ActiveX + Serial 通信仅限于商业控制。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-06-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-07-17
              • 2021-09-06
              • 1970-01-01
              相关资源
              最近更新 更多