gpt4 book ai didi

node.js - 读/写数据返回 null - 无法执行任何操作 - Node 串行端口

转载 作者:行者123 更新时间:2023-12-03 12:40:37 24 4
gpt4 key购买 nike

我第一次使用串行端口,并尝试使用以下方法与作为高度调节台 Controller 的 UART 设备建立读写连接。该应用程序是使用 Electron 的桌面应用程序。

const SerialPort = require('serialport')
const Readline = require('@serialport/parser-readline')
const parser = new Readline()


const port = new SerialPort("COM4", {
baudRate: 9600
})

这是我使用的代码,port.read() 总是返回空值。

对于写操作,我使用了如下代码:
var buf = new Buffer([ 0XF1, 0XF1, 0X01, 0X00, 0X01, 0X7E]);
port.write(buf, function(err,n) {
if (err) {
return console.log('Error on write: ', err.message)
}
console.log(n)
console.log('message written')
})

缓冲区值是用于将 table 向上移动但没有操作发生并且它不返回错误或在回调中返回未定义值的值。

有关设备和设置的更多详细信息:
使用 RJ45 转 USB 连接器与 table 的控制箱连接。
The definition of the SCI is as below:
(Baud Rate):9600
(Data Mode):8
(Stop Bit):1
(Parity Type):None
Path: COM3

enter image description here

手机是指我的系统。

基本写操作缓冲区值:

上移=0XF1 0XF1 0X01 0X00 0X01 0X7E

下移=0XF1 0XF1 0X02 0X00 0X02 0X7E

停止 Action =0XF1 0XF1 0X0c 0X00 0X0c 0X7E

读取功能示例:

当前高度(1000mm-0x03E8)
0XF2 0XF2 0X01 0X02 0X03 0XE8 0XEE 0X7E

(‘Data’中有两个字节,所以‘Data Length’为0x02;‘Checksum’= 0x01 + 0x02 +0x03 +0xE8 = 0xEE)

期望读取功能提供当前高度信息和写入功能以能够控制设备。

版本、操作系统和硬件:

串口@ ^8.0.7

Node.js v10.16.0

window

硬件和芯片组?
COM4

FTDIBUS\VID_0403+PID_6001+AB0JIYQTA\0000

FTDI

最佳答案

创建一个读取行解析器表明消息由\n 终止,但您的写入不包括一个,因此可以解释为什么命令没有到达设备。

对于读取,如果要使用读取行解析器,则需要将 serialPort 传递给它,然后监听来自解析器的数据,例如:

serialPort.pipe(parser);

parser.on('data', (data) => {
console.log(data)
})

注意:数据将是一个缓冲区

您可以跳过解析器并直接调用 read。我假设你试过了。文档说:

If no data is available to be read, null is returned.



https://serialport.io/docs/api-stream#serialport-read

因此,可能是办公 table 仅在收到消息后才输出数据。

关于node.js - 读/写数据返回 null - 无法执行任何操作 - Node 串行端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61486104/

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