mbed-os github

Dependencies:   ADS1015 Faulhaber HTU21D_mod MS5837_potless Sensor_Head_RevB_3 USBDevice_dfu Utilsdfu beep

Fork of ARNSRS_testDFU by POTLESS

Committer:
POTLESS_2
Date:
Sun Jul 23 18:46:22 2017 +0000
Revision:
6:ebed9093d661
Parent:
5:ff7aa975646c
Child:
7:ad15c386e960
Reglage Cozir

Who changed what in which revision?

UserRevisionLine numberNew contents of line
potless 1:bef7856b5c0a 1 #include "mbed.h"
potless 2:4a8bf1d53439 2 #include <string>
POTLESS_2 4:d84250f67dec 3
POTLESS_2 6:ebed9093d661 4 Serial serialCozir (PC_12,PD_2,9600);
potless 1:bef7856b5c0a 5
potless 1:bef7856b5c0a 6 Serial serialMonit (USBTX,USBRX,9600);
POTLESS_2 4:d84250f67dec 7
POTLESS_2 6:ebed9093d661 8 //pour Cozir
POTLESS_2 6:ebed9093d661 9 const int size = 8;
POTLESS_2 6:ebed9093d661 10 char reponse[size];
POTLESS_2 6:ebed9093d661 11 string commande;
POTLESS_2 6:ebed9093d661 12 int reponseInt;
potless 5:ff7aa975646c 13 int indexCozir;
POTLESS_2 6:ebed9093d661 14 bool newMessageFlag = false;
potless 2:4a8bf1d53439 15
POTLESS_2 6:ebed9093d661 16 //pour Param Cozir
POTLESS_2 6:ebed9093d661 17 const int sizeParam = 6;
POTLESS_2 6:ebed9093d661 18 char param[sizeParam ];
POTLESS_2 6:ebed9093d661 19 int indexParam;
POTLESS_2 6:ebed9093d661 20 bool newParamFlag = false;
potless 2:4a8bf1d53439 21
POTLESS_2 6:ebed9093d661 22 void cozirSend(char* commande)
POTLESS_2 6:ebed9093d661 23 {
potless 5:ff7aa975646c 24 if (serialCozir.writeable()) {
POTLESS_2 6:ebed9093d661 25 serialCozir.puts(commande);
POTLESS_2 4:d84250f67dec 26 }
potless 2:4a8bf1d53439 27 }
POTLESS_2 4:d84250f67dec 28
POTLESS_2 6:ebed9093d661 29 void callbackCozir()
POTLESS_2 4:d84250f67dec 30 {
POTLESS_2 6:ebed9093d661 31 while(serialCozir.readable()) {
POTLESS_2 6:ebed9093d661 32 if ((indexCozir == size) || newMessageFlag) //éviter la saturation du buffer
POTLESS_2 6:ebed9093d661 33 serialCozir.getc();
POTLESS_2 6:ebed9093d661 34 else
POTLESS_2 6:ebed9093d661 35 reponse [indexCozir++] = serialCozir.getc();//chargement du buffer dans le message
POTLESS_2 6:ebed9093d661 36 if ((indexCozir == size) || (reponse[indexCozir-1] == '\n')) {//le message est complet ou nouvelle ligne ou autre si on veut...
POTLESS_2 6:ebed9093d661 37 reponse[indexCozir] = 0;
POTLESS_2 6:ebed9093d661 38 newMessageFlag = true;
POTLESS_2 6:ebed9093d661 39 }
POTLESS_2 6:ebed9093d661 40 }
POTLESS_2 4:d84250f67dec 41 }
POTLESS_2 4:d84250f67dec 42
POTLESS_2 6:ebed9093d661 43 void callbackParam()
POTLESS_2 4:d84250f67dec 44 {
POTLESS_2 6:ebed9093d661 45 while(serialMonit.readable()) {
POTLESS_2 6:ebed9093d661 46 if (indexParam == sizeParam) //éviter la saturation du buffer
POTLESS_2 6:ebed9093d661 47 serialMonit.getc();
POTLESS_2 6:ebed9093d661 48 else
POTLESS_2 6:ebed9093d661 49 param [indexParam++] = serialMonit.getc();//chargement du buffer dans le message
POTLESS_2 6:ebed9093d661 50 if ((indexParam == sizeParam) || (param[indexParam -1] == '\n')) {//le message est complet ou nouvelle ligne ou autre si on veut...
POTLESS_2 6:ebed9093d661 51 param[indexParam] = 0;
POTLESS_2 6:ebed9093d661 52 newParamFlag = true;
POTLESS_2 6:ebed9093d661 53 }
POTLESS_2 4:d84250f67dec 54 }
POTLESS_2 6:ebed9093d661 55 }
POTLESS_2 4:d84250f67dec 56
POTLESS_2 6:ebed9093d661 57 void decode_message(char rep[])
POTLESS_2 6:ebed9093d661 58 {
POTLESS_2 4:d84250f67dec 59
POTLESS_2 6:ebed9093d661 60 sscanf (rep,"%s %5d", commande, &reponseInt);
POTLESS_2 6:ebed9093d661 61 serialMonit.printf("Message complet = %s\r\n\n", rep);
POTLESS_2 6:ebed9093d661 62 serialMonit.printf("Commande = %s\r\n", commande);
POTLESS_2 6:ebed9093d661 63 serialMonit.printf("Reponse = %d\r\n\n", reponseInt);
POTLESS_2 4:d84250f67dec 64
potless 0:69d4b21d58e0 65 }
potless 0:69d4b21d58e0 66
POTLESS_2 4:d84250f67dec 67 int main()
POTLESS_2 4:d84250f67dec 68 {
POTLESS_2 6:ebed9093d661 69 serialCozir.attach(&callbackCozir, Serial::RxIrq);
POTLESS_2 6:ebed9093d661 70
POTLESS_2 6:ebed9093d661 71 serialMonit.attach(&callbackParam, Serial::RxIrq);
POTLESS_2 6:ebed9093d661 72
POTLESS_2 6:ebed9093d661 73 serialMonit.printf(" Demarrage...Entrez les comandes COZIR\r\n");
POTLESS_2 6:ebed9093d661 74
POTLESS_2 6:ebed9093d661 75 //Voir Datasheet..
POTLESS_2 6:ebed9093d661 76 //Ex : G
POTLESS_2 6:ebed9093d661 77 //Pas besoin d'écrire \r\n dans lemoniteur
POTLESS_2 6:ebed9093d661 78 //Passer en K 0 pour changer le A 32 ou A 16...sinon ça bloque...
POTLESS_2 6:ebed9093d661 79 //Ensuite re passer en K 1 ou K 2....
POTLESS_2 6:ebed9093d661 80 //Le Cozir restera dans le dernier mode rentré...
POTLESS_2 6:ebed9093d661 81
POTLESS_2 4:d84250f67dec 82 while (1) {
POTLESS_2 6:ebed9093d661 83
POTLESS_2 6:ebed9093d661 84 if (newMessageFlag) {
POTLESS_2 6:ebed9093d661 85 decode_message(reponse);
POTLESS_2 6:ebed9093d661 86 strcpy(reponse," ");
POTLESS_2 6:ebed9093d661 87 indexCozir = 0;
POTLESS_2 6:ebed9093d661 88 newMessageFlag = false;
POTLESS_2 6:ebed9093d661 89 }
potless 5:ff7aa975646c 90
POTLESS_2 6:ebed9093d661 91 if (newParamFlag) {
POTLESS_2 6:ebed9093d661 92 wait_ms(500);
POTLESS_2 6:ebed9093d661 93 serialMonit.printf("Param = %s\r\n", param);
POTLESS_2 6:ebed9093d661 94 cozirSend(param);
POTLESS_2 6:ebed9093d661 95 wait_ms(500);
POTLESS_2 6:ebed9093d661 96 strcpy(param," ");
POTLESS_2 6:ebed9093d661 97 indexParam = 0;
POTLESS_2 6:ebed9093d661 98 newParamFlag = false;
POTLESS_2 6:ebed9093d661 99 }
POTLESS_2 4:d84250f67dec 100 }
POTLESS_2 4:d84250f67dec 101 }