Salut tt le monde
je suis arrivé à faire fonctionner le serveur avec un nouveau sketch et une trés grande partie du travail d'Osaka :* ci joint tous les fichers.
tout fonctionne avec WampServer Version 2.2 et IDE 1.0
me reste que la partie état E/S lors du premiere ouverture de la page "onload", je travail dessus
une fois terminée je vais poster le travail
fichier client :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery.min.js"></script>
<script src="init.js"></script>
<!--<script type="text/javascript">
jQuery(function()
{
jQuery( "#pwm" ).slider({ max: 255 },{ value: 0 },{step : 5});
jQuery( "#pwm" ).delay(100).bind( "slide", function()
{
var value = jQuery( "#pwm" ).slider( "option", "value" );
analogWrite(0x09, value, 0x00);
});
jQuery( "#pwm" ).delay(500).bind( "slidestop", function()
{
var value = jQuery( "#pwm" ).slider( "option", "value" );
analogWrite(0x09, value, 0x01);
});
});
</script> -->
<style type="text/css">
<!--
.Style1 {font-size: 24px}
.Style2 {font-size: 18px; }
body {
background-color: #FFFFFF;
}
-->
</style>
</head>
<!--<body id="DOMOTIQUE" onload="init()"> -->
<body id="DOMOTIQUE">
<div id="retour"></div>
<div id="retour1"></div>
<div id="retour2"></div>
<div id="retour3"></div>
<div id="log">
<table width="550" border="0">
<tr>
<td width="237" bordercolor="#339999"><div class="Style2">
<div align="left">LED Sur Pin N°7 :
<button id="dw7" onclick="digitalWrite(7, 1, 1)">on</button>
</div>
</div>
<div class="Style1">
<div align="left"><span class="Style2">LED Sur Pin N°8 :</span>
<button id="dw8" onclick="digitalWrite(8, 1, 1)">on</button>
</div>
</div>
<div></div> </td>
<td width="303"><div></div>
<div></div> </td>
</tr>
</table>
</div>
<div id="pwm"></div>
</body>
</html>
fichier init :
function digitalWrite(pin, value, ack)
{
var textejson = {"str":0x02,"len":0x04, "cmd":0x02, "dt1":pin, "dt2":value, "dt3":ack, "end":0x03 };
envoie(textejson);
}
function analogRead(pin)
{
var textejson = {"start":0x02,"length":0x02, "cmd":0x06, "data1":pin, "end":0x03 };
envoie(textejson);
}
function digitalRead(pin)
{
var textejson = {"start":0x02,"length":0x02, "cmd":0x03, "data1":pin, "end":0x03 };
envoie(textejson);
}
function analogWrite(pin, value, ack)
{
var textejson = {"start":0x02,"length":0x04, "cmd":0x05, "data1":pin, "data2":value, "data3":ack, "end":0x03 };
envoie(textejson);
}
function envoie(textejson)
{
jQuery.post("socket.php", textejson,
function(data)
{
parseJSon(JSON.stringify(data));
}, "json");
}
function parseJSon(dJson)
{
log(dJson);
var duino = eval('(' + dJson + ')');
switch(duino.cmd)
{
case 0x02:
digitalWriteResp(duino.data1, duino.data2, duino.data3);
break;
case '2':
digitalWriteResp(duino.data1, duino.data2, duino.data3);
break;
case 2:
digitalWriteResp(duino.data1, duino.data2, duino.data3);
break;
}
}
function $(id)
{
return document.getElementById(id);
}
function log(msg)
{
$("log").innerHTML+="
"+msg;
}
function digitalWriteResp(pin, value, ack)
{
id="dw"+pin;
if(value == 1)
{
$(id).innerHTML="off";
$(id).setAttribute('onclick', "digitalWrite("+pin+", 0, "+ack+")");
}
else
{
$(id).innerHTML="on";
$(id).setAttribute('onclick', "digitalWrite("+pin+", 1, "+ack+")");
}
}
fichier socket :
<?php
$msg = "";
$buffer = null;
$msg = file_get_contents("php://input"); // on ne reprend que les données utiles et non l'intégralité de la requête
$host="192.168.1.100";
$port=1080;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //création du socket
socket_connect($socket, $host, $port); //connection du socket
socket_write($socket,$msg,strlen($msg)); //envoie des données POST
do
{
if(isset($buffer)) // si buffer contien des donnees
echo $buffer; // reponse à la requête javascript
//echo json_encode ( $buffer );
}
while(@socket_recv($socket,$buffer,1024,0) != 0); // on attend la reponse (=! 0) sur le socket
socket_close($socket); //fermeture du socket
?>
Sketch
#include <SPI.h>
#include <Ethernet.h>
int i = 0;
char c;
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x14, 0x6D };
byte ip[] = { 192,168,1,100 };
EthernetServer server(1080);
void setup()
{
for(i = 0; i<=7; i++)
{
pinMode(i, OUTPUT);
}
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
if (client.connected())
{
uint8_t lengthData = client.available();
char data[lengthData];
int j = 0;
String affi="";
while(client.available())
{
c = client.read();
affi+=c;
j=j+1;
switch (j)
{
case 5:
data[0]=c;
break;
case 11:
data[1]=c;
break;
case 17:
data[2]=c;
break;
case 23:
data[3]=c;
break;
case 29:
data[4]=c;
break;
case 35:
data[5]=c;
break;
case 41:
data[6]=c;
break;
}}
//Serial.println(affi);
if(!client.available())
{
if(data[0]== '2' && data[6]=='3')
{
switch (data[2]) {
case '2':
if (data[4]=='1')
{
digitalWrite(data[3], HIGH);
}
else
{
digitalWrite(data[3], LOW);
}
if(data[0] != '0')
{
String json = "{\"start\":";
json+=char(data[0]);
json+=",\"length\":";
json+=char(data[1]);
json+=",\"cmd\":";
json+=char(data[2]);
for(int x=0;x < 3; x++)
{
json+=",\"data";
json+=x+1;
json+="\":";
json+=char(data[x+3]);
}
json+=",\"end\":";
json+=3;
json+="}";
Serial.println(json);//Pour Débogage
client.println(json); // Envoi des données Serveur Web
}
break;
}
}
client.stop();
}
}
}
}
je reste à votre dispositions pour les détails
@+
Arduino.rar (34.8 KB)