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

 
 
> printf и sprintf, одновременно из двух задач
toweroff
сообщение Dec 25 2012, 12:16
Сообщение #1


Гуру
******

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



Добрый день!

Есть две задачи в RTX Keil, одна, пользуясь printf, реализует некий интерактивный монитор событий в UART0
Вторая должна выводить данные на LCD дисплей. Хотелось бы воспользоваться sprintf, но смущает когда-то где-то вычитанное упоминание о том, что все xprintf функции не являются reentrant
Что можно в данном случае придумать?

UPD
скорее даже не reentrant, а thread safety?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
SSerge
сообщение Dec 25 2012, 18:18
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Сделать очередь заданий ввода-вывода и поручить третьей задаче исполнять эти задания одно за другим.
Пример такого решения есть в мануале на scmRTOS.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 25 2012, 20:23
Сообщение #3


Гуру
******

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



Нашел вот что
http://www.keil.com/support/man/docs/armli...ef_Chdiedfe.htm

похоже, что в моем случае все в порядке

кстати, о птичках. Чем vprintf отличается от printf ?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 26 2012, 05:33
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(toweroff @ Dec 26 2012, 00:23) *
похоже, что в моем случае все в порядке
Да у кейла либы по большей части очень неплохо реализованы.
Цитата
кстати, о птичках. Чем vprintf отличается от printf ?
https://ru.wikipedia.org/wiki/Printf
Цитата
Все функции имеют в имени основу printf. Префиксы перед именем функции означают:

v (vprintf, vsnprintf и т. д.) — функция вместо переменного числа параметров принимает список аргументов va list.
f (fprintf, vfprintf) — вывод результата в передаваемый через параметр функции поток, вместо стандартного вывода.
s (sprintf, snprintf, vsprintf, vspnprintf) — запись результата в строку (буфер в памяти), а не поток.
n (snprintf, vnsprintf) — наличие параметра, ограничивающего максимальное количество символов для записи результата (используется только вместе с префиксом s). В Maple функция nprintf аналогична sprintf, но возвращает не текстовую строку, а имя.
...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 26 2012, 10:04
Сообщение #5


Гуру
******

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



Цитата(demiurg_spb @ Dec 26 2012, 09:33) *

спасибо!
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.01397 секунд с 7
ELECTRONIX ©2004-2016