首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅当另一个应用程序已连接到端口时,node-serialport才会与Arduino通信

仅当另一个应用程序已连接到端口时,node-serialport才会与Arduino通信
EN

Stack Overflow用户
提问于 2015-04-20 03:51:37
回答 1查看 191关注 0票数 0

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

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

有没有一种方法可以获得所有的连接信息,这样我就可以将实用程序的成功连接与节点串行端口的非工作连接进行比较?

关于为什么会发生这种情况,还有其他想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-20 07:12:59

我有一个有效的解决方案,但不幸的是没有一个完整的解释。回顾一些相关的问题,如What's going on after DTR/RTS is sent to an FTDI-based Arduino board?,我确定,即使只是重新启动节点应用程序(而不是需要另一个串行连接应用程序),也可以使节点能够通过串行端口进行通信。这超出了我的能力范围,但我怀疑最初建立RTS连接会重新启动arduino,只有在此之后,节点-串口才能通过该连接进行通信。

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

代码语言:javascript
复制
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
            //...
        }
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29735047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档