ce type de mise à jour va alourdir pas mal la bande passante... entre le navigateur et le serveur web.
Mieux vaut appeler la page PHP à intervalle régulier pour obtenir la valeur des capteurs...
Je part du principe que tu as la fonction pour lire le port série de l'arduino (imaginons qu'elle s'appelle readArduino)
tu peux alors créer la page PHP Suivante (appelons la 'readArduino.php') :
<?php
function readArduino() {
// Code PHP pour lire une ligne de ce qui est envoyé sur le port série de l'Arduino;
return explode("\t",$line); // Transforme la ligne en tableau
}
try {
$arduinoValues = readArduino();
$json['isSuccess'] = true;
$json['X'] = $arduinoValues[0];
$json['Y'] = $arduinoValues[1];
$json['Z'] = $arduinoValues[2];
return json_encode($json);
}
catch (\Exception $e) {
$json['isSuccess'] = false;
$json['error'] = $e->getMessage();
return json_encode($json);
}
Puis une page HTML (test.html) du style :
<!DOCTYPE html>
<html>
<head>
<title>Arduino Reader</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.0.0.min.js"></script>
<script type="text/javascript">
// Voir script dessous
</script>
</head>
<body>
<div id="maDivInfo"></div>
</body>
</html>
Avec jQuery ca pourrait donner dans je JavaScript:
[javascript]
function getCapteurValue() {
var url = "readArduino.php";
$.getJSON(url, function(r)) {
if (r.isSuccess) {
$("#maDivInfo").html(r.X+","+r.Y+","+r.Z);
} else {
$("#maDivInfo").html("Erreur de lecture : "+r.error);
}
}
}
$(document).ready(function() {
setInterval("getCapteurValue()",500);
});
[/javascript]
Mais il faut aussi que ton arduino envoie rapidement ses valeurs sur le port série... Toutes les 50ms au lieu des 100ms (dernière ligne dans la fonction loop du code arduino) pour les premiers tests ca me parait pas mal.
Ensuite tu pourra baisser le délais de l'intervalle de 500ms à 100ms par exemple.
ce type de mise à jour va alourdir pas mal la bande passante... entre le navigateur et le serveur web.
Mieux vaut appeler la page PHP à intervalle régulier pour obtenir la valeur des capteurs...
Je part du principe que tu as la fonction pour lire le port série de l'arduino (imaginons qu'elle s'appelle readArduino)
tu peux alors créer la page PHP Suivante (appelons la 'readArduino.php') :
[php]
<?php
function readArduino() {
// Code PHP pour lire une ligne de ce qui est envoyé sur le port série de l'Arduino;
return explode("\t",$line); // Transforme la ligne en tableau
}
try {
$arduinoValues = readArduino();
$json['isSuccess'] = true;
$json['X'] = $arduinoValues[0];
$json['Y'] = $arduinoValues[1];
$json['Z'] = $arduinoValues[2];
return json_encode($json);
}
catch (\Exception $e) {
$json['isSuccess'] = false;
$json['error'] = $e->getMessage();
return json_encode($json);
}
[/php]
Puis une page HTML (test.html) du style :
[html]
<!DOCTYPE html>
<html>
<head>
<title>Arduino Reader</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.0.0.min.js"></script>
<script type="text/javascript">
// Voir script dessous
</script>
</head>
<body>
<div id="maDivInfo"></div>
</body>
</html>
[/html]
Avec jQuery ca pourrait donner dans je JavaScript:
[javascript]
function getCapteurValue() {
var url = "readArduino.php";
$.getJSON(url, function(r)) {
if (r.isSuccess) {
$("#maDivInfo").html(r.X+","+r.Y+","+r.Z);
} else {
$("#maDivInfo").html("Erreur de lecture : "+r.error);
}
}
}
$(document).ready(function() {
setInterval("getCapteurValue()",500);
});
[/javascript]
Mais il faut aussi que ton arduino envoie rapidement ses valeurs sur le port série... Toutes les 50ms au lieu des 100ms (dernière ligne dans la fonction loop du code arduino) pour les premiers tests ca me parait pas mal.
Ensuite tu pourra baisser le délais de l'intervalle de 500ms à 100ms par exemple.