使用 SerialPort Nodejs 发送字节

Sending bytes with SerialPort Nodejs

我需要向逆变器发送命令,逆变器通过 COM 端口连接到我的计算机。该命令需要以字节为单位发送,我也需要得到响应,但我似乎无法弄清楚该怎么做,我在 SerialPort 库中发现了一些使用缓冲区对象的旧代码,但是当我尝试使用该方法,它说它已被弃用,但查看较新的文档我似乎无法弄清楚如何发送字节数组。

我也试过这样做,但我收到一个错误,因为我正在发送数字,它需要字符串值。

const SerialPort = require("serialport");
var port = new SerialPort(
  "COM4",
  {
    baudRate: 2400,
    databits: 8,
    parity: "none",
  },
  false
);
command = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13];
for (var i = 0; i < command.length; i++) {
    port.write(command[i], function (err) {
        if (err) {
          return console.log("Error on write: ", err.message);
        }
        console.log(`Sent ${command[i]}`);
      });
}

port.on("data", (line) => console.log(line));

我想通了,其实比我想象的要简单得多,我只需要创建一个缓冲区并发送它,我的代码现在是这样的

const SerialPort = require("serialport");
var port = new SerialPort(
  "COM4",
  {
    baudRate: 2400,
    databits: 8,
    parity: "none",
  },
  false
);
const command = ["00", "00", "00", "00", "00", "00", "00", "00"];
const buff = Buffer.from(command);

port.write(buff, function (err) {
  if (err) {
    return console.log("Error on write: ", err.message);
  }
  console.log("message written");
});
var response = "";
port.on("data", (line) => {
  response = response.concat(line.toString());
});