Permet de créer, envoyer, filtrer et decrypter la trame meteo.

Dependencies:   mbed meteoCAN

Committer:
Station_Meteo_Laos
Date:
Sat Jun 29 20:16:17 2019 +0000
Revision:
2:4a57fcb1ab30
Parent:
1:265dc028a37d
Permet de creer, envoyer, filtrer et decrypter la trame meteo.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Station_Meteo_Laos 0:ddcef4072662 1 #include "mbed.h"
Station_Meteo_Laos 1:265dc028a37d 2 #include "meteoCAN.h"
Station_Meteo_Laos 0:ddcef4072662 3
Station_Meteo_Laos 0:ddcef4072662 4 #define can_len 8
Station_Meteo_Laos 0:ddcef4072662 5
Station_Meteo_Laos 0:ddcef4072662 6 Serial pc(USBTX, USBRX, 115200); // tx, rx for Tera Term output
Station_Meteo_Laos 0:ddcef4072662 7
Station_Meteo_Laos 0:ddcef4072662 8 DigitalOut myled(LED1); // LED1 displays messsage sent Status
Station_Meteo_Laos 0:ddcef4072662 9 CAN can1(PA_11, PA_12); // CAN interface
Station_Meteo_Laos 1:265dc028a37d 10 meteoCAN meteo(PA_11, PA_12);
Station_Meteo_Laos 0:ddcef4072662 11 CANMessage msg; // create empty CAN message
Station_Meteo_Laos 0:ddcef4072662 12
Station_Meteo_Laos 0:ddcef4072662 13
Station_Meteo_Laos 0:ddcef4072662 14 int main() {
Station_Meteo_Laos 0:ddcef4072662 15
Station_Meteo_Laos 2:4a57fcb1ab30 16 uint16_t i, octet;
Station_Meteo_Laos 0:ddcef4072662 17 char trame[8];
Station_Meteo_Laos 1:265dc028a37d 18 bool readCAN=false;
Station_Meteo_Laos 0:ddcef4072662 19
Station_Meteo_Laos 2:4a57fcb1ab30 20 while(1){
Station_Meteo_Laos 2:4a57fcb1ab30 21
Station_Meteo_Laos 1:265dc028a37d 22 readCAN=false;
Station_Meteo_Laos 2:4a57fcb1ab30 23 pc.printf("**********Envoi de la Requete meteo par bus CAN**********\n\n");
Station_Meteo_Laos 2:4a57fcb1ab30 24
Station_Meteo_Laos 2:4a57fcb1ab30 25 //Tant que readCAN est faux,autrement dit tant qu'il n'y as pas de trame à lire sur le Bus CAN
Station_Meteo_Laos 2:4a57fcb1ab30 26 while(readCAN == false){
Station_Meteo_Laos 2:4a57fcb1ab30 27 //Envoi d'un requête météo avec l'ID 21
Station_Meteo_Laos 2:4a57fcb1ab30 28 if (can1.write(CANMessage(21, trame, 0))) {
Station_Meteo_Laos 2:4a57fcb1ab30 29 pc.printf("Message envoye !\n");
Station_Meteo_Laos 1:265dc028a37d 30 myled = !myled;
Station_Meteo_Laos 1:265dc028a37d 31 }
Station_Meteo_Laos 1:265dc028a37d 32 else{
Station_Meteo_Laos 1:265dc028a37d 33 pc.printf("Echec de l'envoi\n");
Station_Meteo_Laos 2:4a57fcb1ab30 34 can1.reset(); // Reset le bus CAN en cas de problème
Station_Meteo_Laos 1:265dc028a37d 35 }
Station_Meteo_Laos 2:4a57fcb1ab30 36 wait(1.0); // Paus de 1s
Station_Meteo_Laos 2:4a57fcb1ab30 37 //readCAN reste faux si aucune trame n'est reçu, sinon devient vrai
Station_Meteo_Laos 1:265dc028a37d 38 readCAN = can1.read(msg);
Station_Meteo_Laos 0:ddcef4072662 39 }
Station_Meteo_Laos 2:4a57fcb1ab30 40
Station_Meteo_Laos 2:4a57fcb1ab30 41 //Affiche la trame meteo reçue
Station_Meteo_Laos 0:ddcef4072662 42 pc.printf("\nRecepetion en cours...");
Station_Meteo_Laos 1:265dc028a37d 43 pc.printf("\n");
Station_Meteo_Laos 1:265dc028a37d 44 pc.printf("|******TRAME RECU**********|\n");
Station_Meteo_Laos 1:265dc028a37d 45 printf("ID de la trame CAN : %d\n", msg.id);
Station_Meteo_Laos 1:265dc028a37d 46 printf("Nombre d'octets recus: %d\n", msg.len); // display message data
Station_Meteo_Laos 1:265dc028a37d 47 for(i=0;i<msg.len;i++) printf(" -> data[%d] = %d\n", i, msg.data[i]);
Station_Meteo_Laos 2:4a57fcb1ab30 48
Station_Meteo_Laos 2:4a57fcb1ab30 49 //Décode la trame météo et affiche la valeurs des donnees reçues
Station_Meteo_Laos 2:4a57fcb1ab30 50 //Affiche la température
Station_Meteo_Laos 1:265dc028a37d 51 pc.printf(" ->Temperature = %2.2f degres celsius\n", meteo.getTemperature(msg));
Station_Meteo_Laos 2:4a57fcb1ab30 52 //Affiche l'humidité
Station_Meteo_Laos 1:265dc028a37d 53 pc.printf(" ->Humidite = %2.2f %%RH\n", meteo.getHumidite(msg));
Station_Meteo_Laos 2:4a57fcb1ab30 54 //Affiche l'irradiance
Station_Meteo_Laos 1:265dc028a37d 55 pc.printf(" ->Irradiance = %hu W/m2\n", meteo.getIrradiance(msg));
Station_Meteo_Laos 2:4a57fcb1ab30 56 //Affiche la vitesse du vent
Station_Meteo_Laos 1:265dc028a37d 57 pc.printf(" ->Vitesse du vent = %f m/s\n", meteo.getVitesseVent(msg));
Station_Meteo_Laos 2:4a57fcb1ab30 58 //Affiche la direction du vent
Station_Meteo_Laos 1:265dc028a37d 59 pc.printf(" ->Direction du vent = %u\n", meteo.getDirectionVent(msg));
Station_Meteo_Laos 1:265dc028a37d 60
Station_Meteo_Laos 2:4a57fcb1ab30 61 myled = !myled;//inverse l'état de la led
Station_Meteo_Laos 2:4a57fcb1ab30 62 wait(5.0);//Attente de 5s avant de renvoyer uen requête météo
Station_Meteo_Laos 0:ddcef4072662 63 }
Station_Meteo_Laos 0:ddcef4072662 64 }