[Résolu] Transfert d'entier

Bonjour,

Je me présente devant vous afin de solliciter votre aide.

Voilà je suis tout nouveau dans le monde d'Arduino. Et je suis actuellement en train d'essayer de mettre en place une solution qui va me permettre d'envoyer des paquet d'entiers grâce à un module émetteur 433Mhz.

Partie tranmission :

char test[]="bonjour";   

for (int i=0; i<=sizeof(test);i++)    //Parcours le tableau avec i <= a taille de test
    {
      int integer = (((int)test[i])+10); //Convertir la valeur de i en entier et on ajoute + 10
      Serial.print(integer);          //Pas besoin de commmenter
      vw_send((uint8_t *)test, strlen(test));
      vw_wait_tx(); // Wait until the whole message is gone
    }

Pourquoi le +10 ? Tout simplement parce que je veux chiffrer ma trame donc j'utilise la table ASCII et je rajoute + 10 afin de fausser les données envoyer

Partie réception :

 if (vw_get_message(buf, &buflen)) // Non-blocking
    {
    int i;


    Serial.print("Got: ");
    
    for (i = 0; i < buflen; i++)
    {
        char msg = ((char)(buf[i]));
        Serial.print(msg);

    }
      Serial.println(" ");
    }

Le problème est qu'avec la conversion avec les INT rien n'est reçu... ou du moins rien n'est envoyé va savoir.

Pouvez-vous s'il vous plaît m'aider?

Vous remerciant,

Salut,

Plusieurs choses :

  • Est-ce que ça marche avec les exemples de base ? Histoire d'écarter un problème de connexion ou autre.
  • Ca n'a pas forcément de rapport avec ton problème, mais tu passes par integer pour faire ta conversion mais tu envois test[], du coup forcément ... Dans tous les cas tu n'as pas à faire toutes ces transformations pour incrémenter simplement de 10. Si on considère que tu restes sur une table ASCII non étendue (donc de 0 à127), tu as largement la place qu'il faut dans un char (0 à 255)pour incrémenter de 10 :
char test[]="bonjour";   
for (int i=0; i<=sizeof(test);i++)    test[i] = test[i] + 10;
vw_send((uint8_t *)test, strlen(test));
vw_wait_tx();
  • A la réception ce n'est pas bon, tu confond caractère et chaine de caractère :

char msg = ((char)(buf[i])); 

Et tu ne soustraies pas 10 ...

Plutôt :

if (vw_get_message(buf, &buflen)) // Non-blocking
    {

    Serial.print("Got: ");
   
for(int i=0;i<buflen;i++) buf[i] = buf[i] - 10;
        Serial.print((char*)buf);

    
      Serial.println(" ");

    }

Bonjour

Je te remercie de ta réponse.
Pour te répondre tout passe à merveille avec le code de base.
Concernant le second point je vois mieux le souci.
Je te remercie je test cette après-midi et je reviendrai donner des nouvelles.
Mille merci.

Edit : J'ai pu tester cela fonctionne à merveille.
Encore une fois merci.