Station Meteo Laos
/
Simulation_carte_maitresse
Permet de créer, envoyer, filtrer et decrypter la trame meteo.
main.cpp@0:ddcef4072662, 2019-06-17 (annotated)
- Committer:
- Station_Meteo_Laos
- Date:
- Mon Jun 17 10:27:49 2019 +0000
- Revision:
- 0:ddcef4072662
- Child:
- 1:265dc028a37d
fonctionne
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 | 0:ddcef4072662 | 2 | |
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 | 0:ddcef4072662 | 10 | CANMessage msg; // create empty CAN message |
Station_Meteo_Laos | 0:ddcef4072662 | 11 | |
Station_Meteo_Laos | 0:ddcef4072662 | 12 | |
Station_Meteo_Laos | 0:ddcef4072662 | 13 | int main() { |
Station_Meteo_Laos | 0:ddcef4072662 | 14 | |
Station_Meteo_Laos | 0:ddcef4072662 | 15 | uint16_t id_can, len_can=0, i, octet; |
Station_Meteo_Laos | 0:ddcef4072662 | 16 | char trame[8]; |
Station_Meteo_Laos | 0:ddcef4072662 | 17 | uint8_t ok=0; |
Station_Meteo_Laos | 0:ddcef4072662 | 18 | |
Station_Meteo_Laos | 0:ddcef4072662 | 19 | do{ |
Station_Meteo_Laos | 0:ddcef4072662 | 20 | pc.printf("\nTaper 1 pour envoyer un message CAN custom ou 0 pour afficher le contenu des trames CAN sur le bus : "); |
Station_Meteo_Laos | 0:ddcef4072662 | 21 | scanf("%u",&ok); |
Station_Meteo_Laos | 0:ddcef4072662 | 22 | pc.printf("%u", ok); |
Station_Meteo_Laos | 0:ddcef4072662 | 23 | }while(ok>1); |
Station_Meteo_Laos | 0:ddcef4072662 | 24 | |
Station_Meteo_Laos | 0:ddcef4072662 | 25 | pc.printf("\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 26 | |
Station_Meteo_Laos | 0:ddcef4072662 | 27 | if(ok == 1){ |
Station_Meteo_Laos | 0:ddcef4072662 | 28 | |
Station_Meteo_Laos | 0:ddcef4072662 | 29 | pc.printf("Entrez l'ID CAN de votre trame : "); |
Station_Meteo_Laos | 0:ddcef4072662 | 30 | pc.printf(">"); |
Station_Meteo_Laos | 0:ddcef4072662 | 31 | scanf("%hu",&id_can); |
Station_Meteo_Laos | 0:ddcef4072662 | 32 | pc.printf("%hu", id_can); |
Station_Meteo_Laos | 0:ddcef4072662 | 33 | pc.printf("\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 34 | |
Station_Meteo_Laos | 0:ddcef4072662 | 35 | pc.printf("Entrez le nombre d'octet de donnees de votre trame (de 0 a 8) : "); |
Station_Meteo_Laos | 0:ddcef4072662 | 36 | do{ |
Station_Meteo_Laos | 0:ddcef4072662 | 37 | pc.printf(">"); |
Station_Meteo_Laos | 0:ddcef4072662 | 38 | scanf("%hu",&len_can); |
Station_Meteo_Laos | 0:ddcef4072662 | 39 | }while(8<len_can); |
Station_Meteo_Laos | 0:ddcef4072662 | 40 | pc.printf("%hu", len_can); |
Station_Meteo_Laos | 0:ddcef4072662 | 41 | pc.printf("\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 42 | |
Station_Meteo_Laos | 0:ddcef4072662 | 43 | if(len_can != 0){ |
Station_Meteo_Laos | 0:ddcef4072662 | 44 | pc.printf("Entrez successivement chaque octet de donnee (de 0 a 255) :\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 45 | for(i=0;i<len_can;i++){ |
Station_Meteo_Laos | 0:ddcef4072662 | 46 | pc.printf(" -> Octet[%hu] : ",i); |
Station_Meteo_Laos | 0:ddcef4072662 | 47 | do{ |
Station_Meteo_Laos | 0:ddcef4072662 | 48 | pc.printf(">"); |
Station_Meteo_Laos | 0:ddcef4072662 | 49 | scanf("%hu",&octet); |
Station_Meteo_Laos | 0:ddcef4072662 | 50 | }while(255<octet); |
Station_Meteo_Laos | 0:ddcef4072662 | 51 | trame[i] = octet; |
Station_Meteo_Laos | 0:ddcef4072662 | 52 | pc.printf("%hu", trame[i]); |
Station_Meteo_Laos | 0:ddcef4072662 | 53 | pc.printf("\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 54 | } |
Station_Meteo_Laos | 0:ddcef4072662 | 55 | pc.printf("\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 56 | } |
Station_Meteo_Laos | 0:ddcef4072662 | 57 | |
Station_Meteo_Laos | 0:ddcef4072662 | 58 | pc.printf("**********Envoi de la trame par bus CAN**********\n\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 59 | |
Station_Meteo_Laos | 0:ddcef4072662 | 60 | if (can1.write(CANMessage(id_can, trame, len_can))) { |
Station_Meteo_Laos | 0:ddcef4072662 | 61 | pc.printf("Message envoye !\n"); // display message |
Station_Meteo_Laos | 0:ddcef4072662 | 62 | myled = !myled; |
Station_Meteo_Laos | 0:ddcef4072662 | 63 | } |
Station_Meteo_Laos | 0:ddcef4072662 | 64 | else{ |
Station_Meteo_Laos | 0:ddcef4072662 | 65 | pc.printf("Echec de l'envoi\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 66 | can1.reset(); // Reset CANbus if there is a problem |
Station_Meteo_Laos | 0:ddcef4072662 | 67 | } |
Station_Meteo_Laos | 0:ddcef4072662 | 68 | wait(1.0); // wait a second |
Station_Meteo_Laos | 0:ddcef4072662 | 69 | } |
Station_Meteo_Laos | 0:ddcef4072662 | 70 | else{ |
Station_Meteo_Laos | 0:ddcef4072662 | 71 | pc.printf("\nRecepetion en cours..."); |
Station_Meteo_Laos | 0:ddcef4072662 | 72 | while(1){ |
Station_Meteo_Laos | 0:ddcef4072662 | 73 | if(can1.read(msg)) { // if message is available, read into msg |
Station_Meteo_Laos | 0:ddcef4072662 | 74 | pc.printf("\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 75 | pc.printf("|******TRAME RECU**********|\n"); |
Station_Meteo_Laos | 0:ddcef4072662 | 76 | printf("ID de la trame CAN : %d\n", msg.id); |
Station_Meteo_Laos | 0:ddcef4072662 | 77 | printf("Nombre d'octets recus: %d\n", msg.len); // display message data |
Station_Meteo_Laos | 0:ddcef4072662 | 78 | for(i=0;i<msg.len;i++) printf(" -> data[%d] = %d\n", i, msg.data[i]); |
Station_Meteo_Laos | 0:ddcef4072662 | 79 | } |
Station_Meteo_Laos | 0:ddcef4072662 | 80 | myled = !myled; |
Station_Meteo_Laos | 0:ddcef4072662 | 81 | } |
Station_Meteo_Laos | 0:ddcef4072662 | 82 | } |
Station_Meteo_Laos | 0:ddcef4072662 | 83 | |
Station_Meteo_Laos | 0:ddcef4072662 | 84 | |
Station_Meteo_Laos | 0:ddcef4072662 | 85 | } |