问题标签 [node-serialport]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
402 浏览

node.js - 在执行任何操作之前节点关闭 Arduino 串行端口连接

我正在尝试使用节点从连接到 USB的Arduino uno打印串行

我有一个文件script.js

运行 sudo node script.jsArduinoSerial.println(1);

终端上我看到: opened closed

如果我打开Arduino IDE的串行监视器,它可以正常工作!

为什么我的串口没有保持打开状态?

0 投票
1 回答
820 浏览

node.js - apm/npm 串行端口无法在 Windows 10 上加载

我正在构建一个需要使用串行端口的 Atom 插件。
我已经npm install --save serialport并且它似乎可以工作,但是当我在 Windows 10 机器上运行它时,我得到了下面列出的错误 #1。
如果我删除node_modules/serialport目录并apm install收到错误 #2,这是一个节点预妇科编译错误。

  1. 如何解决这个问题?
  2. npm为什么和有区别apm

错误 #1

错误 #2

0 投票
1 回答
904 浏览

angular - Electron + Angular 2 + 节点串行端口

我正在使用 Electron + Angular 2 构建一个应用程序,该应用程序需要加载节点串行端口,但是当我将这些模块一起加载时我遇到了一些问题。

例如,当我使用 Electron + Angular 2 并且没有 node-serialport 运行我的应用程序时,它可以正常工作,但是如果我使用 node-serialport 加载整个应用程序无法正常工作,我的 Angular 2 只是将他的功能停止为绑定。

谢谢你。

0 投票
0 回答
2694 浏览

node.js - 如何在 NodeJS 中获取同步 SerialPort 读取

实际上在做一个自动机项目(基于 Arduino <-> Serial <-> Raspberry),我似乎有点卡在串行接口上​​。

