В моем проекте используется механизм ведения журнала, который в основном является вызовом макроса в каждом из моих компонентов.Замена макросов во время процесса компиляции
За макроком - это вызов функции, который используется для записи журнала с использованием медленной линии, такой как UART.
Пример:
LOG("An error has occurred. Please check XYZ. Code: %d", errorcode)
Вместо того, чтобы писать весь текст UART, я хочу, чтобы заменить все вхождения LOG, как это:
LOG("12345 %d", errorcode)
Каждый вызов LOG должен быть заменен коротким версия, где текст заменяется уникальным номером. Динамическая часть не может быть заменена. Отображение уникального числа в исходный текст должно быть помещено в файл. Что-то вроде этого:
12345:"An error has occurred. Please check XYZ. Code:"
На другом конце UART читатель журнала должен прочитать этот файл отображения, чтобы сделать его читаемым человеком.
Преимущество в том, что это идеально подходит для низкой пропускной способности.
Мой вопрос: Как это сделать при компиляции моего кода? Я использую gcc и работаю в среде Linux. Я предполагаю, что препроцессор должен справиться с этим. Или какой-то предварительный сценарий? Или есть лучший способ сделать это?
Непонятно для меня. У вас есть функция писать символы в UART или это то, что вы ищете? – LPs
Нет, часть UART работает. Мне просто нужно знать, как сделать такую замену, как описано выше, для уменьшения данных, которые должны быть переданы через UART. – Ferhat
Это не проблема программирования, но проблема с заменой текста текстового редактора? Просто просмотрите код и измените все сообщения. Кроме того, если вы обеспокоены пропускной способностью, почему вы отправляете данные как некоторые секретные бессмысленные номера в ASCII? Если у людей возникнут проблемы, чтобы понять это, отправьте их как исходные двоичные файлы. Два целых числа = 4 или 8 байт, вместо 10 + байтов, которые нужны строке. – Lundin