Buongiorno,
mi rivolgo a voi sperando che possiate risolvere questo problema che mi fa dannare.
Sto lavorando ad un progetto di un'apparecchiatura domotica, dove un server linux con PHP/Apache pilota alcuni moduli domotici tramite porta seriale.
Non ho alcun problema a impartire comandi e leggere le risposte da seriale, ma ho problemi ad imbastire codice javascript dal lato client per far aggiornare un'immagine senza ricaricare la pagina a seconda di quello che leggo dalla seriale.
Premetto che sul sever ho attivo un polling che comunica su seriale scritto in C, il quale interroga i moduli ed invia la risposta dello stato su tcp/ip ogni secondo, lasciando lo spazio necessario per inviare richieste specifiche.
Quindi la configurazione è questa:
Modulo domotico il quale ha sull'ingresso un pulsante, mentre sull'uscita dello stesso modulo è connessa una lampada e questo modulo è connesso con la porta seriale al server.
Veniamo al dunque del mio problema:
Lato client ho l'immagine di una lampada spenta, se qualcuno dal pulsante connesso al modulo la accende, la stringa che viene inviata su tcp/ip cambia di valore e dato che il valore è associato ad una immagine specifica (in questo caso la lampada accesa), cambia l'immagine.
Chiaramente anche nel caso in cui io clicco sull'immagine della lampada spenta devo poter inviare il comando su tcp/ip per poi veder cambiare l'immagine dopo.
Spero che mi possiate aiutare, nonostante i miei sforzi non sono riuscito ad ottenere esattamente quello che ho descritto.
In questo codice che allego, il cambio immagine funziona già, però oltre all'immagine che passa da on a off a seconda del click, la stessa cosa dovrebbe farla la variabile action passando da 1 a 2, visto che il valore 1 accende la lampada mentre il valore 2 la spenge.
Qualsiasi aiuto è gradito.
Grazie.
prova.php
invio_seriale.phpcodice:<script type="text/javascript"> function readPHPResponse () { var oResponse = JSON.parse(this.responseText); if (oResponse.change) { document.getElementById("immagine").src = oResponse.change; } } function checkForImage () { var oReq = new XMLHttpRequest(); oReq.onload = readPHPResponse; if (action==undefined) { var action; action="1"; } oReq.open("get", "seriale/invio_seriale.php?action=" + action, true); oReq.send(); } </script> </head> <body> [img]img/lightbulb_off.png[/img] </p>
codice:{ "change": "img/lightbulb_on.png" }

Rispondi quotando