Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Microchip C32 - printf, sprintf
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=9348
Страница 1 от 1

Автор:  head_up [ Съб Сеп 17, 2011 12:05 pm ]
Заглавие:  Microchip C32 - printf, sprintf

Та изпаднах в ситуацията да се радвам на микрочепски творения отново. Положението е следното: имам един код за pic32, версията на компилатора мисля е 1.12, кода е пълен с printf, sprintf. По дефоут те са насочени към UART1 и UART2 мисля, като това ми е ясно как мога да го превключвам, но не ми върши работа - трябва ми към друг UART. Ок, те могат да бъдат предефинирани от потребителя - слънце, направих го с va_ ... , сега принтвам към UART4. Обаче printf не се справя с %s. За всичко друго е ок - %c, %d, %x, %f - наред са. Обаче като му дам %s и .... ами нищо? минава си през функцията като пръдня през комарник - малко забавя и това е, на терминала липсва каквото и да е. А по-тъпото е, че като предефинирам printf логично не мога да го дебъгна, т.е. не се влиза в него, просто се изпълнява ":)" . Тоя тип издънаки някой да ги е срещал и да има решение?
Трябва ми да мога да изпълня нещо от типа:

Код:
sprintf(buf, "bla-bla-bla %d, %d, %d !", i, j, k)
printf("String: %s, data value: %d, code: %x", buf, data_val, code_val); // където buf е масив с нещо


Примера е ясно, че е безсмислен, но не ми казвайте да ползвам нещо друго лично изписано вместо (s)printf - то идеята е да го пренапиша и се замества в кодовете.

Можеш ли да имаш 6 UART-а и да поддържаш софтуерно само 2, като е ясно, че за останалите 4 просто сменяш цифри?! Мързел ли им е да довършват нещата, какво ли ...

Edit: Ама и аз както обяснявам - за опити вместо функцията printf/sprintf използвам my_printf/my_sprintf т.е. еквивалента на оригиналните (като аргументи и държание) и явно е напълно функционална и за %s. Обаче явно не успявам да предефинирам както си трябва printf/sprinf, защото продължава да ползва тях вместо моята и за това имаше заблуда, че стринга не го изкарава, а то нищо не е изкарвало - текста с параметри идва от моите функции ... мда ... Как става това безболезнено?

Автор:  head_up [ Съб Сеп 17, 2011 2:11 pm ]
Заглавие:  Re: Microchip C32 - printf, sprintf

За незнающите като мен:

Код:
int my_printf(const char * fmt, ...);
int my_sprintf(char * buf, const char * fmt, ...);

#if defined(printf)
  #undef printf
#endif
#define printf       my_printf

#if defined(sprintf)
  #undef sprintf
#endif
#define sprintf      my_sprintf


колко просто било, след като човек си напише my_printf / my_sprintf чрез va_ ...
Ама докато открия топлата вода ...

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/