Station Meteo Laos
/
Simulation_carte_maitresse
Permet de créer, envoyer, filtrer et decrypter la trame meteo.
main.cpp@2:4a57fcb1ab30, 2019-06-29 (annotated)
- 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?
User | Revision | Line number | New 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 | } |