Go Down

Topic: Mettre une variable de type 0xFF ou B10101010 dans une variable byte ? (Read 1 time) previous topic - next topic

TheSnowyx

Bonjour à tous :) ,
je suis un débutant en arduino et je cherche par le biais d'une application bluetooth envoyer à la carte arduino, avec un modems bluetooth, des message de type 0xFF ou B10100111, cela marche parfaitement.

Le message envoyer est stoker dans une variable string, mais je n'arrive pas intégrer se message dans une variable byte de ce type :

   - byte dessin[8]=   {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};

Comment faire à partir d'un string pour le mettre dans la variable byte, comme cela :

       String messRecu = "0xFF" ou "B11111111";
       byte dessin[8]= {0x12,0x81,0x13,0x87,0x45,0x36,0x75,messRecu};

Mais il y a une erreur : "cannot convert 'String' to 'byte {aka unsigned char}' in initialization"

Merci de prendre en compte mon Message,
Adrien :)

Jambe

C'est normal, tu essaie de mettre une variable de type String dans un tableau de byte.
 
C'est pas possible. Le compilo ne le permet pas, d'où le message d'erreur.

Utiliser la classe String n'est pas une tres bonne idée, (je l'ai appris à mes dépends). Ne peux tu pas recevoir ta valeur directement sous la forme d'un "char" ou d'un "byte"?

Sinon il faudra transtyper ta variable de String vers byte

J-M-L

comme le dit Jambe, messRecu est une chaine de caractères, pas une valeur d'un octet qui ira bien dans le tableau.

il faut donc l'interpréter

la fonction C strtol() peut analyser une chaîne de caractères (pas un instance de la classe String, faudra demander sa représentation mais comme le dit Jambe, vaut mieux ne laisser de côté cette classe) dans une base donnée (base 2 = binaire, base 8 = octal, base 10 décimale celle que vous connaissez et utilisez tous les jours, base 16 = hexadécimal)


Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

TheSnowyx

Merci J-M-L et Jambe,
Pourriez vous me dire comment je pourrais faire pour pouvoir transformer le string  MessRecu  pour pouvoir l'intégrer ensuite dans le tableau byte ?
Adrien

TheSnowyx

Merci _pepe_ ,
Je rencontre un dernier problème, je voudrais savoir comment on transforme un string Binaire "10110110" en un string Hexadécimal de cette forme "0xB6" ?

TheSnowyx

Merci,
Cela m'affiche ça :

- declared here extern long strtol(const char *__nptr, char **__endptr, int __base);

   exit status 1
   too few arguments to function 'long int strtol(const char*, char**, int)'

TheSnowyx

Pour maintenant l'intégrer dans mon tableau byte comment dois-je faire, j'ai essayé de Mettre hexTxt dans une variable string avec une boucle for :

String hextextstring;

for(int i = 0; i<4;i++){
  hextextstring += hextxt;
}

Puis de faire :

byte monbyte;
hextextstring.getBytes(monbyte,hextextstr.length());

Puis de faire :

byte  gauche[8]=    {monbyte,0x18,0x3C,0x5A,0x18,0x18,0x18,0xFF};

Et sa m'affiche l'erreur suivante:

initializing argument 1 of 'void String::getBytes(unsigned char*, unsigned int, unsigned int) const'

  void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const;

Go Up