RCSwitch via Serial

Bonjour à tous!
Ca faisait longtemps que je n’avais pas posté…
Je me retourne vers vous car la, je seche completement!
Je souhaiterais utiliser RCSwitch via Serial.
Je m’explique :
RCSwitch sert à commander des prises électriques 433Mhz.
Il permet d’allumer ou éteindre des prises via un emetteur RF.
Dans cette librairie, il y a une méthode (send) qui permet d’envoyer un numéro plutot qu’un code binaire
Le problème est que ce numéro est de type long.
Je souhaiterais envoyer ce “long” via Serial à l’arduino pour qu’il allume une prise.
La question est : Comment recevoir un unsigned long via Serial?
Je n’arrive pas à convertir…

Merci d’avance!

Découpe ton long en byte et fais un petit algo qui te le recompose.

Édit : un long est un code binaire tout dépend de comment tu le notes : binaire / décimal / hexa

Edit : Je dis n'importe quoi, navré.

Merci tout de meme! Personne d'autre n'a d'idées?

Salut, du meme avis que Deder9161.

Quand tu écris un nombre dans la console Serial, et que tu l'envoies, à la reception, tu auras un tableau de bytes. A toi de reconstituer ce tableau dans un long. C'est juste du decalage de bits et du masquage. Tu vois?

Salut,

Me revoici, un peu plus en forme qu’hier soir :smiley:

L’astuce consiste a passer par un buffer (ici char*). J’ai bricolé ça pour l’exemple :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
    unsigned long emi = 4294967295L; // valeur de départ : taille maxi d'un ulong
    unsigned long rec = 0; // représentera la valeur à l'arrivée
    char* buffer = malloc(sizeof(long)); // pour le transfert...

    memcpy(buffer, &emi, sizeof(long));

    printf("Taille : %lu\n", sizeof(buffer));
    printf("Valeur au depart : %lu\n", emi);

    // buffer peut donc être transferé.

    // côté réception :
    memcpy(&rec, buffer, sizeof(long));

    // on vérifie :
    printf("Valeur a l'arrivee : %lu\n", rec);

}
NC-MNI:TestArduinoForum nicolasc$ nano main.c
NC-MNI:TestArduinoForum nicolasc$ gcc main.c -o main
NC-MNI:TestArduinoForum nicolasc$ ./main
Taille : 8
Valeur au depart : 4294967295
Valeur a l'arrivee : 4294967295
NC-MNI:TestArduinoForum nicolasc$

Ici, mon sizeof(long) renvoie 8, je suis sous Mac OS 64. Sur un arduino ton paquet devrait faire 4 octets.

À plus,


N.