Отправьте данные ASCII в UART3 на Android-вещи с 3 байтами 0xFF в конце

Я пытаюсь подключить последовательный экран Nextion HMI к Android Things, в частности к PICO-PI-IMX6UL

Я использую шаблон sample-uartloopback в качестве отправной точки.

Что мне нужно сделать, это отправить следующую полезную нагрузку через последовательный (UART3) в определенном формате и в ASCII

Страница 1

  1. Инструкция заканчивается тремя байтами "0xff 0xff 0xff"
  2. Все инструкции и параметры находятся в ASCII
  3. Все инструкции строчными буквами

    mLoopbackDevice.write(buffer, buffer.length);

Где буфер - это полезная нагрузка с тремя завершающими байтами.

Дело в том, что экран хочет войти в ASCII, но я могу только послать байтовый массив...

Я пробовал несколько способов, и я не могу заставить его работать.

Каков будет правильный способ отформатировать строку "страница 1", а затем добавить завершающие байты?

У меня это работает в приложении узла, но Java сейчас поражает воображение...

Я пытался:

String strCommand = "page 1";
byte b = (byte)0xFF;
byte[] endCommand = {b,b,b};
byte[] cmd = strCommand.getBytes();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
outputStream.write(cmd);
outputStream.write(endCommand);
byte[] payload = outputStream.toByteArray();
Screen.write(payload, payload.length);

но это не работает.

Я могу читать данные (на данный момент ничего полезного), чтобы убедиться, что связь в порядке, и она работает в моем приложении Node, но мне нужно перенести ее на Android Things...

Может кто-то указать мне верное направление?

РЕДАКТИРОВАТЬ: Это возвращает правильный формат для меня в JS

function hex(str) {
    var arr = [];
    for (var i = 0, l = str.length; i < l; i ++) {
            var ascii = str.charCodeAt(i);
            arr.push(ascii);
    }
    arr.push(255);
    arr.push(255);
    arr.push(255);
    return new Buffer(arr);
}

0 ответов

Другие вопросы по тегам