Adaptation K22F

Dependencies:   mbed

Committer:
singularity
Date:
Tue Dec 16 15:52:17 2014 +0000
Revision:
0:6004a7230f87
Creation k22F

Who changed what in which revision?

UserRevisionLine numberNew contents of line
singularity 0:6004a7230f87 1 #include "Serie.h"
singularity 0:6004a7230f87 2
singularity 0:6004a7230f87 3 //INSTANCIATION DES INSTANCES GLOBALES ET EXTERNES
singularity 0:6004a7230f87 4 Serial xbee(XBEE_PIN_TX,XBEE_PIN_RX);
singularity 0:6004a7230f87 5
singularity 0:6004a7230f87 6 //INSTANCES GLOBALES ET INTERNES
singularity 0:6004a7230f87 7 char commande[TAILLE_COMMANDE];
singularity 0:6004a7230f87 8 int curseur;
singularity 0:6004a7230f87 9 bool wait_com;
singularity 0:6004a7230f87 10
singularity 0:6004a7230f87 11
singularity 0:6004a7230f87 12 /* LA COMMANDE POUR PAPI BROSSARD
singularity 0:6004a7230f87 13 reception d'un chaine :"Cam:23521/4521/451/.../6532/\n"
singularity 0:6004a7230f87 14 Utilisation du split java avec pour delimiteur / et :
singularity 0:6004a7230f87 15 String s="27/03/2008";
singularity 0:6004a7230f87 16 String str[]=s.split("/");
singularity 0:6004a7230f87 17
singularity 0:6004a7230f87 18 On peut eventuellement utilisé la classe Scanner de JAVA*/
singularity 0:6004a7230f87 19 void envoyerCamera()
singularity 0:6004a7230f87 20 {
singularity 0:6004a7230f87 21 xbee.printf("Cam:");
singularity 0:6004a7230f87 22 for(int i=0;i<128;i++) {
singularity 0:6004a7230f87 23 xbee.printf("%u/",valeurs[i]);
singularity 0:6004a7230f87 24 }
singularity 0:6004a7230f87 25 xbee.printf("\n");
singularity 0:6004a7230f87 26 }
singularity 0:6004a7230f87 27
singularity 0:6004a7230f87 28 typedef enum IdVar IdVar;
singularity 0:6004a7230f87 29 enum Idvar {CAM1,TASSERV,VPROP,};
singularity 0:6004a7230f87 30
singularity 0:6004a7230f87 31 //Si quelqu'un trouve pourquoi un parametre de type enumeration n'est pas accepte par le compilo
singularity 0:6004a7230f87 32 /*void getVar(IdVar id) {
singularity 0:6004a7230f87 33 switch(id) {
singularity 0:6004a7230f87 34 case CAM1 :
singularity 0:6004a7230f87 35 envoyerCamera();
singularity 0:6004a7230f87 36 break;
singularity 0:6004a7230f87 37
singularity 0:6004a7230f87 38 }
singularity 0:6004a7230f87 39 }*/
singularity 0:6004a7230f87 40
singularity 0:6004a7230f87 41 void getVar(int id) {
singularity 0:6004a7230f87 42 switch(id) {
singularity 0:6004a7230f87 43 case CAM1 :
singularity 0:6004a7230f87 44 envoyerCamera();
singularity 0:6004a7230f87 45 break;
singularity 0:6004a7230f87 46 }
singularity 0:6004a7230f87 47 }
singularity 0:6004a7230f87 48 void help() {
singularity 0:6004a7230f87 49 }
singularity 0:6004a7230f87 50
singularity 0:6004a7230f87 51 void traiter(char commande[]) {
singularity 0:6004a7230f87 52 switch(commande[0]) {
singularity 0:6004a7230f87 53 case 'G':
singularity 0:6004a7230f87 54 getVar(commande[1]);
singularity 0:6004a7230f87 55
singularity 0:6004a7230f87 56 break;
singularity 0:6004a7230f87 57
singularity 0:6004a7230f87 58 case 'S':
singularity 0:6004a7230f87 59 int t;
singularity 0:6004a7230f87 60 sscanf(commande, "S%d\n",t);
singularity 0:6004a7230f87 61 //setTIntegration(t);
singularity 0:6004a7230f87 62
singularity 0:6004a7230f87 63 break;
singularity 0:6004a7230f87 64 case 'D':
singularity 0:6004a7230f87 65 float t;
singularity 0:6004a7230f87 66 char a,b;
singularity 0:6004a7230f87 67 sscanf(commande,"%c%c%f\n",&a,&b,&t);
singularity 0:6004a7230f87 68
singularity 0:6004a7230f87 69 switch(commande[2]) {
singularity 0:6004a7230f87 70 case 'P':
singularity 0:6004a7230f87 71 propulsion.setDKp(t);
singularity 0:6004a7230f87 72 break;
singularity 0:6004a7230f87 73 case 'I':
singularity 0:6004a7230f87 74 propulsion.setDKi(t);
singularity 0:6004a7230f87 75 break;
singularity 0:6004a7230f87 76 case 'D':
singularity 0:6004a7230f87 77 propulsion.setDKd(t);
singularity 0:6004a7230f87 78 break;
singularity 0:6004a7230f87 79 }
singularity 0:6004a7230f87 80 break;
singularity 0:6004a7230f87 81 case 'L':
singularity 0:6004a7230f87 82 float w;
singularity 0:6004a7230f87 83 char a,b;
singularity 0:6004a7230f87 84 sscanf(commande,"%c%c%f\n",&a,&b,&w);
singularity 0:6004a7230f87 85
singularity 0:6004a7230f87 86 switch(commande[2]) {
singularity 0:6004a7230f87 87 case 'P':
singularity 0:6004a7230f87 88 propulsion.setGKp(w);
singularity 0:6004a7230f87 89 break;
singularity 0:6004a7230f87 90 case 'I':
singularity 0:6004a7230f87 91 propulsion.setGKi(w);
singularity 0:6004a7230f87 92 break;
singularity 0:6004a7230f87 93 case 'D':
singularity 0:6004a7230f87 94 propulsion.setGKd(w);
singularity 0:6004a7230f87 95 break;
singularity 0:6004a7230f87 96 }
singularity 0:6004a7230f87 97 break;
singularity 0:6004a7230f87 98
singularity 0:6004a7230f87 99 case 'C':
singularity 0:6004a7230f87 100 setDirection(((float)commande[1])/(2000*256.0f));
singularity 0:6004a7230f87 101 float a1 = (float)commande[1]/(2000*256.0f);
singularity 0:6004a7230f87 102 float a2 = (commande[2]-128.0f)/128.0f;
singularity 0:6004a7230f87 103 float a3 = (commande[3]-128.0f)/128.0f;
singularity 0:6004a7230f87 104 //setPuissanceMoteurs((commande[2]-128.0f)/(128.0f),(commande[3]-128.0f)/(128.0f));
singularity 0:6004a7230f87 105 xbee.printf("Commande (C)ontrol reconnue\n");
singularity 0:6004a7230f87 106 xbee.printf(" C:%s dir(int):%d M1(int):%d M2(int):%d\n",commande[0],commande[1],commande[2],commande[3]);
singularity 0:6004a7230f87 107 xbee.printf(" Valeur: Dir(float)%f\n",direction.read());
singularity 0:6004a7230f87 108 xbee.printf("%f %f %f\n\n\n",a1,a2,a3);
singularity 0:6004a7230f87 109
singularity 0:6004a7230f87 110 break;
singularity 0:6004a7230f87 111
singularity 0:6004a7230f87 112 default:
singularity 0:6004a7230f87 113 xbee.printf("Commande non reconnue\n");
singularity 0:6004a7230f87 114 break;
singularity 0:6004a7230f87 115 }
singularity 0:6004a7230f87 116 xbee.printf(" Commande(ASCII) : %s\n",commande);
singularity 0:6004a7230f87 117 }
singularity 0:6004a7230f87 118
singularity 0:6004a7230f87 119 void callbackSerie() {
singularity 0:6004a7230f87 120 int donne;
singularity 0:6004a7230f87 121
singularity 0:6004a7230f87 122 while(xbee.readable())
singularity 0:6004a7230f87 123 {
singularity 0:6004a7230f87 124 donne = xbee.getc();
singularity 0:6004a7230f87 125
singularity 0:6004a7230f87 126 if(wait_com) {
singularity 0:6004a7230f87 127 /*On ecoute la commande*/
singularity 0:6004a7230f87 128
singularity 0:6004a7230f87 129 if(donne == '\n') {
singularity 0:6004a7230f87 130 /*Fin de la commande*/
singularity 0:6004a7230f87 131 if(curseur != 0) {
singularity 0:6004a7230f87 132 commande[curseur] = '\n';
singularity 0:6004a7230f87 133 traiter(commande);
singularity 0:6004a7230f87 134 }
singularity 0:6004a7230f87 135 wait_com = false;
singularity 0:6004a7230f87 136 } else {
singularity 0:6004a7230f87 137 if(curseur >= TAILLE_COMMANDE) {
singularity 0:6004a7230f87 138 xbee.printf("Xbee Freescale: Buffer overflown");
singularity 0:6004a7230f87 139 wait_com = false;
singularity 0:6004a7230f87 140 } else {
singularity 0:6004a7230f87 141 commande[curseur] = donne;
singularity 0:6004a7230f87 142 curseur++;
singularity 0:6004a7230f87 143 }
singularity 0:6004a7230f87 144 }
singularity 0:6004a7230f87 145
singularity 0:6004a7230f87 146 } else {
singularity 0:6004a7230f87 147 /*On attends le symbole START pour prendre commande*/
singularity 0:6004a7230f87 148 if(donne == 'S') {
singularity 0:6004a7230f87 149 wait_com = true;
singularity 0:6004a7230f87 150 curseur = 0;
singularity 0:6004a7230f87 151 }
singularity 0:6004a7230f87 152 }
singularity 0:6004a7230f87 153 }
singularity 0:6004a7230f87 154 }
singularity 0:6004a7230f87 155
singularity 0:6004a7230f87 156
singularity 0:6004a7230f87 157 void initSerie() {
singularity 0:6004a7230f87 158 for(int i=0 ; i< TAILLE_COMMANDE ; i++) {
singularity 0:6004a7230f87 159 commande[i] = 0;
singularity 0:6004a7230f87 160 }
singularity 0:6004a7230f87 161 xbee.baud(XBEE_SPEED);
singularity 0:6004a7230f87 162 xbee.printf("Xbee Freescale: Hello...\n");
singularity 0:6004a7230f87 163 xbee.attach(&callbackSerie);
singularity 0:6004a7230f87 164 curseur = 0;
singularity 0:6004a7230f87 165 wait_com = false;
singularity 0:6004a7230f87 166 }