RSS  e-mail  sitemap

Vzdálená internetová laboratoř

logo gymkt

Fyzikální pokusy řízené přes Internet

Gymnázium J. Vrchlického, Klatovy

úvod experimenty o laboratoři kontakt odkazy

K8055-M.A.R.I.E.

(Management Application for Remote Internet Experiments)

Příkazy a řízení

Komunikace mezi řídicí webovou stránkou a aplikací K8055-MARIE je realizována pomocí javascriptového modulu XMLHttpRequest a řízení samotné využívá tzv. metody AJAX. Jedná se o kombinaci využívání javascriptového modulu, který je implementován do moderních internetových prohlížečů, na straně klienta a podpůrných PHP skriptů běžících na straně serveru. Díky tomuto způsobu řízení není třeba na straně klienta instalovat žádné potřebné rozšíření např. prostředí JAVA pro běh appletů, či prvky různých rozšíření ActiveX.

Vzdálené řízení je realizováno klasickou webovou stránkou psanou v HTML jazyce, rozšířenou o příkazy JavaScriptu ke komunikaci s deskou K8055 (viz obr. 1). Tyto příkazy jsou uloženy v externím souboru K8055.js, který se k dané webové stránce připojí stejně jako každý jiný javascriptový soubor. Z důvodů zachování kompatibility pro jednotlivé verze a typy internetových prohlížečů, je metoda AJAX zprostředkována standardní JavaScriptovou knihovnou jQuery, ta celé komunikaci dodává bezpečnost a spolehlivost.


schéma komunikace strany klienta a serveru při instalaci na dvou rozdílných PC

obr. 1 - Schéma komunikace strany klienta a serveru.


Rozšiřující JavaScriptové příkazy pro K8055

Knihovna příkazů K8055.js

Knihovnu javascriptových příkazů k řídicí webové stránce připojíme přilinkováním souborů jQuery.js a K8055.js v sekci <head>...</head> dané webové stránky. V ukázkovém demo-souboru jsou tyto soubory uloženy ve složce jvs.

Kód ukázkovém souboru K8055-MARIE_demo.htm, pak vypadá následovně:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=Windows-1250">
<title>K8055-MARIE : Demo</title>
<!-- BEGIN - JavaScripts for Remote Control -->
<script src="jvs/jquery-1.12.4.min.js" type="text/javascript"></script>
<script language="Javascript" type="text/javascript" src="http://YOUR_IP:PORT/K8055.js"></script>

<!-- END - JavaScripts for Remote Control -->
:
:

Soubor jquery-1.12.4.min.js (popř. jiná verze) je knihovna jQuery, která rozšiřuje HTML stránku o obecné příkazy komunikace AJAX. Soubor K8055.js pak stránku rozšiřuje o příkazy vzdáleného řízení karty K8055. Tento script není součást webových stránek, ale načítá se z aplikace K8055-MARIE. Řídicí příkazy lze vyvolávat standardními událostmi JavaScriptu (např. načtení stránky, kliknutí na prvek, vypršení časovače… apod.). Vytvoření řídicí webové stránky je pak plně v kompetenci jejího tvůrce.


Příklad
Ukázka kódu webového prvku (tlačítka), které po kliknutí nastaví všechny digitálních výstupy desky K8055 na hodnoty logické 1:

<input type="BUTTON" value="Zapni výstupy" onClick="SetAllDigital();">


Příkazy knihovny K8055.js

Příkazy se snaží svou syntaxí korespondovat s originálními příkazy použitými v DLL knihovně příkazů firmy Velleman. Pro potřeby rozšířeného a rychlejšího vzdáleného řízení byly od verze 2.00 přidány další příkazy. Přehled příkazů knihovny K8055.js je uveden v tabulce níže.

K8055D.DLL v5.0.0.0 - Technická příručka - česky

Popis funkcí a procedur obsažených v DLL knihovně K8055D.DLL pro přímé řízení USB desky K8055 (český překlad, anglický originál na webu firmy Velleman).


Následující tabulka zobrazuje seznam příkazů javascriptové knihovny K8055.js včetně jejich popisu:

K8055-MARIE (ver. 1.xx → x.xx)
Příkaz Popis příkazu
ReadAnalogChannel(Channel)

Funkce vrací celé číslo (0-255) odpovídající napětí na analogovém vstupu. Proměnná Channel udává zda jde o vstup 1 či 2

Příklad: (načtení analogovém vstupu 1 do proměnné AD1)

var AD1 = ReadAnalogChannel(1);

ReadAllAnalog()

Funkce vrací řetězec znaků složený z dvojice čísel odpovídající napětím na analogových vstupech. Obě hodnoty jsou odděleny znakem |.

Příklad: (převod výstupního řetězce do číselných proměnných hod1 a hod2)

var vyst = ReadAllAnalog();
var hod = new Array(2);
hod = vyst.split('|');
var hod1 = parseInt(hod[0]);
var hod2 = parseInt(hod[1]);

OutputAnalogChannel(Channel, Data)

