Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по С
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
WHALE
Господа,подскажите способ вставить в строку неотображаемые символы,типа перевод строки(0А),возв-
рат каретки(0D) и т.д.Через sprintf не получается.
Сейчас я их передаю отдельно,в обработчике USART анализируя,последний-ли символ в строке и дальше прямая запись чисел в UDR,что сильно тормозит обработчик и жутко неудобно.
prottoss
Цитата(WHALE @ Jan 21 2007, 02:17) *
Господа,подскажите способ вставить в строку неотображаемые символы,типа перевод строки(0А),возв-
рат каретки(0D) и т.д.Через sprintf не получается.
Сейчас я их передаю отдельно,в обработчике USART анализируя,последний-ли символ в строке и дальше прямая запись чисел в UDR,что сильно тормозит обработчик и жутко неудобно.
А так что ли не получается:

Код
sprintf(buffer, "Шла Саша%d по шоссе%d и сосала сушку%d", 0x0d, 0x0A, 0xff);
???
makc
Т.е. у Вас такой, например, код не работает:
Код
char    buffer[10];
sprintf( buffer, "\r\n" );


И после этого в массиве buffer не лежат начиная с нулевого смещения символ возврата каретки и перевода строки?
Lem
Цитата
А так что ли не получается:


sprintf(buffer, "Шла Саша%d по шоссе%d и сосала сушку%d", 0x0d, 0x0A, 0xff);

???


Имелось в виду, видимо, что функция sprintf не может использоваться из-за ограниченных ресурсов МК smile.gif
prottoss
Цитата(Lem @ Jan 21 2007, 03:09) *
Цитата

А так что ли не получается:
sprintf(buffer, "Шла Саша%d по шоссе%d и сосала сушку%d", 0x0d, 0x0A, 0xff);
???
Имелось в виду, видимо, что функция sprintf не может использоваться из-за ограниченных ресурсов МК smile.gif
аха...Мож и есть способы, умные люди подскажут smile.gif Я делаю так: Пишу функцию, которая загоняет в буфер USART, или еще там куда, строку, вида:

Код
usart_print(char *buffer, char ctrl)
Когда цикл внутри функции доходит до завершающего нуля строки, подставляется символ ctrl
Dog Pawlowa
Цитата(WHALE @ Jan 20 2007, 23:17) *
Господа,подскажите способ вставить в строку неотображаемые символы,типа перевод строки(0А),возв-
рат каретки(0D) и т.д.Через sprintf не получается.
Сейчас я их передаю отдельно,в обработчике USART анализируя,последний-ли символ в строке и дальше прямая запись чисел в UDR,что сильно тормозит обработчик и жутко неудобно.

Уже все перестали понимать проблему smile.gif

string[i]=0x0a;
i++;
string[i]=0x0d;
i++;
string[i]=0;

i найдете где взять?
prottoss
Цитата(Dog Pawlowa @ Jan 21 2007, 03:32) *
Цитата(WHALE @ Jan 20 2007, 23:17) *

Господа,подскажите способ вставить в строку неотображаемые символы,типа перевод строки(0А),возв-
рат каретки(0D) и т.д.Через sprintf не получается.
Сейчас я их передаю отдельно,в обработчике USART анализируя,последний-ли символ в строке и дальше прямая запись чисел в UDR,что сильно тормозит обработчик и жутко неудобно.

Уже все перестали понимать проблему smile.gif

string[i]=0x0a;
i++;
string[i]=0x0d;
i++;
string[i]=0;

i найдете где взять?
А еслиф фо флэшш? smile.gif
Сергей Борщ
Цитата(prottoss @ Jan 20 2007, 22:38) *
А еслиф фо флэшш? smile.gif
Код
#define CR  "\r\n"    // перевод строки
__flash char const Tipatest1[] = "Это табулятор: отсюда>\t<до сюда"CR;
__flash char const Tipatest2[] = "Это тоже табулятор: >\x08<"CR;
__flash char const Tipatest3[] = "Последний символ затерт: *\b"CR;
__flash char const Tipatest3[] = "Строчная \"Я\": \xFF"CR;
Это имелось ввиду?
defunct
Цитата(WHALE @ Jan 20 2007, 22:17) *
Господа,подскажите способ вставить в строку неотображаемые символы,типа перевод строки(0А),возв-
рат каретки(0D) и т.д.Через sprintf не получается.

sprintf( newstr, "%s\r\n", "моя строка");
?

Но я бы так не делал. На мой взгляд гораздо лучше (если уже организован буфферизированный вывод) просто подправить функцию вывода, чтобы в буфер уарта дописывались требуемые символы при достижении конца строки.
prottoss
Цитата(Сергей Борщ @ Jan 21 2007, 04:29) *
Цитата(prottoss @ Jan 20 2007, 22:38) *

А еслиф фо флэшш? smile.gif
Код
#define CR  "\r\n"    // перевод строки
__flash char const Tipatest1[] = "Это табулятор: отсюда>\t<до сюда"CR;
__flash char const Tipatest2[] = "Это тоже табулятор: >\x08<"CR;
__flash char const Tipatest3[] = "Последний символ затерт: *\b"CR;
__flash char const Tipatest3[] = "Строчная \"Я\": \xFF"CR;
Это имелось ввиду?
наверное smile.gif Похоже автор топика, от нескончаемого потока вариантов в шоке, по этому пропал
WHALE
Cпасибо,в понедельник буду пробовать.Похоже,то что надо. cheers.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.