Commit 4972db799b66726f8167a46e8987186faaf22726

Authored by aknockae
1 parent 53ec8c44

Reception et envoi de donnée entre l'application web et le programme C, seul que…

…lques changement du programme c sont necessaire pour recuperer les donnees des capteurs arduino sur l'application web.
Showing 2 changed files with 31 additions and 24 deletions   Show diff stats
appWeb/js/script.js
1 1 window.WebSocket=(window.WebSocket||window.MozWebSocket);
2 2 var websocket=new WebSocket('ws://192.168.1.111:9000','myprotocol');
  3 + websocket.binaryType = 'arraybuffer'; //On utilise un objet arraybuffer pour envoyer les donnée.
3 4  
  5 +
4 6 websocket.onopen=function(){ $('h3 .connecOn').css('color','green'); };
5 7  
6 8 websocket.onerror=function(){ $('h3 .connecOff').css('color','red'); };
7   - //on crée des tableaux de Buffer, ces tableaux permettent de "découper" la chaine de bits, en différents octets
8   -var bufferReponse = new ArrayBuffer(3);
9   -var bufferRequete = new ArrayBuffer(3);
10 9  
11   -//DataView permet de traiter un ArrayBuffer
12   -var requeteView = new DataView(bufferRequete);
13   -var reponseView = new DataView(bufferReponse);
  10 +//on créé le tableau des octets à envoyer:
  11 +
  12 +
  13 +
  14 +
  15 +var requete = new Uint8ClampedArray(3);
  16 +requete[0] = 'G'.charCodeAt(0);
  17 +requete[1] = 'E'.charCodeAt(0);
  18 +requete[2] = 'T'.charCodeAt(0);
14 19  
15   -//on remplie le buffer de requete via requeteView
16   -requeteView.setInt8(0,'G'.charCodeAt(0));
17   -requeteView.setInt8(1,'E'.charCodeAt(0));
18   -requeteView.setInt8(2,'T'.charCodeAt(0));
19 20  
20 21 //affiche le contenu du tableau dans une alert
21   -alert(String.fromCharCode(requeteView.getInt8(0))+String.fromCharCode(requeteView.getInt8(1))+String.fromCharCode(requeteView.getInt8(2)));
  22 +//alert(String.fromCharCode(reponseView.getUint8(0))+String.fromCharCode(reponseView.getUint8(1))+String.fromCharCode(reponseView.getUint8(2)));
22 23  
23 24  
24 25 websocket.onmessage=function(message){ //Evenement surveillant la reception de message
25   -
26   - console.log(message.data);
27   - /*$('#relevesMeteo .temperature').text(message.data);
28   - $('#relevesMeteo .humidite').text(message.data);
29   - $('#relevesMeteo .pression').text(message.data);
30   - $('#relevesMeteo .luminosite').text(message.data);*/
  26 + var reponse = new Uint8Array(message.data);
  27 + console.dir(message.data);
  28 +
  29 + $('#relevesMeteo .temperature').text(reponse[0]);
  30 + $('#relevesMeteo .humidite').text(reponse[1]);
  31 + $('#relevesMeteo .pression').text(reponse[2]);
  32 + //$('#relevesMeteo .luminosite').text(message.data);*/
31 33  
32 34 };
33 35  
34 36 function requeteEnvoi(){
35   - websocket.send(bufferReponse);
36   - console.log(bufferReponse);
  37 + websocket.send(requete.buffer);
37 38 }
38 39  
39 40  
... ...
prog/main.c
... ... @@ -78,6 +78,7 @@ static int callback_my(struct libwebsocket_context * this, struct libwebsocket *
78 78  
79 79 switch(reason)
80 80 {
  81 + char test[2];
81 82 case LWS_CALLBACK_ESTABLISHED:
82 83 printf("connection established\n");
83 84 requete=NULL;
... ... @@ -104,18 +105,23 @@ static int callback_my(struct libwebsocket_context * this, struct libwebsocket *
104 105 case LWS_CALLBACK_SERVER_WRITEABLE:
105 106 // Ici sont envoyes les messages au navigateur
106 107 //Si la requete a pour valeur GET, on envoie les donnée au site
  108 + printf("entree dans envoie");
  109 +
107 110 if(requete!= NULL)
108 111 {
109   - if(requete[0] == 'G' && requete[1] == 'E' && requete[2] == 'T')
  112 + char *test = requete + LWS_SEND_BUFFER_PRE_PADDING;
  113 + printf("entree dans envoir->requete");
  114 + printf("Message : %c%c%c\n",test[0],test[1],test[2]);
  115 + if(test[0] == 'G' && test[1] == 'E' && test[2] == 'T')
110 116 {
111   - char *reponse = NULL;
112   - reponse = getDataFromSensors(requete,3);
  117 + reponse = malloc(3*sizeof(char));
  118 + reponse[0] = 'a';reponse[1] = 'b'; reponse[2] = 'c';
  119 + printf("\nSending : %c%c%c",reponse[0],reponse[1],reponse[2]);
113 120 int length = 3;
114 121 unsigned char *buf = malloc(LWS_SEND_BUFFER_PRE_PADDING + length + LWS_SEND_BUFFER_POST_PADDING);
115 122 memcpy (buf + LWS_SEND_BUFFER_PRE_PADDING, reponse, length );
116   - libwebsocket_write(wsi, buf + LWS_SEND_BUFFER_PRE_PADDING, length, LWS_WRITE_TEXT);
  123 + libwebsocket_write(wsi, buf + LWS_SEND_BUFFER_PRE_PADDING, length, LWS_WRITE_BINARY); //LWS_WRITE_TEXT
117 124 free(reponse);
118   -
119 125 free(requete);
120 126 requete = NULL;
121 127 reponse = NULL;
... ...