2010-11-01 4 views
1

Je souhaite que les utilisateurs saisissent deux chiffres à l'aide de la commande c = ReceiveByte(). Par exemple, je veux que l'utilisateur procédez comme suit:Comment combiner deux entrées reçues et les lire comme un nombre entier dans WINAVR?

Enter 5 
Enter 3 
Output number 53 in ascii value on screen (using hyperterminal) 
Store number in a single array 
Use that number for other loops etc. 

Mon projet de code est:

. 
. 
int c1[3]; 
c1[0]=ReceiveByte(); 
c1[1]=ReceiveByte(); 
. 
. 
for(i=0;i<3;i++) 
TransmitByte(c1[i]); 
. 
. 

Est-ce vrai? ou est-ce que je stocke les 2 chiffres incorrectement?

Merci beaucoup pour votre aide!

Répondre

1

Pour la sortie, vous n'avez pas besoin de modifier c1 [0] et c1 [1] car ceux-ci contiennent déjà les caractères tels que saisis. En tant que votre code, vous devez juste vous assurer que c1 [2] contient un caractère valide, par ex.

c1[2] = '\n'; 

BTW, si vous avez besoin pour obtenir le numéro entré comme un entier:

int num = (c1[0] - '0') * 10 + (c1[1] - '0'); 
1

Puisque vous semblez recevoir octets de la fonction Receivebyte(), vous devez les stocker sous forme d'octets (char non signé), pas comme des entiers, car l'utilisation d'un entier pour stocker un seul octet gaspille 3 octets de mémoire. Sinon, votre implémentation d'écho devrait fonctionner - même si vous pouvez ajouter des protections contre un utilisateur qui envoie des caractères non numériques.

Vous devrez convertir les caractères de 5 'et « 3 » ASCII (codes ASCII 53 et 51) à theire valeur numérique (soustraire 48 de chaque que les numéros vont de 48 à 57 du schéma de codage ASCII)

Questions connexes