读/写数据返回null-无法执行任何操作-节点串行端口

问题描述 投票:0回答:1

我第一次使用Serialport,并尝试使用以下方法与作为高度调节台控制器的UART设备建立读写连接。该应用程序是使用电子的桌面应用程序。

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')
})

缓冲区值是用于将办公桌上移的缓冲区,但是没有任何操作,并且它不返回错误或在回调中返回未定义的值。

有关设备和设置的更多详细信息:使用RJ45转USB连接器连接到桌子的控制箱。

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

停止动作= 0XF1 0XF1 0X0c 0X00 0X0c 0X7E

阅读功能示例:

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

((“数据”中有两个字节,因此“数据长度”为0x02;“校验和” = 0x01 + 0x02 + 0x03 + 0xE8 = 0xEE)

期望读取功能可以提供当前的高度信息,而写入功能则可以控制设备。

版本,操作系统和硬件:

SerialPort @ ^ 8.0.7

Node.js v10.16.0

Windows

硬件和芯片组?COM4

FTDIBUS \ VID_0403 + PID_6001 + AB0JIYQTA \ 0000

FTDI

node.js serial-port electron ftdi node-serialport
1个回答
0
投票
对于读取,如果要使用读取行解析器,则需要将serialPort传递给它,然后从解析器中监听数据,例如:

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

注意:数据将是缓冲区

您可以跳过解析器并直接调用读取。我想你尝试过了。文件说:

如果没有数据可读取,则返回null。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.