Отправьте данные ASCII в UART3 на Android-вещи с 3 байтами 0xFF в конце
Я пытаюсь подключить последовательный экран Nextion HMI к Android Things, в частности к PICO-PI-IMX6UL
Я использую шаблон sample-uartloopback в качестве отправной точки.
Что мне нужно сделать, это отправить следующую полезную нагрузку через последовательный (UART3) в определенном формате и в ASCII
Страница 1
- Инструкция заканчивается тремя байтами "0xff 0xff 0xff"
- Все инструкции и параметры находятся в ASCII
Все инструкции строчными буквами
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);
}