Формат записи SerialPort NodeJS

Я создаю прототип автоматизированного инструмента тестирования для компании, в которой я работаю, который использует контроллер SMAC для перемещения объекта перед измеряемым лазерным микрометром.

Я использую библиотеку NodeJS SerialPort для выдачи команд контроллеру (через последовательный порт RS232), но, похоже, у меня возникают некоторые проблемы с выполняемыми командами. Контроллер принимает команды в комбинированном шестнадцатеричном и строковом формате (страницы 23-24 этого PDF объясняют больше).

Команда, которую я пытаюсь запустить: 0x20 W 0x012C04 20. Когда я запускаю это в PuTTY, он работает отлично, но SerialPort, кажется, игнорирует его, я предполагаю, что это ошибка форматирования/типа данных, но я не уверен, как это исправить.

Мой код:

const port = new SerialPort("COM1", {
    baudRate: 115200,
    dataBits: 8,
    stopBits: 1,
    parity: "none",
}, (err) => console.log(err))

if(!port.isOpen) port.open()

port.on('open', () => {
    console.log("Port opened successfully")
    port.write("0x20 W 0x012C04 20", (err) => {
        if(err) throw err;
        console.log("Write to port successful")
        port.close()
    })
})

Любая помощь приветствуется!


person Justin    schedule 07.04.2021    source источник
comment
снято в темноте, попробуйте с кодировкой, port.write("0x20 W 0x012C04 20", 'hex', (err) => { или 'ascii'   -  person Lawrence Cherone    schedule 07.04.2021
comment
@LawrenceCherone Ценю предложение, но не повезло. Также пробовал: Buffer.from("0x20 W 0x012C04 20", "ascii") безуспешно.   -  person Justin    schedule 07.04.2021


Ответы (1)


Решение было простым, мне не хватало только возврата в конце отправляемой команды. Мне удалось управлять контроллером SMAC с помощью следующей команды:

0x20 W 0x012C04 20\r

Используемый полный код:

const port = new SerialPort(SMAC, {
    baudRate: 115200,
    dataBits: 8,
    stopBits: 1,
    parity: "none",
}, (err) => console.log(err))

if(!port.isOpen) port.open()

port.on('open', () => {
    console.log("Port opened successfully")

    const macro = "0x20 W 0x012C04 20\r"

    // Call Macro 20
    port.write(macro, (err) => {
        if(err) throw err;
        console.log("Write to port successful")
        port.close()
    })
})
person Justin    schedule 08.04.2021