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

 
 
> Вопрос по С
WHALE
сообщение Jan 20 2007, 22:17
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



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


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
prottoss
сообщение Jan 20 2007, 22:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



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

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


--------------------
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 20 2007, 22:29
Сообщение #3


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Т.е. у Вас такой, например, код не работает:
Код
char    buffer[10];
sprintf( buffer, "\r\n" );


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


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Lem
сообщение Jan 20 2007, 23:09
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 20-03-05
Пользователь №: 3 533



Цитата
А так что ли не получается:


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

???


Имелось в виду, видимо, что функция sprintf не может использоваться из-за ограниченных ресурсов МК smile.gif
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 20 2007, 23:18
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(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


--------------------
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jan 20 2007, 23:32
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(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 найдете где взять?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 20 2007, 23:38
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(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


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 21 2007, 00:29
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(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;
Это имелось ввиду?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 21 2007, 01:08
Сообщение #9


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(WHALE @ Jan 20 2007, 22:17) *
Господа,подскажите способ вставить в строку неотображаемые символы,типа перевод строки(0А),возв-
рат каретки(0D) и т.д.Через sprintf не получается.

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

Но я бы так не делал. На мой взгляд гораздо лучше (если уже организован буфферизированный вывод) просто подправить функцию вывода, чтобы в буфер уарта дописывались требуемые символы при достижении конца строки.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 21 2007, 09:10
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Сергей Борщ @ 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 Похоже автор топика, от нескончаемого потока вариантов в шоке, по этому пропал


--------------------
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jan 21 2007, 14:47
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Cпасибо,в понедельник буду пробовать.Похоже,то что надо. cheers.gif


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 19:55
Рейтинг@Mail.ru


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