问题标签 [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 投票
2 回答
1347 浏览

node.js - node.js 串口获取 sourcer 并避免 npm

我想使用 node.js 串行端口,以便我在浏览器中运行的 unix 可以访问串行端口(uart)。我确定serialport 是一个了不起的模块,但我无法得到它。node.js 很棒,但 npm 很可耻。我受限于 Windows8(对不起),由于 \r 字符,npm 在 cygwin 中失败,在我配置 Python 后,npm 失败,环境变量带有“奇怪的错误 1”。那没有帮助。

但无论如何我都不想npm。我确实下载了一个 mime.js 并直接要求它。我的要求清单如下。我想对串口做同样的事情。这意味着我可以交付我的整个源代码 tar,用户只需要安装 vanilla node.js,而不用弄乱 npm/python

那么如何获取serialport的源代码需要它作为我自己的模块,例如下面的mime,sprintv。

0 投票
2 回答
1876 浏览

node.js - 使用 Node-XBee 和 Node-SerialPort 了解来自 XBee 的串行数据

node-serialportnode-xbee在以下代码中用于从路由器 AT 配置中的 XBee 系列 2 读取传入的 XBee 帧。一个电位器连接到AD0XBee 的 20 号模拟输入引脚。所有 4 个模拟引脚AD0, AD1, AD2,AD3均已启用,仅AD1连接到某物。

你如何解释接收到的data数组frame_object?这里显然有一个趋势,当 0V 输入 XBee 时,我们会收到一个data以 elements 结尾的数组0, 0, 2, 14, 2, 8, 2, 15。当 3.3V 被馈送到 XBee 时,data数组以 elements 结束3, 255, 3, 255, 3, 255, 3, 255

你如何将这些原始值转换为更有意义的东西?3, 255看起来像一对表示 3.3V 的值?但是我们如何获得3, 255电压读数呢?

读取串口数据

XBee 引脚馈电 0V 时的 XBee 帧

XBee 引脚馈入 3.3V 时的 XBee 帧

0 投票
1 回答
483 浏览

javascript - Arduino 串口给出错误数据?

我正在尝试通过网络(Socket.IO)从我的 Arduino 接收数据。所以我将解释下面的代码。

阿杜诺:

这会将伏特转换为温度。当我打开串行显示器时,我可以看到我想要的输出。

但是我在 Node 中创建了一个 SerialPort,它的输出有点奇怪。我以这种方式接收数据:

但输出是:

如您所见,输出类似于:

看起来它一直在破坏我的 int/strings。

0 投票
1 回答
920 浏览

jquery - node.js node-serialport 有明显的写入延迟

我有一个系统,该系统由一个通过串行端口连接到树莓派的微处理器组成。树莓派正在运行带有 node-serialport 的 node.js,以提供基于 Web 的用户界面。

当我尝试通过 Web 界面写入串行端口时,在收到微控制器的回复(10 秒到几分钟)之前,我经常会遇到很长的延迟,这意味着 serialport.write 以某种方式延迟。(我没有看到错误,端口也没有关闭..)在第 6 次串行端口写入之后,这种情况一直发生。如果我重新加载浏览器,它会再次正常工作,直到第 7 次请求。

这是在 node.js 中打开和推送数据到串口的例程:

而这个用于向 rpi 发送 http post 请求的 jquery 例程:

在 chrome 中查看网络控制台时,看起来 http post 请求会立即发送,并且当通过 minicom 通过 ssh 将命令发送到微控制器时,根本没有问题。

因此我怀疑 node-serialport 或 node.js,但如何进一步挖掘?

有人有什么想法吗?

0 投票
1 回答
9731 浏览

node.js - 无法在nodejs中关闭串口

我在这里node-serialport使用available 。打开端口,阅读效果很好,但是我无法关闭端口。

我为此使用以下代码:

回调函数永远不会执行(没有控制台输出)。谁能给我指路?

我希望能够关闭一个端口并在需要时打开另一个端口,或者如果用户更改页面则只关闭端口。

0 投票
2 回答
3952 浏览

node.js - 如何在树莓派上播放声音 - 启动后无需登录

我需要使用 node.js 脚本在树莓派上播放声音。当我自己从命令行启动脚本时,一切都很好。当我从 /etc/rc.local 脚本启动后运行相同的脚本时,我在执行“ps aux”时看到了我的运行进程,但我听不到任何声音。我也尝试在 40 秒后启动节点脚本,因为我认为一些初始化东西或其他东西的时间太少了,但在这段时间内我可以从命令行启动脚本并听到声音......

我尝试了两个用户:root 和 pi。它们都从 cmd 工作(因为在自​​动启动后运行脚本的用户是 root 用户)

我将我的程序链接到 /usr/bin/node 因为如果不是,该进程无法在启动时启动。

我强迫树莓派使用立体声插孔: amixer cset numid=3 1

我的 node.js 代码是:

对于我尝试的启动:作为 cronjob,在 crontab -ei 附加后:@reboot /opt/node/bin/forever start /var/www/node/residenz/server.js

我也在文件 /etc/rc.local 中尝试了相同的方法: /opt/node/bin/forever start /var/www/node/residenz/server.js

谢谢你的帮助!

0 投票
1 回答
305 浏览

node-serialport - 将域与串行端口节点一起使用

我有 node-serialport 库在快乐路径情况下工作正常,但我想解决错误处理问题。

我目前正在处理的特定测试用例只是没有插入串行设备。理想情况下,我能够检测到存在问题,然后在短暂延迟后重试。

问题是我不断收到以下错误:

我会期待这样的事情,因为设备没有插入,但我需要抓住它。try/catch 显然不起作用,因为它是异步的。所以我正在尝试“域”,这似乎是推荐的方式:

我希望这会产生预期的效果,但我得到与上面相同的错误。

有没有人看到我没有得到的任何东西?

0 投票
0 回答
247 浏览

node.js - 节点非阻塞数据处理

我有一个 Node 进程,它使用 node-serialport 处理来自微控制器的传入数据包(每秒一次)和使用 Express 来自浏览器的传入 http 请求。数据从 Mongo 数据库存储和访问。

这是处理来自串行端口的数据的代码:

这是处理来自浏览器的请求的代码:

两者receive()fetch()登录到控制台。

总而言之,fetch()获取多达 8M 的数据库条目并将它们全部归结为多达 1000 个数据点乘以 7 个数据集,然后通过网络发送它们。问题是fetch()函数中的“沸腾”处理有时可能需要一段时间。sleep(2)为了夸大这种效果,我使用了npm sleep 包并将fetch().

果然,在fetch()处理数据时,我不再看到属于receive(). 当处理结束时,两个数据包几乎同时进来并被处理。在阅读了 Node 是单线程的之后,我明白了为什么会这样。当我的代码行按顺序执行时,Node 无法在串行端口上接收数据。时机不好,但他们最终在服务器上的事实是一个好兆头。然而,当我将睡眠时间从 2 秒增加到 10 秒时,行为是相同的。该过程挂起,我在 10 秒内没有记录数据包,10 秒后我几乎同时收到两个数据包(不是十个?)。所以也许 node-serialport 的实现有一个内部缓冲区,只能容纳我的两个数据包?我不知道,但我很好奇。它是这个问题的一个子主题,fetch()将不胜感激

这是我的主要问题:有没有办法/包将处理拆分成块,由于 Node 的单线程特性,这些块本身阻塞,但在块之间留出空间接收串行端口上的数据?或者这两个独立的任务是否需要从父进程产生的两个独立的节点进程?

0 投票
1 回答
834 浏览

node.js - 在 node.js 中重新加载网页后多个 Serialport 读取

我正在尝试在 Raspberry Pi 上使用 node.js 来连接串行设备。我想将数据从设备发送到网页,将控制数据从网页发送到设备,并在 Pi 上记录和存储数据。当我运行这个:

并重新加载页面说 3 次我为每个串行数据读取得到 3 个输出。

如果我放回(un-rem) sp.close() 它会一直工作,直到我按预期重新加载(端口已关闭但从未重新打开)。

如果我将 sp.open() 放入 io.on(connection) 回调中,并且在页面重新加载时串行数据进入(在 sp.close() 之后但在 sp.open() 之前它会崩溃:

我不希望在重新加载期间关闭端口,因为这会干扰登录到 Pi。

我正在使用节点 v0.10.26 但同样的事情发生在 v0.8.17

0 投票
1 回答
17863 浏览

node.js - 使用 Node.js 向串口发送字节

我打算使用 Node.js 进行带有串行端口通信的 POC。我用谷歌搜索并找到了 Node.js 的“串行端口”模块。我有一个 C# 代码将数据写入串行端口byte。我想尝试使用 Node.js。byte[]C# 代码在数组中有以下值:

谁能告诉我如何使用 Node.js 的 serialport 模块来实现这一点?