Je rencontre un problème sur lequel je tourne en rond.
Sur un Arduino, j'ai un émetteur 433Mhz et sur un autre Arduino, il y a le récepteur.
Depuis l'émetteur, j'envoie le message "1-2" avec le code suivant:
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
char i;
if (vw_get_message(buf, &buflen))
{
// // Un message est reçu.
if (buf[i] == '1-2')
{
//code non execute
}
else
{
}
Depuis le récepteur, le Moniteur(avec un autre bout de code) reçoit bien 1-2.
Par contre, mon code après le if ne s'éxecute pas.
Il me semble que cela provient du char i. J'ai modifié avec String mais j'ai une erreur à la compilation.
J'ai testé avec simple cote, doule cote, parenthèses...y a rien à faire.
Je dois avoir une mauvaise approche sur les variable i et buf mais je n'arrive pas à trouver.
utilise strcmp pour comparer des chaînes de caractères.
En tous cas, la partie '1-2' est erronnée car ce n'est pas une chaîne de caractères, mais le caractère '1'.
avec un Serial.write(buf*) et en déclarant char i[0] puis char i[1].., j'ai vérifié que je pouvais lire tous mes caractères. C'est le cas* - si je déclare char i[4], j'ai une erreur "invalid types 'uint8_t [80] {aka unsigned char [80]}[char [4]]' for array subscript" - avec char i[], ca ne fonctionne pas non plus - avec char buf pas mieux - avec la concaténation de i[0] et i[1] et i[2], rien Après 4 heures de recherche, je peux dire que l’émetteur envoie bien const char *msg = "1-2" au récepteur et le récepteur le reçoit intégralement. Mais je n'arrive toujours pas à lire dans buf(i) tout le message, soit 1-2 Vos idées sont les bienvenues
bonjour,
un peut normal pour le récepteur
if (buf ne correspond qu'un un "caractère" et non la totalité remplace par ceci * *if (vw_get_message(buf, &buflen)) // On copie le message, qu'il soit corrompu ou non { Serial.print("RX : "); for (byte i = 0; i < buflen; i++) // Si il n'est pas corrompu on l'affiche via Serial Serial.print(buf[i]); Serial.println(""); }* * tu devrais voir les caractères arriver. as toi de les mettre bout à bout pour faire ta comparaison
Et pour compléter ce que dit infobarquee, en C, on ne peut pas comparer 2 chaines comme tu l'as fait : if(chaine1 == chaine2)
Il faut utiliser la fonction strncmp
Il y a une autre solution sur arduino, la solution C++ avec la class String