реклама на сайте
подробности

 
 
> функция (макрос?) DEBUG, отправка сообщений в порт
toweroff
сообщение Sep 20 2015, 18:10
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Добрый вечер!

Хочется реализовать дебажную функцию, чтобы было что-то типа

DEBUG("Var rct=%d\n", rct);

в общем аналог printf

Все упирается в то, что fputc уже переопределен для других целей. Нужно как-то в этой DEBUG задействовать sprintf и отправлять это дело по дебажному USART

Подскажите, как? Или как вообще такие вещи делаются? Где-то встречал подобное некоторое время назад, да позабыл где, никак не найду sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Sep 20 2015, 18:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Код
#include <stdarg.h>

char buff[12345];

int my_printf(const char *fmt, ...)
{
     va_list ap;
     int n = 0;

     va_start(ap, fmt);
     if((n = vsnprintf(buff, sizeof(buff), fmt, ap)) > 0)
     {
         // Отправляем строку
     }
     va_end(ap);
     return n;
}
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 20 2015, 20:06
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (aaarrr @ Sep 20 2015, 21:39) *
CODE
     int n = 0;
}

"= 0" глаз режет sad.gif.
Ну и в общем лишний промежуточный буфер, который в общем случае очевидно придется перекидывать в какой-то другой, который уже будет разгружаться.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 20 2015, 20:13
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Sep 20 2015, 23:06) *
"= 0" глаз режет sad.gif .

Лишний, да. Просто код выкорчевал неаккуратно.

Цитата(zltigo @ Sep 20 2015, 23:06) *
Ну и в общем лишний промежуточный буфер, который в общем случае очевидно придется перекидывать в какой-то другой, который уже будет разгружаться.

ТС хотел sprintf, пример дан.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 20 2015, 20:18
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (aaarrr @ Sep 20 2015, 23:13) *
ТС хотел sprintf, пример дан.

В принципе годится, просто указатель буфера vsnprintf() двигать нужно в буфере. Тогда этот-же буфер и для разгрузки использовать можно.
P.S.
Я для отладки использую свой простенький, но зато максимально быстрый "printf()".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 02:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016