Nastavení analogového výstupu - proměnná Channel určuje zda se jedná o výstup 1 či 2. Číselná proměnná Data (rozmezí 0-255) určuje hodnotu výstupního napětí (resp. šířky modulovaného signálu)

Funkce vrací hodnotu true při úspěšném nastavení výstupu (resp. false při nezdaru).

SetAnalogChannel(Channel)

Nastaví zadaný analogový výstup (proměnná Channel) na maximální hodnotu 255.

Funkce vrací hodnotu true při úspěšném nastavení výstupu (resp. false při nezdaru).

Pozn.:
Totéž jako funkce OutputAnalogChannel(Channel, 255)

ClearAnalogChannel(Channel)

Nastaví zadaný analogový výstup (proměnná Channel) na minimální hodnotu 0.

Funkce vrací hodnotu true při úspěšném nastavení výstupu (resp. false při nezdaru).

Pozn.:
Totéž jako funkce OutputAnalogChannel(Channel, 0)

OutputAllAnalog(Data1, Data2)

Nastaví oba analogové výstupy na zadané hodnoty proměnných Data1 a Data2.

Funkce vrací hodnotu true při úspěšném nastavení výstupů (resp. false při nezdaru).

SetAllAnalog()

Nastaví oba analogové výstupy na maximální hodnotu 255.

Funkce vrací hodnotu true při úspěšném nastavení výstupů (resp. false při nezdaru).

Pozn.:
Totéž jako funkce OutputAllAnalog(255, 255)

ClearAllAnalog()

Nastaví oba analogové výstupy na minimální hodnotu 0.

Funkce vrací hodnotu true při úspěšném nastavení výstupů (resp. false při nezdaru).

Pozn.:
Totéž jako funkce OutputAllAnalog(0, 0)

SetDigitalChannel(Channel)

Nastaví zadaný bit (proměnná Channel) z osmice výstupních digitálních linek na hodnotu logické 1 (tj. na výstupní svorkovnici stav sepnuto).

Funkce vrací hodnotu true při úspěšném nastavení výstupu (resp. false při nezdaru).

ClearDigitalChannel(Channel)

Nastaví zadaný bit (proměnná Channel) z osmice výstupních digitálních linek na hodnotu logické 0 (tj. na výstupní svorkovnici stav vypnuto).

Funkce vrací hodnotu true při úspěšném nastavení výstupu (resp. false při nezdaru).

WriteAllDigital(Data)

Nastaví jednotlivé bity osmice výstupních digitálních linek na hodnoty odpovídající binární podobě čísla zadaného proměnnou Data.

Funkce vrací hodnotu true při úspěšném nastavení výstupů (resp. false při nezdaru).

SetAllDigital()

Nastaví všechny výstupní digitální linky na hodnotu logické 1 (tj. na výstupní svorkovnici stav sepnuto).

Funkce vrací hodnotu true při úspěšném nastavení výstupů (resp. false při nezdaru).

Pozn.:
Totéž jako funkce WriteAllDigital(255)

ClearAllDigital()

Nastaví všechny výstupní digitální linky na hodnotu logické 0 (tj. na výstupní svorkovnici stav vypnuto).

Funkce vrací hodnotu true při úspěšném nastavení výstupů (resp. false při nezdaru).

Pozn.:
Totéž jako funkce WriteAllDigital(0)

ReadDigitalChannel(Channel)

Vrací hodnotu true (resp. false) pokud je v okamžiku dotazu stisknutý jeden z pětice (určen proměnnou Channel) digitálních vstupů.

ReadAllDigital()

Vrací celé číslo sestavující se z hodnot stisknutých digitálních vstupů. (první vstup: 1, druhý: 2, třetí: 4, čtvrtý: 8, pátý: 16)

Příklad: (vymaskování stavů digitálních vstupů)

var pom = ReadAllDigital();
if ((pom & 1) != 0) {1. vstup JE stisknut}
   else {1. vstup NENÍ stisknut};
if ((pom & 2) != 0) {2. vstup JE stisknut}
   else {2. vstup NENÍ stisknut};
if ((pom & 4) != 0) {3. vstup JE stisknut}
    else {3. vstup NENÍ stisknut};
if ((pom & 8) != 0) {4. vstup JE stisknut}
   else {4. vstup NENÍ stisknut};
if ((pom & 16) != 0) {5. vstup JE stisknut}
   else {5. vstup NENÍ stisknut};

ReadCounter(CounterNr)

Vrací hodnotu jednoho ze dvou čítačů (digitální vstupy 1 a 2). Číslo čítače je určeno proměnnou CounterNr

Čítač registruje od okamžiku svého vynulování a reaguje jen na pulsy zadané délky (viz dále)

ResetCounter(CounterNr)

Vynulování hodnoty čítače 1 či 2 (určeno proměnnou CounterNr)

Funkce vrací hodnotu true při úspěšném vynulování čítače (resp. false při nezdaru).

SetCounterDebounceTime(CounterNr, TimeDebounceTime)

