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

 
 
> Как вывести форматированную переменную типа Float в UART?
Ivan Kuznetzov
сообщение Apr 6 2009, 04:43
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Извините за глупый вопрос...
Например есть значение 5.910 в float, надо чтобы в UART отправлялось 0005.910

туплю я седня...

Сообщение отредактировал Ivan Kuznetzov - Apr 6 2009, 04:45


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
velbovv
сообщение Apr 6 2009, 05:24
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 30-07-08
Пользователь №: 39 290



Если отправлять 0005.910 - необходимо использовать prntf(в буфер), а далее этот буфер
просто отправляешь по UART. В данном случае необходимо отправлять 8 байт.
Более оптимально отправлять само число (float), для этого необходимо 4 байт.
Тут проще - извлекает адрес переменной (float), приводите его к типу char, и передаете
его в UART.
Удачи.
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 16 2009, 00:47
Сообщение #3


кекс
******

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



Цитата(velbovv @ Apr 6 2009, 08:24) *
Если отправлять 0005.910 - необходимо использовать prntf(в буфер), а далее этот буфер
просто отправляешь по UART.

Не проще printf сразу в uart?

Цитата
А действительно для чего передавать строкой, Вы что потом в терминале наблюдаете результат или у Вас протокол аскишный?

Ну например Log вести или консолька.
Цитата
Эффективнее передавать бинарными данными, как Вам ране уже советовали

неэффективно потом это читать.

Цитата(Tcom @ Apr 6 2009, 08:28) *
Я делаю так:

Но лучше так не делать.

Когда надо слать просто данные побайтово, целесообразно сделать унифицированную функцию отправки данных побайтово:
Код
void xx_SendData( void *ptr, int size)
{
    while(size--)
    {
        put( *(U8 *)ptr );  // ваша функция отправки символа куда требуется
        ptr = (U8 *)ptr + 1;
    }
}

И пользовать ее для передачи любых данных

float x = 3.14;
double y = 3.14;
struct
{
...
} z;

xx_SendData( &x, sizeof( x ));
xx_SendData( &y, sizeof( y ));
xx_SendData( &z, sizeof( z ));
Go to the top of the page
 
+Quote Post



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

 


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


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