1 Naposledy upravil: absolonj (2022-09-12 16:58:49)

Téma: Sdílené proměnné

Pokouším se v programu nadefinovat sdílené proměnné, ale nějak mi to nefunguje. Tady je kód:

#define FC_STACK 2048 

unsigned long U00;
char T00[65];

void main(void)
{
   U00 = 10;
   strcpy(T00, "Nazdar");
   while (1)
         wait(100);
}

Dotaz v prohlížeči "http://192.168.88.88/getsv?T00=U12&U00=S00" však vrací "et|29701|ut|29700218|NOTHING|0|". Nevím, jestli někde dělám chybu já, nebo je to někde ve FW?
Tu smyčku v programu jsem tam udělal, protože nevím, jestli jsou sdílené proměnné dostupné, i když program skončí. Chová se to stejně.

Doplněno: Dotaz na shared.txt vrací správně "et|29872|ut|29871664|T00|Nazdar|U00|10|". Dotaz na jednotlivé proměnné "http://192.168.88.88/getsv?t00=t00" v různých obměnách s malými / velkými písmeny stále NOTHING.

2

Re: Sdílené proměnné

Deklarace je správně.
https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_sharing

Dotaz přes /getsv je zapsán nesprávně - ten syntax je určen pro /sv, ale pro /getsv je to o něco jinak:

správně např.
/getsv?s00=T00
/getsv?s00=U00&s01=T00
apod.



Pozn. define pro FC_STACK bude funkční až v další verzi, ale už teď je dobré to dopředu používat.

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

3 Naposledy upravil: absolonj (2022-09-12 17:18:25)

Re: Sdílené proměnné

Už jsem to pochopil. Název pseudoproměnné v levé části výrazu je vždy sxx, v právé části je skutečný název sdílené proměnné.

Dokonce jsem to našel v dokumentaci smile

4

Re: Sdílené proměnné

Z mého příkladu je zřejmé, že webové stránky ladím na počítači, ne přímo v jednotce ("http://192.168.88.88/getsv..."). Chci se zeptat, jaká je nejrychlejší možnost zjistit v javascriptu, že se stránky spouštějí z SDS jednotky, abych to mohl ošetřit v tom dotazu.

PS: FC_STACK tam zůstal z úvodního příkladu, tak jsem ho tam nechal. Díky za radu.

5

Re: Sdílené proměnné

absolonj napsal:

jaká je nejrychlejší možnost zjistit v javascriptu, že se stránky spouštějí z SDS jednotky, abych to mohl ošetřit v tom dotazu.

Nejsem si jistý co je cílem, můžete to prosím více vysvětlit ?
Chcete nějak automatizovat obsah toho URL v dotazu (adresu?) ? To ale pak s SDS nemá nic společného, to je otázka na "použití" prohlížeče (a na jeho omezení, např. zákazy cross-site scripting atd.).

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

6

Re: Sdílené proměnné

No já si ty stránky ladím normálně na počítači (CORS mám vyřešen pluginem ve fFrefoxu), je to dost složitý skript a nechci to stokrát denně nahrávat do jednotky - pak to v SDS samozřejmě bude. Takže jenom než to doladím, tak musím v GET příkazu používat IP adresu. Až to nahraji do jednotky, tak ji vymažu. Tak jenom přemýšlím, abych na to někdy nezapomněl, že by bylo nejlepší to ošetřit třeba takto:

if (sds)
  getPrefix = "";
else
  getPrefix = "192.168.1.250";

request = getPrefix + "/getsv...";

O nic důležitého samozřejmě nejde, jen jsem si to chtěl zjednodušit.

7

Re: Sdílené proměnné

Asi jsem se špatně vyjádřil, stránky (javascript) běží vždy na klientském počítači, jednalo se mi o to, odkud byly staženy. Vyřešil jsem to nakonec takto:

DEBUG_DEVICE_ADDRESS = new URL(document.URL).protocol == 'file:'? "http://192.168.1.175": "";
...
xhr.open("GET", DEBUG_DEVICE_ADDRESS + "/shared.txt", true);

Dá se použít i jiná podmínka, např. URL(document.URL).host == 'undefined', ale pro mé účely to stačí.

8

Re: Sdílené proměnné

Respekt, to by mě hned nenapadlo. Chytré.

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