Как отправлять escape-последовательности через UART, используя встроенный C-код

#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;" );
....