SEAL Tutorial

From DiLab
Revision as of 11:34, 5 October 2012 by Atis (talk | contribs)
Jump to: navigation, search

SEAL lietošanas pamācība

Ievads

SEAL ir programmēšanas valoda bezvadu sensoru tīkliem. Atšķirībā no vispārīga pielietojuma programmēšanas valodām. SEAL ir daudz vienkāršāka, mazāka, un ātrāk apgūstama. Savukārt programmas rakstītas tajā ir īsākas nekā analoģiskas programmas priekš sensoru tīkliem, rakstītas kādā no vispārīga pielietojuma programmēšanas valodām.

Programmēšanas testa laikā jums būs pieejams sensoru mezgls. Sensoru mezgls var sazināties ar bāzes staciju, kas atrodas vienā telpā ar to. Sensoru mezgls spēj lasīt sensorus, mikršķi

Valodas sintakse

SEAL ir šādi rezervēti atslēgvārdi:

and, config, const, define, else, elsewhen, end, load, networkread, not, parameters, pattern, read, or, output, set, use, when, where.

Visiem SEAL izteikumiem jābeidzas ar noslēdzošo simbolu. Parasti tas ir semikols ';', izņemot when nosacījumus, kuriem jābeidzas ar atslēgvārdu end.

SEAL sintakse nav reģistrjūtīga. Tas ir, USE, use, un Use nozīmē vienu un to pašu. Ieteicams izstrādājot programmas ievērot neformālas konvencijas, lai tās būtu viegli lasāmas. Viena no konvencijām ir apzīmēt simboliskās konstantes ar LIELAJIEM BURTIEM, sensoru vērtības ar Lielo Sākumburtu, savukārt pārējos vārdus programmā sākt ar mazo burtu.

Valodas elementi

  • Komponentu lietojumus apraksta ar vieu no atslēgas vārdiem use, read, output, kuram seku komponentu nosaukums un parameteri. Piemēram,
    • use Beeper -- lietot pīkstuli, ja motei tāds ir;
    • read Humidity -- nolasīt mitruma sensora vērtību;
    • output Serial -- uzvadīt nolasītos datus (visus) uz seriālo saskarni (USB kabeli).

Pilns atbalstīto komponentu saraksts ir pieejams te.

  • Funkcijas ļauj ielasītos sensoru datus apstrādāt, piemēram, pielietojot tiem aritmētiskas operācijas. Piemēram, funkcija add(Humidity, 10) pieskaita gaismas sensora lasījumam skaitli 10. Pilns atbalstīto funkciju saraksts ir pieejams te.
  • Komponentu definīcījas ļauj ar atslēgvārda define palīdzību "izveidot" jaunos, virtuālus komponentus, ar funkciju palīdzību kombinējot jau esošos. Piemēram, define MaxHumidity max(Humidity) definē jaunu komponentu ar nosaukumu MaxLight, kura vērtība būs vienāda ar maksimālo līdz šim nolasītos gaismas sensora vērtību programmas darbības laikā.
  • Parameterus var norādīt gan komponentu lietojumiem, gan komponentu definīcijām. Piemēram, parametrs once saka, ka komponentu vajag lietot (lasīt, ieslēgt utt.) tikai vienreiz. (Pēc noklusēšanas komponenti tiek lietoti periodiski, neierobežotu skaitu periodu.)
  • Komentāri var tikt rakstīti, atdalot tos no pārējā programmas koda ar diviem simboliem "//". Komentārs stiepjas līdz rindiņas beigām, un neietekmē programmas funkcionalitāti. Piemēram:
    • use Beeper; // lieto pīkstuli

definē Beeper komponenta lietojumu ar atbilstošu paskaidrojošu tekstu.

Mainīgie un konstantes

Lielā daļā SEAL programmu nav nepieciešams izmantot mainīgos. Jau nu tie tomēr ir vajadzīgi, mainīgo var definēt un lietot izmantojot set atslēgvārdu.

Piemēram set counter 1; uzstāda mainīgā ar nosaukumu "counter" vērtību vienādu ar viens.

set counter add(counter, 1); uzstāda šī pašam mainīgā vērtību vienādu ar tā iepriekšējo vērtību saskaitītu ar viens.

Visi mainīgie ir skalāri (t.i. var saturēt sevī tikai vienu vērtību).


Simboliskās konstantes (t.i. konstantes ar vārdu) SEAL programmās ir ieteicams izmantot bieži. Konstanti definē ar const atslēgvārda palīdzību.

Piemēram const SLIEKSNIS 1000; definē konstanti ar nosaukumu "SLIEKSNIS" un vērtību vienādu ar 1000.

Konstantes vietā vienmēr var rakstīt arī šīs konstantes vērtību tieši, ar cipariem.

Kontroles bloki

SEAL programmas izpildīšanos var kontrolēt ar when atslēgvārda palīdzību.

Tā lietošana ir šāda:

when <nosacījums>
  <koda bloks 1>
end

