Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Преобразование числа в строку STM32 Cocox

Непрочитано 19.11.2012, 11:57  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

сколько байт зарезервировано в str1?
strcat - дописывает в str1 содержимое str2.
Попробуйте:
char str[256];
strcpy(str,str1);
strcat(str,str2);
Реклама:
Boba_spb вне форума  
Непрочитано 13.08.2015, 14:58  
orffey
Прохожий
 
Регистрация: 31.01.2009
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
orffey на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Сообщение от Hives Посмотреть сообщение
sanstan традиционный вопрос - гугл забанил? за минуту ищется эта непрописанная почему то в GCC библиотека для линковки "sprintf".

Sanstan можешь пожалуйста объяснить новичку, как можно добавить библиотеку для линковки в ide (если скажешь как в кокос, будет просто прелестно) так чтоб к примеру sprintf заработал.
orffey вне форума  
Непрочитано 30.06.2016, 23:01  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Вот мой код:
Преобразует число в строку.
Например: FloatToString(-2103.225423, (char*)txt2, 5)
вернет текст "-2103.22542" без последней цифры 3 т.к. округляет до пятого знака после запятой.
Код:
void FloatToString (float Value, char * String, char Accuracy)
{
	signed long k = 1;
	unsigned long tmp; 
	unsigned char Len;
	while (Accuracy--) k *= 10;
        tmp = MOD ((signed long)((Value*(float)k)) - ((signed long)Value)*k);
        if (Value ‹ 0) 
        {
          * String++ = '-';
          Value = -Value;
        }
	uLongToStr((unsigned long)Value, String);
	Len = StringLen(String);
	String[Len++]='.';
	uLongToStr(tmp, String + Len);
}
Преобразует беззнаковый лонг в строку. Вспомогательная функция.
Код:
void uLongToStr (unsigned long Value, char * String)
{
  char zero = 0;
  char tmp = 0;
  unsigned long cnt = 1000000000;
  while (cnt != 1)
  {
    while (Value ›= cnt)
    {
      Value -= cnt;
      tmp++;
    }
    if (tmp) zero = 1;
    if (zero) * String++ = tmp + 48;
    tmp = 0;
    cnt /= 10;
  }
  * String++ = Value + 48;
  * String = 0;
}
Вычисляет длину строки.
Код:
unsigned char StringLen (char * String)
{
        char cnt = 0;
        while (* String++) cnt++;
        return cnt;
}
Берет модуль числа.
Код:
unsigned long MOD (signed long Value)
{
	if (Value › 0) 
          return Value;
	else 
          return -Value;
}
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
Zoosman (23.08.2016)
Непрочитано 12.08.2016, 10:42  
ewseltek
Частый гость
 
Регистрация: 14.07.2010
Сообщений: 30
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
ewseltek на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

По поводу ошибки о _sbrk - надо добавить файл syscalls.c - найдите его - там она есть - не найдете - я могу выслать.
ewseltek вне форума  
Непрочитано 13.08.2016, 07:07  
Bill
Гражданин KAZUS.RUN
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Сообщение от Easyrider83 Посмотреть сообщение
Вычисляет длину строки.
Код:
unsigned char StringLen (char * String)
{
char cnt = 0;
while (* String++) cnt++;
return cnt;
}
И зачем она? Есть же библиотечная функция strlen. Или нет?
Bill вне форума  
Непрочитано 29.08.2016, 22:58  
Hives
Гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Bill "Все свое ношу с собой" - никаких ссылок на дополнительные библиотеки.
Hives вне форума  
Непрочитано 05.11.2016, 17:58  
verchenko
Прохожий
 
Регистрация: 05.11.2016
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
verchenko на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Вот рабочее решение, без сторонних библиотек.
Можно оптимизировать под свои нужды.
Код:
uint32_t pow(uint8_t a, uint8_t b) {
	uint32_t c = 1;
	uint8_t i;
	for (i = 0; i ‹ b; i++) {
		c *= a;
	}
	return c;
}

uint8_t number_size(uint64_t number) {
	uint8_t result = 0;
	if (number › 0) {
		while (number != 0) {
			number /= 10;
			result++;
		}
	} else {
		result = 1;
	}
	return result;
}

char buf[16] = "";

void LCD_PrintFloat(double value, uint8_t decimal)
{
	uint64_t integer = (uint64_t)value;
	uint64_t fractional = (uint64_t)((value - integer) * pow(10, decimal));
	uint8_t size = number_size(integer);
	uint32_t div;
	uint8_t i;
	for (i = 1; i ‹= size; i++) {
		div = pow(10, size - i);
		buf[i - 1] = (uint64_t)(integer / div) + 0x30;
		integer = integer % div;
	}
	if (decimal › 0) {
		buf[size] = '.';
		for (i = 1; i ‹= decimal; i++) {
			div = pow(10, decimal - i);
			buf[i + size] = (uint64_t)(fractional / div) + 0x30;
			fractional = fractional % div;
		}
	}
}
verchenko вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование числа vvkka Микроконтроллеры, АЦП, память и т.д 12 27.12.2011 01:44
Преобразование 2-х байтного числа в набор десятизначных цифр (Assembler,PIC) Opasif Микроконтроллеры, АЦП, память и т.д 6 29.04.2011 19:52
преобразование 16bit числа на Си (нужна помощь) Uz_Sleep_Walker Микроконтроллеры, АЦП, память и т.д 4 19.02.2010 15:49
как записать строку в массив? dimonbest Микроконтроллеры, АЦП, память и т.д 8 27.02.2008 12:18
преобразование числа для занесения его в регистр на PIC16F84 CERGEI1982 Микроконтроллеры, АЦП, память и т.д 9 11.01.2007 17:47


Часовой пояс GMT +4, время: 11:56.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.