【问题标题】:nodejs - reading from the serial portnodejs - 从串口读取
【发布时间】:2011-08-27 13:03:06
【问题描述】:

我一直在寻找这个问题的答案......

基本上,我想从串行端口(在这种情况下,通过 USB)读取数据。我查看了 node-serialport 模块,但在第一个结果形成串行端口后它一直停滞不前。我希望它在收到数据时会吐出数据。好像缓冲区已满,需要以某种方式刷新?

我稍微修改了我在这里找到的演示中的代码 - https://github.com/voodootikigod/node-serialport/tree/master/tests

这是我的代码:

    var sys = require("sys"),
    repl = require("repl"),
    serialPort = require("serialport").SerialPort;

    // Create new serialport pointer
    var serial = new serialPort("/dev/tty.usbmodem1d11" , { baudrate : 9600 });

    // Add data read event listener
    serial.on( "data", function( chunk ) {
        sys.puts(chunk);
    });


    serial.on( "error", function( msg ) {
        sys.puts("error: " + msg );
    });

    repl.start( "=>" );

我使用的是 Arduino,因此波特率是 9600。

任何帮助都会很棒,干杯,

詹姆斯

【问题讨论】:

  • 你忘记了var前面的serial!您是否尝试过添加其中一个解析器?
  • 谢谢,我刚刚添加了。我已经尝试过其他解析器(用于新行),但这似乎也没有奏效。
  • @James 在构造函数中还有一个缓冲区大小选项。试着往上抽! (默认为 255)。
  • @Raynos,也试过了 :(,谢谢!
  • @James 在--debug 中编译,然后尝试调试该模块或引发 github 错误

标签: node.js serial-port


【解决方案1】:

我也遇到了串口读取的问题。 这是由于 node.js v4.7 中的一个错误(请参阅this issue

但是在切换到旧版本的 Node.js (v4.0) 后它仍然有效。

它也可能适用于最高 v4.6 的版本,但我尚未验证。

【讨论】:

  • 好的,我通过将我的 FTDI USB 串行驱动程序更新到 2.2.16 并将节点更新到 0.5.0-pre 来解决这个问题 :)
【解决方案2】:

节点串行端口的作者。我已经找到了这个问题,这是由于 node.js 中的 IOWatcher 的编译问题。我已经修改了从串行端口读取的策略,现在它应该在所有情况下都按设计运行。请确保您使用的是 node-serialport 0.2.6 及更高版本。

现在出去搭建JS控制的机器人!!!

【讨论】:

  • 另外,您不需要 repl - 串行端口将保持事件循环打开,直到您关闭它。
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 2015-08-15
相关资源
最近更新 更多