#c #escaping #uart #unicode-escapes #stringescapeutils
#c #побег #uart #unicode-экранирование #stringescapeutils
Вопрос:
Мне нужна помощь в отправке определенной escape-последовательности с использованием встроенного C. Это моя самая первая тема в stackoverflow!
Я использую эту функцию для написания команд через UART:
void UART_Write(UARTChannel* channel, uint8_t* data, uint32_t length)
Входные данные, канал, данные и длина, соответствуют каналу UART, команде для отправки и длине команды соответственно.
В целом это отлично работает!
Тем не менее, у меня возникают некоторые трудности при создании правильной escape-последовательности в C. Мне нужно написать следующую escape-последовательность, используя функцию UART_Write:
EscR0,1,2,7;
Esc
является управляющим символом (0x1b), R0
является символьным обозначением команды, 1,2,7
является контекстно-зависимыми параметрами и ;
является знаком завершения.
Как я могу сделать так, чтобы входные «данные» для функции «UART_Write» были равны EscR0,1,2,7 EscR0, 1, 2, 7; во встроенном C?
Я полагаю, это можно сделать разными способами, но подойдут любые предложения.
Ответ №1:
вы хотите отправить ‘esc’ или вы хотите отправить ‘1b’ в виде шестнадцатеричного значения?
просто отправьте символы, как и любую другую символьную строку
например, для примера: EscR0,1,2,7;
:
char buffer[20] = {''};
buffer[0] = 0x1b;
strcat( buffer, "R0,1,2,6;" );
....