CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

a function for get a value with decimal using a keyboard4*4

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
peachgirl
Guest







a function for get a value with decimal using a keyboard4*4
PostPosted: Mon May 28, 2007 7:46 am     Reply with quote

Code:
void gestionclavier_virgule()
{                             
  int8  Bouton=0,i=0x00,j=0x00; 
  float k=1, data=0;
  entier=0;                   
  decimal=0;                 
   while(Bouton != '*')
   {
        Bouton = GetBouton();
        if(Bouton == '*')   
             break;         
        i = ch_int(Bouton);
        printf(lcd_putc, "%d",i);
        entier = entier*10 + i;         
   }
   lcd_putc('.');

   while(Bouton != '!')
   {
        Bouton = GetBouton();
        if(Bouton == '!')   
             break;         
        j = ch_int(Bouton);
        printf(lcd_putc, "%d",j);
         k=k*0.1;
        data=data+k*j;
       decimal= float_int8(data);
   }
   lcd_putc('\f');
}void gestionclavier_virgule()
{                             
  int8  Bouton=0,i=0x00,j=0x00; 
  float k=1, data=0;
  entier=0;                   
  decimal=0;                 
   while(Bouton != '*')
   {
        Bouton = GetBouton();
        if(Bouton == '*')   
             break;         
        i = ch_int(Bouton);
        printf(lcd_putc, "%d",i);
        entier = entier*10 + i;         
   }
   lcd_putc('.');

   while(Bouton != '!')
   {
        Bouton = GetBouton();
        if(Bouton == '!')   
             break;         
        j = ch_int(Bouton);
        printf(lcd_putc, "%d",j);
         k=k*0.1;
        data=data+k*j;
       decimal= float_int8(data);
   }
   lcd_putc('\f');
}


In this fuction, "entier" and "decimal" are global variable. this fonction change the value for them.

Now, I have a problem: if I want to enter for example 5, I have to enter 5.0 because of my this function.

I hope you can give me some help for that, or maybe you have a good solution for a decimal value.
inservi



Joined: 13 May 2007
Posts: 128

View user's profile Send private message

PostPosted: Tue May 29, 2007 4:58 am     Reply with quote

Hello,

Your code look to be duplicated.

If i understand, you use '*' for decimal separator and '!' as 'return' key ?

The first loop is breaking only if you type '*'. I think that you need to test for 'return' in this loop too.

as :
Code:

void gestionclavier_virgule()
{                             
  int8  Bouton=0,i=0x00,j=0x00;
  float k=1, data=0;
  entier=0;                   
  decimal=0;                 
   while(Bouton != '*' && Bouton != '!')
   {
        Bouton = GetBouton();
        if(Bouton == '*' || Bouton == '!')   
             break;         
        i = ch_int(Bouton);
        printf(lcd_putc, "%d",i);
        entier = entier*10 + i;         
   }

   while(Bouton != '!')
   {
        lcd_putc('.')
        Bouton = GetBouton();
        if(Bouton == '!')   
             break;         
        j = ch_int(Bouton);
        printf(lcd_putc, "%d",j);
         k=k*0.1;
        data=data+k*j;
       decimal= float_int8(data);
   }
   lcd_putc('\f');
}


Best regards,
dro
_________________
in médio virtus
peachgirl
Guest







PostPosted: Tue May 29, 2007 9:34 am     Reply with quote

Thank you very much!!!!!!
you are intelligente!!!! Very Happy

the programm is very good, just change a little, I have changed
I have another question: do you know if "entier" is "signed int8", what can I do for enter a negatif value(-26.5, for example)

inservi wrote:
Hello,

Your code look to be duplicated.

If i understand, you use '*' for decimal separator and '!' as 'return' key ?

The first loop is breaking only if you type '*'. I think that you need to test for 'return' in this loop too.

as :
Code:

void gestionclavier_virgule()
{                             
  int8  Bouton=0,i=0x00,j=0x00;
  float k=1, data=0;
  entier=0;                   
  decimal=0;                 
   while(Bouton != '*' && Bouton != '!')
   {
        Bouton = GetBouton();
        if(Bouton == '*' || Bouton == '!')   
             break;         
        i = ch_int(Bouton);
        printf(lcd_putc, "%d",i);
        entier = entier*10 + i;         
   }

   if(Bouton == '*')
    lcd_putc('.');


   while(Bouton != '!')
   {
         Bouton = GetBouton();
        if(Bouton == '!')   
             break;         
        j = ch_int(Bouton);
        printf(lcd_putc, "%d",j);
         k=k*0.1;
        data=data+k*j;
       decimal= float_int8(data);
   }
   lcd_putc('\f');
}


Best regards,
dro
inservi



Joined: 13 May 2007
Posts: 128

View user's profile Send private message

PostPosted: Wed May 30, 2007 1:02 am     Reply with quote

Hello,

peachgirl wrote:

you are intelligente!!!!

in my case, the experiment makes more than the intelligence. (even if I am a man)

For enter a negative value, i think that you need to use a special key (other than '*' or '!' like '-' if you have in your keyboard) or, you can presses twice '*' for indicate to change the sign. Do not forget that a signed int8 can handle only +127 to -127.

sorry for my bad English (normally, I speak French)

dro
_________________
in médio virtus
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group