gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:37 25 4
gpt4 key购买 nike

以下代码中使用

node-serialportnode-xbee 从路由器 AT 配置中的 XBee 系列 2 读取传入的 XBee 帧。电位计连接到 XBee 的引脚 20 AD0 模拟输入引脚。所有 4 个模拟引脚 AD0AD1AD2AD3 均已启用,仅 AD1 > 与某物相连。

如何解释收到的 frame_object 中的 data 数组?这里显然有一个趋势,当 0V 馈送到 XBee 时,我们收到一个以元素 0, 0, 2, 14, 2, 8, 2, 15 结尾的数组 data >。当 3.3V 电压输入到 XBee 时,data 数组以元素 3, 255, 3, 255, 3, 255, 3, 255 结尾。

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

读取串口数据

var SerialPort = require('serialport').SerialPort;
var xbee_api = require('xbee-api');

var C = xbee_api.constants;

var xbeeAPI = new xbee_api.XBeeAPI({
api_mode: 1
});

var serialport = new SerialPort("/dev/cu.usbserial-A702NY8S", {
baudrate: 9600,
parser: xbeeAPI.rawParser()
});

xbeeAPI.on("frame_object", function(frame) {
console.log("OBJ> "+util.inspect(frame));
});

XBee 引脚馈入 0V 时的 XBee 帧

OBJ> { type: 145,
remote64: '0013a20040b19213',
remote16: '56bc',
receiveOptions: 232,
data: [ 232, 0, 146, 193, 5, 1, 1, 0, 0, 15, 0, 0, 2, 14, 2, 8, 2, 15 ] }

OBJ> { type: 145,
remote64: '0013a20040b19213',
remote16: '56bc',
receiveOptions: 232,
data: [ 232, 0, 146, 193, 5, 1, 1, 0, 0, 15, 0, 0, 2, 16, 2, 14, 2, 14 ] }

OBJ> { type: 145,
remote64: '0013a20040b19213',
remote16: '56bc',
receiveOptions: 232,
data: [ 232, 0, 146, 193, 5, 1, 1, 0, 0, 15, 0, 0, 2, 17, 2, 11, 2, 9 ] }

XBee 引脚馈入 3.3V 时的 XBee 框架

OBJ> { type: 145,
remote64: '0013a20040b19213',
remote16: '56bc',
receiveOptions: 232,
data: [ 232, 0, 146, 193, 5, 1, 1, 0, 0, 15, 3, 255, 3, 255, 3, 255, 3, 255 ] }

OBJ> { type: 145,
remote64: '0013a20040b19213',
remote16: '56bc',
receiveOptions: 232,
data: [ 232, 0, 146, 193, 5, 1, 1, 0, 0, 15, 3, 255, 3, 255, 3, 255, 3, 255 ] }

OBJ> { type: 145,
remote64: '0013a20040b19213',
remote16: '56bc',
receiveOptions: 232,
data: [ 232, 0, 146, 193, 5, 1, 1, 0, 0, 15, 3, 255, 3, 255, 3, 255, 3, 255 ] }

最佳答案

检查文档以了解 ATIS 响应的格式。

header 字节包括帧的端点 (232 = 0xE8) 和簇 (193, 5 = 0xC105)。我不确定输入样本之前的 0、145 和额外的 1。我认为 5, 1 解码后的字节如下:

以 8 位样本计数 (0x01) 开始。

然后读取启用的数字输入 (0x0000) 的 16 位。

然后读取启用的模拟输入 (0x0F) 的 8 位值。

如果有任何启用的数字输入,则所有数字读数都会有一个 16 位值。

后面是四个模拟输入 (3, 255 = 0x03FF),它们是缩放后的 10 位值。

reference voltage * reading / 0x03FF

因此,就您的情况而言,3.3V * 0x03FF/0x03FF = 3.3V

关于node.js - 使用 Node-XBee 和 Node-SerialPort 了解来自 XBee 的串行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21952233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com