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

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

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

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

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

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


Закрытая тема
Опции темы
Непрочитано 19.11.2012, 11:57   #11
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 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   #12
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   #13
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
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   #14
ewseltek
Частый гость
 
Регистрация: 14.07.2010
Сообщений: 30
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
ewseltek на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

По поводу ошибки о _sbrk - надо добавить файл syscalls.c - найдите его - там она есть - не найдете - я могу выслать.
ewseltek вне форума  
Непрочитано 13.08.2016, 07:07   #15
Bill
Гражданин KAZUS.RU
 
Регистрация: 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   #16
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Преобразование числа в строку STM32 Cocox

Bill "Все свое ношу с собой" - никаких ссылок на дополнительные библиотеки.
Hives вне форума  
Непрочитано 05.11.2016, 17:58   #17
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, время: 19:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot