1

Téma: Dotaz - podmínka s časem

Chci odesílat data na web co 5 minut, ale v celý čas. Funguje to, ale někdy nepravidelně mám čas 17:00:00 a i 17:01:00
a to se děje nepravidelně i v jiné časy. Čím to může být?
Díky

label hlavni_smycka:
//čtení teploty
label cekam_na_teplotu:
t=sys[310];
if (t == 16777216) goto cekam_na_teplotu;
//Převod teploty
tc=t/100;
td=t % 100;


zbytek=sys[9] % 5;
if (( zbytek ==0 ) && (posl_minuta != sys[9])){
http_get(sys[66],sys[67],sys[68],sys[69],'www.xx-xx.cz','/xxxxxx.php?date=',sys[7],'-',sys[6],'-',sys[5],'&time=',sys[8],':',sys[9],':',sys[10],'&teplota1=',tc,'.',td);
label cekam_na_http:
if (sys[65] == 0) goto cekam_na_http;
echo ('date=',sys[7],'-',sys[6],'-',sys[5],'&time=',sys[8],':',sys[9],':',sys[10],'&teplota1=',tc,'.',td);
posl_minuta=sys[9]; // aby se v jedné minutě neukládalo vicekrát
}
if (sys[64]==0) {
http_get(sys[66],sys[67],sys[68],sys[69],'www.xx-xxzky.cz','/xx/index.php?date=',sys[7],'-',sys[6],'-',sys[5],'&time=',sys[8],':',sys[9],':',sys[10],'&temp=',tc,'.',td);
label cekam_na_http2:
if (sys[65] == 0) goto cekam_na_http2;
sys[64]=60; 
}
goto hlavni_smycka;
label konec:

2

Re: Dotaz - podmínka s časem

Nemuze se stat ze pres radek "zbytek=sys[9] % 5;" to jeste projde, ale v dalsi ms uz plati i dalsi radek "if (( zbytek ==0 ) && (posl_minuta != sys[9])){"?

...pak by se to mohlo poslat vicekrat. Mozna to osetrit az na sekundy nebo na strane serveru osetrit duplicity.

3

Re: Dotaz - podmínka s časem

Je to trochu divné. Jako kdyby to poslalo pouze 17:01:00 tak by to třeba bylo, že se program zdržel uvnitř podmínky, a čas se mezitím změnil. Ale když to pošle napřed 17:00:00 a vzápětí nastaví "závoru", že už to bylo odesláno, tak to moc nechápu.

4

Re: Dotaz - podmínka s časem

Myslel jsem to tak, že zbytek bude ještě 0 (tedy sys[9]%5 u 17:00:59.9999999999). V dalším kroku tedy platí zbytek==0 ale zároveň již není posl_minuta == sys[9] (tedy 17:01:00.00000000001)

Nevím jak často se to projevuje, třeba je to úplně někde jinde.

5

Re: Dotaz - podmínka s časem

Když to nejde jedním způsobem, předělat... např.

// nejprve pockam na prelom minuty (tzn. HH:MM:00)
if (secs == 0)
{
  // a otestuju hodnotu minut
  if (minute % 5 == 0)
  {
     // odeslat ...

     // protoze odesilani trva alespon 1 sec, tak uz se to sem nedostane, ale az dalsi minutu (secs == 0) kdyz soucasne bude minuta delitelna 5 beze zbytku (druhy if)   
  }

}
Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

6

Re: Dotaz - podmínka s časem

Zkusil jsem to udělat. Opět se tam objevují hodnoty :
2:00:00
2:00:01

anebo
2:55:00
2:55:00

Dvě stejné hodnoty - snad http get proběhne rychleji. Ale ta hodnota s tou sekundou je opět prapodivná.
Je to tam vše vícekrát.

7

Re: Dotaz - podmínka s časem

tak jestli na tom moc nefrčí, dej tam za htt_get wait(2000) a je to smile

8

Re: Dotaz - podmínka s časem

Ano aby to fungovalo, musí odesílání trvat alespoň 1 vteřinu, nebo déle... takže vložit wait 2000 je vhodné řešení.
Jinak je potřeba použít zase jiný program.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !