Commit 4972db799b66726f8167a46e8987186faaf22726
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; | ... | ... |