Hraju si s programem a jscriptem do user.html stránky a narazil jsem na problém a nevím, proč se to tak děje.
Po studiu různých www, jsem objevil script do www na odesílání hodnot, který jsem upravil pro optřeby SDS. Vše funguje jak má, hodnoty do sys[140] až .. to posílá, ale s jedním problémem.
V SDS mám program, který testuje přítomnost "1" v určitém sys[140...] - pokud se vyskytne - testuje relé na 0, pokud je 0, tak zapne a obráceně - pak vynuluje příslušný sys[140..].
Pokud pošlu ze scriptu toto (s návratem p=0) :
"GET", "http://192.168.0.60/sdscep?p=0&sys"+sysn+"="+aa, true);
tak to funguje jen při prvním odeslání - (relé sepne) ale už nereaguje na druhý povel
ve scriptu mám zakomponováno zobrazení návratové hodnoty a ta se zobrazí i se statusem O.K.
Ale pokud neběží SDS program (který nuluje příslušný sys[140..], tak zápisy s následnou kontrolou ve web rozhraní fungují.
Pokud pošlu ze scriptu toto (bez návratu p=0) :
"GET", "http://192.168.0.60/sdscep?sys"+sysn+"="+aa, true);
Tak tu funguje dobře i opakovaně, ale příjdu o návratovou hodnotu a status je 12152 neznámá chyba.
SDS program pro test mám toto :
// Výstupy :
// 1) Re1 - Osvětlení dům, cesta
#define RE1 sys[231]
// 2) Re2 - Osvětlení zahrada
#define RE2 sys[232]
// 3) Re3 - Reset kamerového systému
#define RE3 sys[233]
// 4) Re4 -
#define RE4 sys[234]
//---------------------------
toggle
{
echo('sys142 = 'sys[142]);
sys[142] = 0;
echo('sys142 = 'sys[142]);
if (RE1 == 0)
{
RE1 = 255;
}
else
{
RE1 = 0;
}
//wait(500);
return;
}
//---------------------------
toggle2
{
echo('sys143 = 'sys[143]);
sys[143] = 0;
echo('sys143 = 'sys[143]);
if (RE2 == 0)
{
RE2 = 255;
}
else
{
RE2 = 0;
}
return;
}
//----------------------------
toggle3
{
echo('sys143 = 'sys[143]);
sys[143] = 0;
echo('sys143 = 'sys[143]);
if (RE3 == 0)
{
RE3 = 255;
}
else
{
RE3 = 0;
}
return;
}
//----------------------------
main
{
main_loop:
if (sys[142] == 1) toggle() ;
if (sys[143] == 1) toggle2() ;
if (sys[143] == 2) toggle3() ;
goto main_loop;
}
A script do html :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>SDS send zkušební verze</title>
</head>
<body>
<script type="text/javascript">
function sdsc_S_ev(sysn){ //pokud se volá sdsc_S_ev doplní se aa z getElementu
aa=document.getElementById("sys"+sysn).value;
sdsc_S(sysn,aa);
}
function sdsc_S(sysn,aa){ //zde se volá sdsc_S které už obsahuje (sysn,aa)
var sub = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false));
if(!sub){
alert("Tak tady to nepoběží!");
return true;
}
sub.open("GET", "http://192.168.0.60/sdscep?p=0&sys"+sysn+"="+aa, true);
sub.onreadystatechange=function () {zpracuj(sub); } ;
sub.send(null);
return false
}
function zpracuj(sub){
var txt;
if (sub.readyState == 4){ //bylo odpovězeno
if(sub.status == 200 || sub.status==0 || sub.status == 12152){ //status 12152 se vrací pokud se nepoužije p=0
txt=sub.responseText;
document.getElementById("ret").innerHTML = " = " + txt;
//alert("Status kod :"+sub.status+":"+ sub.statusText);
}
else alert("Chyba: "+ sub.status +":"+ sub.statusText);
}
}
</script>
</p>
Test zkušební verze:
<br />
<input type="submit" onclick="return sdsc_S(141,1)" value="Do 141 dá 1" />
SDS return : <span id="ret">no sync</span><br />
<br />
<input type="submit" onclick="return sdsc_S(142,1)" value="Do 142 dá 1" />
<br />
<input type="submit" onclick="return sdsc_S(143,1)" value="Do 143 dá 1" />
<br />
<input type="submit" onclick="return sdsc_S(143,2)" value="Do 143 dá 2" />
<br />
<input type="submit" onclick="return sdsc_S(143,3)" value="Do 143 dá 3" />
<br />
<input type="button" value="Odešle hodnotu do 140" onclick="return sdsc_S_ev(140)">
<input type="text" id="sys140" name="sys140" value="" maxlength="5">
</body>
</html>
Prosím o zkouknutí. Dík