diff --git a/page_web/index.html b/page_web/index.html index ef3cad5..66c4e12 100644 --- a/page_web/index.html +++ b/page_web/index.html @@ -76,7 +76,6 @@ setTimeout('autoSend4();', 200); } function autoSend4(){ websocket.send('4'); -//setTimeout('autoSend0();', 500); } setInterval(autoSend0, 1000); diff --git a/serveur/serial.h b/serveur/serial.h new file mode 100644 index 0000000..e7eac5b --- /dev/null +++ b/serveur/serial.h @@ -0,0 +1,18 @@ +/* + * Public definitions for serial library + */ + +//// +// Constants +//// + +#define SERIAL_READ 0 +#define SERIAL_WRITE 1 +#define SERIAL_BOTH 2 + +//// +// Public prototypes +//// +int serialOpen(char *device,int mode); +void serialConfig(int fd,int speed); +void serialClose(int fd); diff --git a/serveur/websocket_server.c b/serveur/websocket_server.c index 65f1649..11c389a 100644 --- a/serveur/websocket_server.c +++ b/serveur/websocket_server.c @@ -38,56 +38,53 @@ static int callback_my( struct libwebsocket *wsi,enum libwebsocket_callback_reasons reason, void *user,void *in,size_t len) { -printf("boucle\n"); -static char *message=NULL; +static char *mesage=NULL; static int msize=0; switch(reason) { - printf("%s\n",reason); case LWS_CALLBACK_ESTABLISHED: printf("connection established\n"); - message=NULL; + mesage=NULL; // Declenchement d'un prochain envoi au navigateur libwebsocket_callback_on_writable(this,wsi); break; + case LWS_CALLBACK_RECEIVE: - // Ici sont traites les messages envoyes par le navigateur - printf("received data: %s\n",(char *)in); - message=malloc(len+LWS_SEND_BUFFER_PRE_PADDING+LWS_SEND_BUFFER_POST_PADDING); - if(message==NULL) - { + // Ici sont traites les mesages envoyes par le navigateur + char* recei=(char *)in; + int rec = *recei - 48; //réception de l'instruction, convertie en entier + printf("received data: %d\n",rec); + mesage=malloc(len+LWS_SEND_BUFFER_PRE_PADDING+LWS_SEND_BUFFER_POST_PADDING); + if(mesage==NULL) + { perror("callback_my.malloc"); exit(EXIT_FAILURE); - } - - int a=0; - char value[3]; - sprintf (value, "%d", serial_read(&a)) ; - printf("value = %s\n",value); - //char* value = "0"; - // memcpy(message+LWS_SEND_BUFFER_PRE_PADDING,in,len); - memcpy(message+LWS_SEND_BUFFER_PRE_PADDING,value,1 + strlen(value)); + } + char value[3]; + sprintf (value, "%d", (10*serial_read(&rec))+rec); //réception de la valeur demandée, sous forme de str + printf("value = %s\n",value); + memcpy(mesage+LWS_SEND_BUFFER_PRE_PADDING,value,1 + strlen(value)); // Declenchement d'un prochain envoi au navigateur - //msize=len; msize=strlen(value); libwebsocket_callback_on_writable(this,wsi); break; + case LWS_CALLBACK_SERVER_WRITEABLE: - - // Ici sont envoyes les messages au navigateur - if(message!=NULL){ - char *out=message+LWS_SEND_BUFFER_PRE_PADDING; + // Ici sont envoyes les mesages au navigateur + if(mesage!=NULL) + { + char *out=mesage+LWS_SEND_BUFFER_PRE_PADDING; printf("%s\n",out); printf("%d\n",msize); libwebsocket_write(wsi,(unsigned char *)out,msize,LWS_WRITE_TEXT); - //libwebsocket_write(wsi,(unsigned char *)out,msize,LWS_WRITE_TEXT); - free(message); - message=NULL; - } + free(mesage); + mesage=NULL; + } break; + default: break; } @@ -160,7 +157,7 @@ int n=0; int value=0; int sd=serialOpen(SERIAL_DEVICE,SERIAL_BOTH); serialConfig(sd,B9600); -if(write(sd,&c,sizeof(char))!=1){ perror("main.write"); exit(-1); } +if(write(sd,&c,sizeof(char))!=1){ perror("main.write"); exit(-1); } //Envoi de l'instruction //Read the number of decimals if(read(sd,&n,sizeof(char))!=1){ perror("main.read"); exit(-1); } -- libgit2 0.21.2