Chyba je pri prechudu mezi rady(1234->900 nikoliv 9000).
Dej program do jednoho sds, v druhem na IP ...251, port 300 nastav sys[140-143]. sys[143] na 1234, pak na 900 a je to tam (pismenko navic).
var _ram; //identifikace ram
var _pom; //pomocna promenna
var _poz; //pomocna promenna - pozice
var _tmicro; //cas dalsiho nacteni hodnot z micra
var _microtimeout;//cas pro dalsi nacteni teplot z micra
microdata
{
//port 300, odpoved do text[], delka 32zn.
sys[76]=300;
sys[77]=2;
sys[78]=32;
//prvni 4 teploty
http_get(192,168,1,251,'192.168.1.251','/get_sys[140]?rn=4');
//pockam az probehne funkce do konce
label microdata_wait:
if (sys[65] == 0) goto microdata_wait;
//pokud je problem
if ((sys[65] != 1024)||(sys[75] != 200)) goto microdata_err;
//zpracovani vysledku
//echo (ram[0]);
echo ('text[0]:', text[0]);
_pom=0;
_poz=0;
_ram=300;
label microdata_for:
if (text[_pom]==124) {
text[_pom]=0x00;
atoi(text[_poz]);
ram[_ram]=sys[62];
_ram++;
_poz=_pom+1;
}
_pom++;
if (_pom<=ram[0]) goto microdata_for;
//posledni hodnota
atoi(text[_poz]);
ram[_ram]=sys[62];
echo ('r300:', ram[300], ', r301:', ram[301], ', r302:', ram[302], ', r303:', ram[303]);
label microdata_err:
//timeout pro dalsi cteni
_tmicro=sys[3]+_microtimeout;
}
init
{
echo ('start programu test http_get');
_microtimeout=1000; //10sek
_tmicro=0; //ihned
}
main
{
//nacte data z micra
if ((_tmicro<sys[3] && sys[65]!=0) || _tmicro==0) microdata();
}
start programu test http_get
text[0]:1400|1410|1420|1234
r300:1400, r301:1410, r302:1420, r303:1234
text[0]:1400|1410|1420|1234
r300:1400, r301:1410, r302:1420, r303:1234
text[0]:1400|1410|1420|1234
r300:1400, r301:1410, r302:1420, r303:1234
text[0]:1400|1410|1420|9004
r300:1400, r301:1410, r302:1420, r303:9004
text[0]:1400|1410|1420|9004
r300:1400, r301:1410, r302:1420, r303:9004
text[0]:1400|1410|1420|9004
r300:1400, r301:1410, r302:1420, r303:9004
text[0]:1400|1410|1420|9876
r300:1400, r301:1410, r302:1420, r303:9876
text[0]:1400|1410|1420|9876
r300:1400, r301:1410, r302:1420, r303:9876