基本上,我使用 Express 通过 URL 以这种语法(http://localhost:3000/parameter/6http://localhost:3000/parameter/6/set ? 值 = 10)。

因为我愿意得到一个简单/简短的结果(作为一个 API),所以我决定在每个请求上渲染一个简单的 json 对象,我也没有办法使用像 //.. 这样的后期渲染脚本/Socket.io框架jQuery。 . 为此目的(我可能经常从curl/ wget/[其他 html 解析器] 调用这些 URL)。

现在问题是在端口上写入没有问题,但是对于读取,我想在渲染页面之前等待缓冲区返回serialport.on('data', function(buffer) { ... })

由于serialport.on('data', ... )似乎每个请求只调用一次,我目前发现的唯一方法是重定向到同一页面,直到缓冲区被读取,这似乎是一种令人讨厌的完成工作的方式,而且它也不完整。 ..

这是一些代码来了解实际逻辑:

图书馆 :

路线 :

我想出的第一个想法是找到一种同步方式来读取端口,这样我就可以调用这样的东西(伪代码):

总之谢谢大家。

0 投票
1 回答
623 浏览

node.js - 在函数中配置时,串行端口解析器不起作用

我有一台与串行设备通信的服务器。如果我直接在代码中内联配置串口,它会按预期工作。但是,如果我通过函数传入配置以创建新的串行端口对象,则解析器将不起作用。

有效的代码:

不起作用的代码:

并且传递给函数的数据对象(现在使用我们知道的参数进行硬编码):

该端口myPort是使用来自网站上的按钮的输入配置的,该按钮通过套接字读取:

我们需要网页能够传入任何一组配置变量,所以我需要让函数方法起作用。如果我console.log(myPort);在任何一种情况下都这样做,端口似乎是相同的,所以我看不出解析器为什么不工作。我可以直观地看到数据正在通过 RS-485 转换器上的 LED Tx 和 Rx 灯传输,所以我知道设备上的端口正在发送和接收数据,但解析器没有看到 EOL 字符(我认为),所以它只是在等待。

0 投票
0 回答
437 浏览

node.js - 如何防止来自 Node.js 服务器的重复响应

我们遇到了一个问题,我们从我们的 Node 服务器收到多个响应发送到由套接字服务器 (socket.io) 连接的 Web 客户端。通过使用 Docklight 进行监听,我可以看到我们实际上只从串行设备获得了一个响应,但由于某种原因,Node 服务器正在发送多个响应,并且它们会累积,所以当你第一次发送串行命令时(它不管什么命令)可能只会得到几个,下一次更多,下一次更多,依此类推。因此,如果您运行多个串行命令,您将得到很多多个响应。

我们的环境是 Windows 7 64 位,Node V 4.5.0,serialport V 4.0.1。但是,当我们完成后,这需要在 Windows、Mac 和 Linux 上运行。开发团队(我和另外一个人)对 Node 来说都是相当新的,但在其他方面都是有能力的开发人员。

我认为发生的事情是我没有正确使用.flush()&.drain()函数,并且串行端口缓冲区仍然包含串行数据。我们的专有设备在命令完成时返回S><Executed/>提示,因此我将串行响应存储在缓冲区中,直到看到其中一个,然后处理数据(在此示例中,仅提供布尔响应,无论设备是否响应一个或另一个或不是)。例如,如果我将 a 发送<CR><LF>到我们的一个设备,它应该响应S>(或<Executed/>依赖)。

客户端通过以下方式调用服务器:

在服务器上,这就是我正在尝试的:

我不太确定.flush()这里的实现,我省略了这.drain()部分,因为它们似乎都没有做很多事情(假设它们被正确实现)。

.write()当命令完成时,如何确保串口缓冲区中没有数据?或者您是否看到我处理串行数据的其他问题?

编辑,pastebin.com 上的源代码:

服务器.js

客户端.js

HTML

0 投票
2 回答
1759 浏览

node.js - how can I get the result of a weight with nodeJS

I have a problem, I am trying to get the weight from a Scale with NodeJS and the npm module "Serialport" on Windows.

The problem that I have is that it doesn't matter the command that I sent to the Scale, it is not return any data.

I already compiled the module serialport for the project that I am making on nwJS, and I have the following code:

Note: the parser W\n is the string that the scale needs to sent the weight. I tested that with another application named coolterm

Thanks for any help.

0 投票
1 回答
1448 浏览

node.js - 节点串行端口堆叠侦听器并没有使用承诺获得完整的响应

我遇到了一个问题,即我尝试使用的基于承诺的代码并不是每次都得到完整的响应。我将数据侦听器与 .on 一起使用,但将其更改为 .once,因为测试显示我在每次调用时都在堆叠数据侦听器。但无论哪种方式,我偶尔都会得到部分回应。那么我该如何解决这个问题。不是堆栈侦听器,而是每次都获得完整的响应......并使用承诺来完成。

这是调用代码

这是使用 .on 输出的 4 次完整响应应该是[ 170, 1, 0, 171 ]

另一次响应是 [170, 1, 0],大多数时候我得到完整的响应。

.once 的结果相似,但监听器没有堆叠。

想法?想法?关于修复但使用承诺。

我的代码来自我在这里找到的想法。 nodejs映射串口写入接收数据

0 投票
2 回答
7536 浏览

linux - 使用 docker for mac 在 docker 容器中公开 TTY 设备

我正在尝试将插入我的 mac 的 Arduino 暴露给我在Docker for Mac中运行的 linux 实例(无 vm)。

Arduino 将自己暴露为/dev/tty.usbserialXXX. 我正在使用node基于 ubuntu 的 docker 镜像。

我正在运行的命令是

如果我尝试使用--privileged

什么都没有暴露!

我正在使用它来公开串行设备以测试linux 中的串行驱动程序。

0 投票
1 回答
456 浏览

python - 节点串行端口写入 PL2303 但不在连接的设备上

我有一个 AllSky-340 CCD 摄像机,它使用串行端口进行通信。

我使用 PL2303 USB 转换器将其连接到我的笔记本电脑。

dmesg:

一个名为pyallsky的 python 代码允许在 linux 下控制 AllSky340 相机。有用。

我已经用 javascript 翻译了这段代码,以便与 node.js 一起使用。

这是代码的一部分("E:"是测试命令):

但它不起作用:运行脚本,日志是

并且没有收到任何来自相机的信息。

我确实知道数据侦听器有效,因为如果我同时运行pyallskypython 脚本,我的侦听器会拦截数据(在pyallsky抱怨多次访问端口之前)。

close关闭相机对disconnect听者没有任何影响。

仅拔下 PL2303 电缆会导致脚本记录

我的想法是js代码仅与 PL2303 电缆通信,而不与相机通信。那可能吗?我该如何解决?