@Scorpiored88

Как отправить команду по COM/Serial port с помощю nodejs?

Всем доброго! Вот решил поигратся с железом с помощю nodejs
Нашел популярный модуль node-serialport, и вот сейчас пытаюсь с его помощю отправить что то железяке, но все безполезно...

В описании протокола сказано:
5a955303f04a6003239980.png

BCC of command protocol is determined by “XOR” for the values from EOT to ETX.

Assignment of Value SOH - 01H
ETX - 03H ACK - 06H ID - 50H
STX - 02H EOT - 04H NCK - 15H

и собствено пример команды (тест) что я пытаюсь отправить:
Test Command (0x76H)
5a9554533849b389557663.png

и мой код:
var SerialPort = require('serialport');

var port = new SerialPort('/dev/ttyS0', {
    baudRate: 9600,
    autoOpen: false
});



port.open(function (err) {
    if (err) {
        return console.log('Error opening port: ', err.message);
    }

    var data = Buffer.from("04H50H02H76H03HXXH", "hex")
    

    console.log("will write", data)

    port.write(data);
});

port.on('open', function() {
    console.log("on open event")
});


после запуска которого ничего не происходит
  • Вопрос задан
  • 4795 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
'H' на конце - это всего лишь признак шестнадцатеричного значения, передавать его в Buffer.from не надо.
Значение BCC необходимо предварительно рассчитать, взяв XOR всех байтов, входящих в команду. XX - просто обозначает расчётное значение (в данном примере должно быть 23H).
Соответственно, строка должна выглядеть так:
var data = Buffer.from("045002760323", "hex");
Ну и, если полностью прочитаете описание протокола, то увидите, что после отправки команды необходимо получить от диспенсера подтверждение (ACK), ответ, и выдать ACK подтверждая получение ответа.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Xilian
Программист 1С, сетевые технологии, SQL
Играть с оборудованием на языках с динамической типизацией строго не рекомендуется. Напишите демон на с/с++ и обращайтесь к нему.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы