btminzon
Full Member level 2
Hi friends,
I´m with a simple (but painfull) problem using long variable. I need to transmit serially a 7-digit long variable (signed). I´m transmitting in ASCII mode. So, i pick digit by digit and add 0x30 and send. But the most significant digits are not correct, when the number becomes negative. Here my code. Any suggestion? tanks a lot
unsigned long charMod1Milhao;
unsigned long charMod1MilhaoMod100Mil;
unsigned long charMod1MilhaoMod100MilMod10Mil;
unsigned long charMod1MilhaoMod100MilMod10MilModMil;
unsigned long charMod1MilhaoMod100MilMod10MilModMilMod100;
charMod1Milhao = (unsigned long)(CotaEixoZ % 1000000);
charMod1MilhaoMod100Mil = charMod1Milhao % 100000;
charMod1MilhaoMod100MilMod10Mil = charMod1MilhaoMod100Mil % 10000;
charMod1MilhaoMod100MilMod10MilModMil = charMod1MilhaoMod100MilMod10Mil % 1000;
charMod1MilhaoMod100MilMod10MilModMilMod100 = charMod1MilhaoMod100MilMod10MilModMil % 100;
PutCh((unsigned char)(CotaEixoZ / 1000000) + 0x30);
PutCh((unsigned char)(charMod1Milhao / 100000) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100Mil / 10000) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100MilMod10Mil / 1000) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100MilMod10MilModMil / 100) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100MilMod10MilModMilMod100 / 10) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100MilMod10MilModMilMod100 % 10) + 0x30);
The code is compiling normally, but only the result is incorrect. The serial is ok also. The long variable is 8 bytes unsigned
Breno
I´m with a simple (but painfull) problem using long variable. I need to transmit serially a 7-digit long variable (signed). I´m transmitting in ASCII mode. So, i pick digit by digit and add 0x30 and send. But the most significant digits are not correct, when the number becomes negative. Here my code. Any suggestion? tanks a lot
unsigned long charMod1Milhao;
unsigned long charMod1MilhaoMod100Mil;
unsigned long charMod1MilhaoMod100MilMod10Mil;
unsigned long charMod1MilhaoMod100MilMod10MilModMil;
unsigned long charMod1MilhaoMod100MilMod10MilModMilMod100;
charMod1Milhao = (unsigned long)(CotaEixoZ % 1000000);
charMod1MilhaoMod100Mil = charMod1Milhao % 100000;
charMod1MilhaoMod100MilMod10Mil = charMod1MilhaoMod100Mil % 10000;
charMod1MilhaoMod100MilMod10MilModMil = charMod1MilhaoMod100MilMod10Mil % 1000;
charMod1MilhaoMod100MilMod10MilModMilMod100 = charMod1MilhaoMod100MilMod10MilModMil % 100;
PutCh((unsigned char)(CotaEixoZ / 1000000) + 0x30);
PutCh((unsigned char)(charMod1Milhao / 100000) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100Mil / 10000) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100MilMod10Mil / 1000) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100MilMod10MilModMil / 100) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100MilMod10MilModMilMod100 / 10) + 0x30);
PutCh((unsigned char)(charMod1MilhaoMod100MilMod10MilModMilMod100 % 10) + 0x30);
The code is compiling normally, but only the result is incorrect. The serial is ok also. The long variable is 8 bytes unsigned
Breno