Отправка байтов через SerialPort Nodejs - PullRequest
0 голосов
/ 04 августа 2020

Мне нужно отправить команду на инвертор, который подключен к моему компьютеру через 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));

1 Ответ

0 голосов
/ 04 августа 2020

Я понял, на самом деле это было намного проще, чем я думал, мне просто нужно было создать буфер и отправить его, мой код теперь выглядит так

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());
});
...