|
Вопрос по Си, может ли быть несколько putchar? |
|
|
|
Jul 29 2011, 16:02
|

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

|
QUOTE (Dog Pawlowa @ Jul 29 2011, 17:52)  Мне приятно красиво сложить пакет перед отправкой, ну а кому-то нужно побыстрее покидать их в буфер  Красота складывания или не складывания в пакет или не в пакет к делу отношения не имеет - тут весь вопрос в том, имеет-ли право некая порция информации отсылаться не по команде свыше после того, как все гарантированно отправится и примется, а совершенно асинхронно, например, в момент внешнего воздействия. И про "красиво сложить", я Вам не просто так назвал прадедушку коммуникационных протоколов X.25 - там "красиво сложить пакет" в полный рост, но линейные буфера ну НИКАК не канают.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 30 2011, 07:05
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(kan35 @ Jul 29 2011, 13:14)  Есть несколько UARTов. Требуется делать форматный вывод в разные, можно ли как то для одной задачи (с её printf-ами) привязать один putchar, а для другой задачи - другой putchar? Так а что, это только в avr-libc под avr-gcc есть понятие файла с подставляемыми пользователем функциями get/put и возможностью потом писать Код fprintf( &lcd_file, fmt, ...); fprintf( &uart_file, fmt, ...); При необходимости через макросы fdev_set_udata() можно в запсь про файл занести указатель на упомянутый кольцевой буфер и через fdev_get_udata() брать его внутри put() и заносить в буфер, можно просто выводить в порт, на ЖКИ, куда угодно. Хоть сервис оси дёргать и жать готовности "осевым" способом. fprintf ничего и не узнает :-) На мой взгляд -- вполне аккуратно всё выходит. У других такого нет?
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Aug 11 2011, 17:07
|
Группа: Новичок
Сообщений: 3
Регистрация: 1-08-11
Пользователь №: 66 533

|
Всем доброго времени суток. Обьясните пожалуйста, что вобще озночает putchar? Что он куда записывает? Я не так давно приступил к изучению Си, читаю всяческие лекции для чайников, которые нахожу в сети, но пока не понял, что есть putchar(((
|
|
|
|
|
Dec 3 2011, 17:32
|

Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 29-11-06
Из: Ижевск
Пользователь №: 22 902

|
В чём смысл этого куска кода ? Код static uchar computeTemporaryChanges(void) /*
*/ { uchar i, status = 0, mask = 1;
for(i=0;i<8;i++){ if(actionTimers[i]) status |= mask; mask <<= 1; } return status; } и эквивалентно ли эта вся бредятина следующему; Код static uchar computeTemporaryChanges(void) /*
*/ { uchar status = 255;
return status; } сам себе отвечаю - эквивалентно лишь в том случае если все 8 ячеек массива actionTimers[i] определены! Сия бредятина исключительно хитрожопское условие.
Сообщение отредактировал ветерок - Dec 3 2011, 17:38
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|