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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Вывод с помощью fprintf в WinAVR, Помогите с форматированным выводом
demiurg_spb
сообщение Jul 4 2011, 19:07
Сообщение #16


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

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



Цитата(smk @ Jul 4 2011, 16:01) *
Теперь пытаюсь понять как пользоваться.

Да вроде всё тривиально.
Цитата
char* dtostrf (double __val, char __width, char __prec, char * __s)

The dtostrf() function converts the double value passed in val into an ASCII representationthat will be stored under s. The caller is responsible for providing sufficient storage in s. Conversion is done in the format '[-]d.ddd'. The minimum field width of the output string (including the '.' and the possible sign for negative values) is given in width, and prec determines the number of digits after the decimal sign.

The dtostrf() function returns the pointer to the converted string s.
Разве нет?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
smk
сообщение Jul 4 2011, 19:29
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Чет не выходит. Наверно таки проще свою процедурку излабать.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 4 2011, 19:34
Сообщение #18


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

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



Вольному - воля.
PS: если аргумент prec отрицательный то выравнивание по левому краю.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
smk
сообщение Jul 4 2011, 20:15
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



я тут похоже с указателем напутал. вывод на дисплейчик происходит из
Код
FILE lcd_str = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE);
stderr = &lcd_str;
dtostrf (frq, 3, 1, stderr);
наверно так не правильно.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jul 4 2011, 23:15
Сообщение #20


Нечётный пользователь.
******

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



Цитата(demiurg_spb @ Jul 4 2011, 12:49) *
Тоже давненько наткнулся на отсутствие обработки символа звёздочка в форматере printf'a в gcc.
В avr-gcc. Так как в "большом" (lin/win) всё с этим нормально.
Для армов не проверял пока.


Цитата(smk @ Jul 4 2011, 23:15) *
наверно так не правильно.
Конечно неправильно. И в описании, и в прототипе функции явно видно, что нужно выводит в строку (символьный массив). А уже строку потом puts-ом в нужный поток.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
smk
сообщение Jul 5 2011, 06:31
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(ReAl @ Jul 5 2011, 02:15) *
Конечно неправильно. И в описании, и в прототипе функции явно видно, что нужно выводит в строку (символьный массив). А уже строку потом puts-ом в нужный поток.

Как правильно сделать не подскажите? Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 5 2011, 06:52
Сообщение #22


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

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



Код
FILE myout = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE);
stderr  = &myout;
stdout = &myout;

char str[40];
dtostrf (frq, 3, 1, str);
puts(str); // или printf("F = %s Hz\n", str);


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
smk
сообщение Jul 5 2011, 07:13
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(demiurg_spb @ Jul 5 2011, 09:52) *
Код
FILE myout = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE);
stderr  = &myout;
stdout = &myout;

char str[40];
dtostrf (frq, 3, 1, str);
puts(str); // или printf("F = %s Hz\n", str);

как-то нужно из массива в строку мне кажется


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 5 2011, 07:20
Сообщение #24


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

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



Цитата(smk @ Jul 5 2011, 11:13) *
как-то нужно из массива в строку мне кажется

Не понял.
Я дал Вам рабочий вариант как мне думается.
В си массив и строка по сути одно и то же.

Я понял. Вам нужна хорошая книга по си. А то Вы тут строите какие-то догадки и предположения на пустом месте.
Извините я умываю руки.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 17:43
Рейтинг@Mail.ru


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