0

在 OS X 的节点上运行,我正在尝试使用node-serialport与 Arduino 对话。使用 Arduino IDE 的串行监视器或 OS X 实用程序SerialTools时,与 Arduino 的所有通信都按预期工作。但是,当只是运行我的节点应用程序时,node-serialport 告诉我连接成功,但我没有得到通信。如果我首先使用 Arduino IDE 的串行监视器或串行端口连接到 arduino,然后运行我的节点应用程序,节点应用程序使用节点串行端口发送和接收数据就好了。

我不熟悉串行通信,但似乎其他串行实用程序能够正确启动连接(然后可用于 node-serialport),但 node-serialport 无法自行连接。

有没有办法获得绝对所有的连接信息,所以我可以将实用程序的成功连接与 node-serialports 非工作连接进行比较?

关于为什么会发生这种情况的任何其他想法?

4

1 回答 1

0

我有一个可行的解决方案,但不幸的是没有完整的解释。查看一些相关问题,例如DTR/RTS 发送到基于 FTDI 的 Arduino 板后发生了什么?,我确定即使只是重新启动节点应用程序(而不是需要另一个串行连接应用程序),节点也能够通过串行端口进行通信。我超出了我的深度,但我怀疑最初建立 RTS 连接会重新启动 arduino,并且只有在发生这种情况之后,节点串行端口才能通过连接进行通信。

我的解决方法是在尝试第二个串行端口连接之前简单地给 Arduino 一些时间来重置,这可行。

var firstConnect = true;
serialPort.open(function (error) { 
    if (firstConnect){
        firstConnect = false;
        //First connection, letting Arduino reset
        setTimeout(function(){serialPort.open()},4000)
    } else {
        //Second connection, which will work
        serialPort.on('data', function(data) {
            //data parsing function
            //...
        }
    }
});
于 2015-04-19T23:12:59.493 回答