Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Преобразуване на IntToHex();
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=7050
Страница 1 от 1

Автор:  RM [ Нед Авг 16, 2009 12:57 pm ]
Заглавие:  Преобразуване на IntToHex();

Нещо запецнах с декларирането на променливите :oops:
Трябва ми да зглобя един масив.
Код:
char tmp_byte_to_send[6],tmp_str[3];
unsigned char byte_reg[12]; трябвами така защ. имам по големи стойности от 127
int tmp_int_str;
tmp_byte_to_send[0]='A';
tmp_byte_to_send[1]='1';
tmp_int_str=(int)byte_reg[0];
tmp_str=IntToHex(tmp_int_str,2);
tmp_byte_to_send[2]=tmp_str[0];
tmp_byte_to_send[3]=tmp_str[1];
tmp_byte_to_send[5]=0;

Нещо се оплетох ... Когато взимам string от Edit поле- преобразуването бачка IntToHex(Ed->Text,2), но от масив не ще;
/////////////////
Проблема го реших по следния начин
Код:
AnsiString tmp_str;
tmp_str="A1"+IntToHex((int)byte_reg[0],2)+"";

По друг начин не се сетих???

Автор:  MYXATA [ Пон Авг 17, 2009 11:55 am ]
Заглавие: 

int to HEX :?:
HEX - 16-чна бройна система
int(integer).....
кое точно искаш да конвертираш :?:

int i;
i = 256;
i = 0x100;
това си е просто начин на записване в десетеична или 16-чна бройна система
и се пише сглобя , не зглобя

Автор:  RM [ Пон Авг 17, 2009 9:27 pm ]
Заглавие: 

Пращам дани от PC->МикроКонтролер. За да различавам кви дани пращам ги пращам като "A1(1byte дани)" "A2(1byte дани)" ....
Когато даните се окажат 0x00 или по големи от 127, се объркват масивите (или ми се кара компилатора, че не може да преобразува типовете) ... затова преобразувам 0х00 като знаци ('0''0') или цифри 30,30 ... и по лесно пращам "A100" отколкото ("A1"0x00).

Автор:  sv_shady [ Пон Авг 17, 2009 9:46 pm ]
Заглавие: 

Използвай unsigned int и няма да прелива на 127...но пак не схванах за какво конвертиране става въпрос!

Автор:  RM [ Вто Авг 18, 2009 7:28 pm ]
Заглавие: 

Май-хич ме няма по обясненията ... кво да правя с 8-ми клас съм (с мъка свършил).
За да не правя гимнастики при приемането на дани от микроконтролера, му ги подавам като пакети с фиксирана дължина.
Почвам примерно "А1хх" , "А2хх" ... където хх е 1- байт , примерно 0х00 е като "00" или шеснайсетично "0х30,0х30" а 0хFF (255) e "F,F" (0x70,0x70)
Пакета ми става стринг "A100" =0 , или "A1FF"=255. Oпитвах и с IntToStr(int) , no 0х00 ми го преобразува на "0" а не на "00" (IntToHex(int,len))
Това S:string какво означава ??? когато го нараедя с AnsiString се получава, изпращането на стринга, но когато го наредя като масив и предам с пойнтер на SendString(*byte_reg); e тогава неще. :evil:

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/