roboforum.ru

Технический форум по робототехнике.

Преобразование int В char

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Преобразование int В char

Сообщение EasyTech » 06 янв 2012, 16:00

ПОмогите пожалуйста, напсал прогу для чтения температуры. на LCD всё работает. Решил отправить температу по уарту. Тут начались проблемы.
У меня есть функция для отправки данных по уарт.
Код: Выделить всёРазвернуть
void USART_SendChar(unsigned char sym)
{
  while(!(UCSRA & (1<<UDRE)));
  UDR = sym;
}

и есть переменная содеражащая температуру:
Код: Выделить всёРазвернуть
uint16_t temp;

Пишу я в while(1) такую шнягу.
Код: Выделить всёРазвернуть
if (symbol == 't') {USART_SendChar((char)temp);}

МК не шлёт эту команду. Я не знаю как быть, мне кажется что я не правильно перевожу переменную int в char :(
Может как то через указатели сделать, дайте пожалуйста просто совет.
И вообще как числа (не char) посылать по уарту ? а то много проектов стоит из за этого.

Добавлено спустя 3 минуты 30 секунд:
И вот ещё, можно ли давать МК обрабатывать сразу несколько команд(обработка температуры, вольтметр, прием команд по уарт и т.п.) или нужно ставить для этого rtos или какую нибудь событейную система (типо чтобы по очереди обрабатывалось всё).
Последний раз редактировалось EasyTech 06 янв 2012, 21:23, всего редактировалось 1 раз.
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: Некие проблемы

Сообщение Duhas » 06 янв 2012, 19:56

про детали типов на Си вам расскажут другие лучше меня, а вот чтобы выполнять много мелких задач не надо чего-то ставить, надо включить мозг и разобраться как работает МК, а следом - написать программу которая все это делает..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Некие проблемы

Сообщение Romikgy » 06 янв 2012, 20:00

если есть в протеусе ... выкладывай ... с исходниками конечноже
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: Некие проблемы

Сообщение Scorpio » 06 янв 2012, 20:05

А каким компилятором пользуешься? Вот тут http://proavr.narod.ru/z5.htm посмотри.
Аватара пользователя
Scorpio
 
Сообщения: 2669
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Некие проблемы

Сообщение Myp » 06 янв 2012, 20:18

для начала неплохо бы зашить в МК чисто программу которая отсылает обратно то что получает по усарту.
тогда ты убедишься что у тебя оно вобще работает и всё правильно инициализированно и провода не перепутаны
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Преобразование int В char

Сообщение EasyTech » 06 янв 2012, 21:26

на Американском сайте ответили мне :)
Сказали использовать itoa();
проверил :) работает :) :D
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: Преобразование int В char

Сообщение Aseris » 06 янв 2012, 23:37

Так эт не в сhar Itoa... адрес переменной в си берется "&переменная"... а как ты передаешь 2 байта 1 ... это отдельный вопрос...
Аватара пользователя
Aseris
 
Сообщения: 1142
Зарегистрирован: 01 сен 2009, 14:58
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python

Re: Преобразование int В char

Сообщение EasyTech » 07 янв 2012, 10:54

Aseris писал(а):Так эт не в сhar Itoa... адрес переменной в си берется "&переменная"... а как ты передаешь 2 байта 1 ... это отдельный вопрос...

int8_t. problem?))
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: Преобразование int В char

Сообщение Aseris » 07 янв 2012, 16:28

А это уже экзотика.. и не ANSI C ...

есть

CHAR/BYTE int8/uint8 1 байт
int/WORD int16/uint16 2 байта
long/SWORD int32/uint32 4 байта

Я так понял, задачей было перевести бинарное значение в строку...
Аватара пользователя
Aseris
 
Сообщения: 1142
Зарегистрирован: 01 сен 2009, 14:58
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python

Re: Преобразование int В char

Сообщение EasyTech » 08 янв 2012, 10:55

Aseris писал(а):А это уже экзотика.. и не ANSI C ...

есть

CHAR/BYTE int8/uint8 1 байт
int/WORD int16/uint16 2 байта
long/SWORD int32/uint32 4 байта

Я так понял, задачей было перевести бинарное значение в строку...

Да, кстати и не надо было писать int8_t. функция itoa(); спокойно переводит в char любое целое число не важно long long или short, или int :)
Правда не переводит числа с плавающей точкой, обидно. там уже нужна функция sprintf();
Я вот что хотел спросить. ПОдскажите пожалуйста хорошие алгоритмы или протоколы передачи данных по уарт.

Добавлено спустя 31 секунду:
и вот что лучше, как вы думаете... использовать crc8 или modbus?
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: Преобразование int В char

Сообщение elmot » 09 янв 2012, 11:03

crc8 - это не протокол, а алгоритм подсчета контрольной суммы. Можно применять как детектор искажений передачи и часть протокола.
А для чего протокол-то? Стоит ли городить совместимость со сложными протоколами? Лично я сам для себя использую модем-подобный протокол (AT).
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Преобразование int В char

Сообщение Aseris » 12 янв 2012, 02:56

EasyTech писал(а):Правда не переводит числа с плавающей точкой, обидно. там уже нужна функция sprintf();


А в чем проблема передавать бинарное значение и интерпретировать его на второй стороне?

Напр передать значение типа DWORD

DWORD a;

a=0x12131415;

UART_Send((BYTE*)&a,4); // передача битового массива первый аргумент адрес масива, второй размер..
так же передаем хоть флоат, тока интерпретируем потом правильно и размер пишем правильно.

В чем сложность то?

Или тему переименовать нужно преобразование числа в строку? int to string например, ибо в сhar помещается 1 символ, СИМВОЛ
Аватара пользователя
Aseris
 
Сообщения: 1142
Зарегистрирован: 01 сен 2009, 14:58
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

cron