Nastavení minimální délky impulsů v milisekundách (celočíselná proměnná TimeDebounceTime), která budou registrovány zadaným čítačem 1 nebo 2 (proměnná CounterNr).

Funkce vrací hodnotu true při úspěšném nastavení čítače (resp. false při nezdaru).

K8055-MARIE (ver. 2.00 → x.xx)
SearchDevices()

Vrátí řetězec složený z adres (0-3) USB desek K8055 připojených k PC a povolených aplikací K8055-MARIE (Adresy desek jsou oddělené znakem | ).

SetCurrentDevice(CardAddr)

Nastaví desku dané adresy CardAddr (0-3) jako příjemce dalších příkazů.

Funkce vrací hodnotu true při úspěšném nastavení desky (resp. false při nezdaru).

ReadBackDigitalOUT()

Vrací zpětně načtenou hodnotu (0-255) digitálních výstupů, která je aktuálně nastavena na výstupech USB desky (USB deska je určená příkazem SetCurrentDevice()).

ReadBackAnalogOUT()

Vrací řetězec složený z dvojice zpětně načtených hodnot (0-255) analogových výstupů USB desky (Hodnoty výstupů jsou oddělené znakem | ).

ReadBothCounters()

Vrací řetězec složený z dvojice hodnot (0-255) obou čítačů USB desky (Hodnoty čítačů jsou oddělené znakem | ).

Pozn.:
Jde o příkaz, který nahrazuje dvojici příkazů
ReadCounter(1);
ReadCounter(2);

ReadAllInputs()

Vrací řetězec složený z dvojice hodnot (0-255) analogových vstupů, hodnoty reprezentující stisknuté digitální vstupy (viz ReadAllDigital()) a hodnot obou čítačů USB desky (Hodnoty všech vstupů jsou oddělené znakem | ).

Pozn.:
Jde o příkaz, který nahrazuje sérii příkazů
ReadAllAnalog;
ReadAllDigital();
ReadBothCounters();

ReadStatus()

Vrací řetězec složený z hodnot kompletního stavu USB desky (tedy: analogové vstupy, digitální vstupy, čítače, hodnoty analogových výstupů a digitálních výstupů). Všechny hodnoty jsou oddělené znakem |.

Pozn.:
Jde o příkaz, který nahrazuje sérii příkazů
ReadAllInputs();
ReadBackAnalogOUT();
ReadBackDigitalOUT();

GeneratorType(Channel,Type) wave form

Nastavuje na typ (Type) průběhu (1 - sinus, 2 - square, 3 - ramp, 4 - sawtooth, 5 - triangle), který se bude generovat (rozmezí 0-255) na analogovém výstupu Channel (1-2).

Funkce vrací hodnotu true při úspěšném nastavení desky (resp. false při nezdaru).

GeneratorFrequency(Channel,Freq)

Nastavuje frekvenci Freq (0,01-10 Hz) průběhu, který se bude generovat na analogovém výstupu Channel (1-2).

Funkce vrací hodnotu true při úspěšném nastavení desky (resp. false při nezdaru).

GeneratorTimeInterval(Channel,Time)

Nastavuje dobu trvání Time (1-300 s), po kterou se bude zadaný průběh, generovat na analogovém výstupu Channel (1-2).

Funkce vrací hodnotu true při úspěšném nastavení desky (resp. false při nezdaru).

GeneratorStart(Channel)

Odstartuje generování funkčního průběhu (parametry viz dříve) na zadaném analogovém výstupu Channel (1-2).

Funkce vrací hodnotu true při úspěšném nastavení desky (resp. false při nezdaru).

GeneratorStop(Channel)

Zastaví generování funkčního průběhu (nezávisle na zadaném čase - viz GeneratorTimeInterval()) na analogovém výstupu určeném hodnotou Channel (1-2).

Funkce vrací hodnotu true při úspěšném nastavení desky (resp. false při nezdaru).

K8055-MARIE (ver. 2.55 → x.xx)
K8055_Json(cardAdr)

Řídicí aplikace K8055-MARIE odešle kompletní stav zadané desky K8055 (cardAdr) ve speciálním formátu JSON čitelném pro JavaScript. Kupříkladu stav analogového výstupu č. 2 desky adresy 0 je pak dostupný v  proměnné:
card[0].OUT.ANALOG.B

Proměná card tvoří pole s indexy 0-3 (dle čísel připojených desek K8055). Struktura těchto proměnných je následující:

Analog OUTs:
card[0].OUT.ANALOG.A
card[0].OUT.ANALOG.B
Digital OUT:
card[0].OUT.DIGITAL
Analog INs:
card[0].IN.ANALOG.A
card[0].IN.ANALOG.B
Digital IN:
card[0].IN.DIGITAL.A
Counters:
card[0].IN.COUNTER.A
card[0].IN.COUNTER.B
K8055-MARIE (ver. 2.56 → x.xx)
SwissKnife(cardAdr, com, callback)

bude popsáno

Pouze zdatní vývojáři!


Instalace Dema Zpět  |  Dále Instalace Dema

  nahoru
Free counters!
© 2011-17 by N.P.C.