我第一次使用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
手机是指我的系统。
基本写操作缓冲区值:
上移= 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
serialPort.pipe(parser);
parser.on('data', (data) => {
console.log(data)
})
注意:数据将是缓冲区
您可以跳过解析器并直接调用读取。我想你尝试过了。文件说:如果没有数据可读取,则返回null。
https://serialport.io/docs/api-stream#serialport-read因此,可能是办公桌仅在收到消息后才输出数据。