Microsoftovo poboljšanje TypeScripta može vam pomoći u razvoju složenih sustava koje pokreće Internet stvari.

DeviceScript je vrhunska inovacija tvrtke Microsoft Research. Proširuje mogućnosti TypeScripta za prilagodbu malim uređajima Interneta stvari (IoT) s ograničenim resursima.

Njegov glavni cilj je omogućiti vam da pišete kod u TypeScriptu i kompajlirate ga u prilagođeni bajt kod, optimiziran za implementaciju u okruženjima s ograničenim resursima.

Konzolni izlaz u DeviceScriptu

Microsoft DeviceScript nudi konzolu prilagođenu korisniku. Podržava izlaz poruka i bilježenje podataka senzora, ali također služi kao vrijedan alat za provjeru grešaka.

Na raspolaganju vam je niz funkcija za bilježenje poruka s različitim razinama bilježenja:

konzola.debug("debug")
konzola.log("log")
konzola.upozoriti("upozoriti")
konzola.greška("greška")

Izlaz konzole lako je vidljiv unutar prozora DeviceScript terminala. Može pomoći u pružanju vrijednih uvida u izvođenje vašeg koda i pomoći u procesu otklanjanja pogrešaka.

Nadalje, DeviceScript pojednostavljuje bilježenje podataka senzora pružajući konzola.podaci funkcija koja automatski dodaje vremensku oznaku zabilježenim podacima.

Razmotrite sljedeći primjer:

konst temperatura = 20;
konst vlaga = 60;
konzola.podaci({temperatura, vlažnost});

Za pristup zabilježenim podacima, možete ići na DeviceScript - Izlaz podataka okno u Visual Studio Code ili ga preuzmite iz izbornika pogleda.

Moćno oblikovanje nizova

Prilikom korištenja konzola.log() funkciju u DeviceScriptu, imate mnogo opcija za formatiranje nizova za poboljšani učinak. Razmotrite sljedeće ilustrativne primjere:

neka x = 0;
neka y = 4;
konzola.log("Pozdrav, svijete");
konzola.log("Vrijednost X je", x, "dok je Y", y);
konzola.log("X=", x, "Y=", y);
konzola.log(`X=${x} Y=${y}`);
konzola.log("X=" + x + " Y=" + y);

DeviceScript prevodilac automatski umeće razmake, što rezultira čitljivijim ispisom. Na primjer, drugi i treći primjer će proizvesti Vrijednost X je 7 dok je Y 12 i X=7 Y=12, odnosno.

Kada pišete u registre, također možete koristiti ulančavanje i literale predložaka. Razmotrite sljedeći isječak koda:

konst ekran = novi ds. Zaslon znakova();
neka x = 7;
screen.message.write("Vrijednost X je " + x);
screen.message.write(`X je jednako ${x}`);

Upotrebom ulančavanja ili literala predložaka možete bez napora konstruirati dinamičke nizove kako biste zadovoljili raznolik raspon zahtjeva.

Nadalje, DeviceScript nudi ds.format() funkcija za napredno oblikovanje niza. Ovu funkciju možete koristiti u kombinaciji s konzola.log() ili kod konfiguracije registara stringova.

Navedite rezervirana mjesta za argumente pomoću formata {0}, {1}, {2}, i tako dalje. Također možete odrediti preciznost dodavanjem druge znamenke.

Pogledajte sljedeći primjer:

konst ekran = novi ds. Zaslon znakova();
neka x = 7;
neka y = 12;
konzola.log (ds.format("X je {0}, a Y je {1}", x, y));
konzola.log (ds.format("X = {04}", x));
screen.message.write (ds.format("X je približno {0}", x));

Imajte na umu da određivanje preciznosti s drugom znamenkom možda neće dati besprijekorne rezultate u svim scenarijima.

Klijenti: Omogućivanje interakcije sa senzorima i aktuatorima

Ekosustav DeviceScript apstrahira interakciju sa senzorima, aktuatorima i drugim hardverskim komponentama putem Jacdac usluga.

Ovaj okvir tretira senzore kao poslužitelje, dok vaše skripte povezuju klijente s tim poslužiteljima kako bi olakšale interakciju. Za ilustraciju ovog koncepta, razmotrite scenarij regulatora kućnog sustava grijanja.

Sustav grijanja obuhvaća relej koji regulira rad peći, senzor temperature i rotacijski enkoder za podešavanje željene temperature. U DeviceScriptu definirate klijente, koji se također nazivaju ulogama, za svaku potrebnu uslugu.

Pogledajte sljedeći isječak koda:

uvoz {Temperatura, relej} iz"@devicescript/core";
konst toplomjer = novi Temperatura();
konst termometar2 = novi Temperatura();
konst relej = novi Relej();

Instanciranjem potrebnih servisnih klijenata, kao npr termometar, toplomjer2, i relej, uspostavljate besprijekornu komunikaciju s odgovarajućim poslužiteljima.

DeviceScript hardverski poslužitelji

Za interakciju s bilo kojom hardverskom komponentom u DeviceScriptu zapošljavate servisne klijente. Međutim, za učinkovito programiranje ovih hardverskih komponenti, neophodno je inicijalizirati servisne poslužitelje na osnovnom hardveru.

DeviceScript nudi širok raspon poslužitelja unutar @devicescript/poslužitelji modula, čime se pojednostavljuje ovaj proces.

Na primjer, StartButton funkcija vam omogućuje da postavite poslužitelj gumba na određeni pin i dobijete odgovarajućeg klijenta. Pogledajte sljedeći primjer:

uvoz {gpio} iz"@devicescript/core";
uvoz {startButton} iz"@devicescript/servers";
konst buttonA = startButton({ pribadača: gpio(2),});

Uključivanjem ovog isječka koda u vašu skriptu, dobivate mogućnost interakcije s pinom 2 (identifikator specifičan za hardver) putem gumbA klijent. Zatim se možete pretplatiti na događaje kao što su pritiskanje gumba i izvršiti određene radnje unutar svoje IoT aplikacije.

Osnaživanje IoT razvoja uz DeviceScript

DeviceScript vam omogućuje da iskoristite TypeScript za male IoT uređaje, optimizirajući kod za ograničena okruženja. Njegov izlaz na konzolu pojednostavljuje bilježenje i vizualizaciju podataka. Apstrahiranjem hardverske interakcije kroz Jacdec usluge, pojednostavljuje komunikaciju sa senzorima i aktuatorima.

Integriran s Visual Studio Code, DeviceScript nudi sveobuhvatno okruženje za razvoj, što ga čini vrijednim alatom za učinkovita i sigurna IoT rješenja. Uz DeviceScript i Visual Studio Code možete pouzdano graditi IoT rješenja koja nisu samo učinkovita, već i održavaju visoku razinu sigurnosti tijekom cijelog procesa razvoja.