Šajā piemērā <koda bloks 1> izpildās tad un tikai tad, ja <nosacījums> ir patiess.

Jāņem vērā, ka nosacījumu patiesuma vērtības tiek atkārtoti izvērtētas periodiski. (Pēc noklusēšanas tas notiek 10 reizes sekundē). Koda bloks savukārt izpildās neatkarīgi no tiem. Ja reiz bloks ir sācis izpildīties, tas izpildās vai nu noteiktu reižu skaitu, ja tāds norādīts parametros, vai arī noteiktu laiku, ja norādīts tas. Pēc noklusēšanas koda bloks izpildās neierobežotu reižu skaitu, periodiski. Izpildīšanās periods arī atkarīgs no parametriem un pēc noklusēšanas ir vienāds ar vienu sekundi.

Ir atbalstīti arī else un elsewhen atslēgvārdi ar to intuitīvajām nozīmēm.else norāda, ka tālāk sekos koda bloks, kurš izpildīsies tikai tad, kad visi iepriekšējā koda bloka nosacījumi ir nepatiesi. elsewhen nozīme ir līdzīga else, bet papildus tam kods šajā blokā izpildās tikai tad, kad elsewhen sekojošais nosacījums ir patiess.

when <nosacījums>:
 <koda bloks 1>
else:
 <koda bloks 2>
end

Šajā piemērā < koda bloks 1 > izpildās tad un tikai tad, ja < nosacījums > ir patiess, savukārt < koda bloks 2 > izpildās pretējā gadījuma -- ja nosacījums ir nepatiess.

when <nosacījums 1>:
 <koda bloks 1>
elsewhen  <nosacījums 2>:
 <koda bloks 2>
else:
 <koda bloks 3>
end

Šajā piemērā <koda bloks 2> izpildās tad un tikai tad, ja <nosacījums 1> ir nepatiess, savukārt <nosacījums 2> ir patiess. <koda bloks 3> izpildās tikai tad, ja abi nosacījumi ir nepatiesi.


Nosacījumi savā starpā var tikt apvienoti ar loģiskajiem atslēgvārdiem AND, OR, kā arī nosacījuma vērtība var tikt invertēta ar atslēgvārdu NOT.

Piemēram:

when (NOT <nosacījums 1>) AND (<nosacījums 2> OR <nosacījums 3>):
  <koda bloks>
end

Šeit koda bloks izpildīsies tikai tad, ja <nosacījums 1> būs nepatiess, bet vismaz viens no nosacījumiem 2 un 3 būš patiess.

Programmēšanas vide

Mansos-ide.png

Attēls: http://mansos.edi.lv/wp-content/uploads/2012/10/mansos-ide.png

Uzsākot testu, jums priekšā būs MansOS IDE atvērtā stāvoklī (attēlā).

SEAL kodu rakstīt paredzēts pelēkajā rajonā labajā pusē.

Lai atvieglotu koda ievadīšanu, eksistē vizuālais redaktors (kreisā puse). Noklikšķinot uz noteikts koda rindas (kura var būt nepilnīgi uzrakstīta), vizuālais redaktors parādīs izvēļu joslu ar atslēgvārdiem, nosaukumiem un parametriem, kurus varētu lietot šajā koda rindā (vai when ... end koda blokā). Lai aktivizētu vizuālo redaktoru, nepieciešams vai nu sākt rakstīt kodu, vai arī nospiest vienu no pogām "Add statement" vai "Add condition".

Lai pārbaudītu, vai jūsu sintakse ir korekta, nospiediet "Compile" pogu. Tiks palaists programmas būvēšanas process, kas vai nu parādīs sintakses kļūdas, vai novedīs līdz paziņojumam par veiksmīgu procesa pabeigšanos. Ja tas nenotiek automātiski, programmas būvēšanās stāvokli iespējams redzēt, aktivizējot "Info" izvēlni apakšējā darbvirsmas daļā.

Lai izmēģinātu uzlādētu programmu uz motes, nospiediet "Upload" pogu. Tehnisku operētājsistēmas un aparatūras problēmu dēļ uzlādēšana var neizdoties a pirmo mēģinājumu, Tādā gadījumā jāmēģina atkārtoti. Ja neizdodas arī ar otro reizi, pārbaudiet, vai mote ir pilnībā iesprausta. Variet arī lūgt instruktora palīdzību. Informāciju par šo procesu iespējams redzēt "Info" izvēlnē apakšējā darbvirsmas daļā.

Sensoru mezgls var sazināties pa seriālo saskarni (sūtīt diagnostiskus rakstveida ziņojumus) ar datoru, kuram tas ir pieslēgts. Lai klausītos šos ziņojumus, jums jāaktivizē sadaļa "Listen module 1" apakšējā panelī un jānospiež tur "Start listening" poga. Lai izpildītu jums izsniegtos programmēšanas uzdevumus, seriālās saskarnes izmantošana programmas tekstā nav obligāta. Ja seriālās saskarnes izmantošana programmas tekstā nav norādīta, ziņojumi netiek sūtīti.