Microsofts TypeScript-forbedring kan hjelpe deg med å utvikle komplekse systemer drevet av tingenes internett.

DeviceScript er en banebrytende innovasjon fra Microsoft Research. Det utvider egenskapene til TypeScript for å imøtekomme småskala Internet of Things (IoT)-enheter med begrensede ressurser.

Hovedmålet er å gjøre det mulig for deg å skrive kode i TypeScript og kompilere den til egendefinert bytekode, optimalisert for distribusjon i miljøer med begrensede ressurser.

Konsollutdata i DeviceScript

Microsoft DeviceScript tilbyr en brukervennlig konsoll. Den støtter meldingsutgang og logging av sensordata, men fungerer også som en verdifullt verktøy for feilkontroll.

En rekke funksjoner står til din disposisjon for å logge meldinger med forskjellige loggnivåer:

konsoll.debug("feilsøke")
konsoll.Logg("Logg")
konsoll.varsle("varsle")
konsoll.feil("feil")

Konsollutdataene er lett synlige i DeviceScript-terminalvinduet. Det kan bidra til å gi verdifull innsikt i kjøringen av koden din og hjelpe prosessen med feilsøking.

instagram viewer

Videre forenkler DeviceScript loggingen av sensordata ved å tilby console.data funksjon, som automatisk legger til et tidsstempel til de loggede dataene.

Tenk på følgende eksempel:

konst temperatur = 20;
konst fuktighet = 60;
konsoll.data({ temperatur, fuktighet });

For å få tilgang til de loggede dataene kan du navigere til DeviceScript - Datautgang ruten i Visual Studio Code eller last den ned fra visningsmenyen.

Kraftig strengformatering

Når du bruker console.log() funksjon i DeviceScript, du har mange alternativer for å formatere strenger for forbedret utgang. Tenk på følgende illustrerende eksempler:

la x = 0;
la y = 4;
konsoll.Logg("Hilsen verden");
konsoll.Logg("Verdien av X er", x, "mens Y er", y);
konsoll.Logg("X=", x, "Y=", y);
konsoll.Logg(`X=${x} Y=${y}`);
konsoll.Logg("X=" + x + " Y=" + y);

DeviceScript-kompilatoren setter automatisk inn mellomrom, noe som resulterer i mer lesbare utdata. For eksempel vil det andre og tredje eksemplet produsere Verdien av X er 7 mens Y er 12 og X=7 Y=12, henholdsvis.

Når du skriver til registre, kan du også bruke sammenkobling og malbokstaver. Tenk på følgende kodebit:

konst skjerm = ny ds. CharacterScreen();
la x = 7;
screen.message.write("Verdien av X er" + x);
screen.message.write(`X er lik ${x}`);

Ved å bruke sammenkobling eller bokstavmaler kan du enkelt konstruere dynamiske strenger for å imøtekomme en rekke ulike krav.

Videre tilbyr DeviceScript ds.format() funksjon for avansert strengformatering. Du kan bruke denne funksjonen sammen med console.log() eller når du konfigurerer strengregistre.

Angi plassholdere for argumenter ved å bruke formatet {0}, {1}, {2}, og så videre. Du kan også angi presisjon ved å legge til et andre siffer.

Legg merke til følgende eksempel:

konst skjerm = ny ds. CharacterScreen();
la x = 7;
la y = 12;
konsoll.log (ds.format("X er {0} og Y er {1}", x, y));
konsoll.log (ds.format("X = {04}", x));
screen.message.write (ds.format("X er omtrent {0}", x));

Husk at å spesifisere presisjon med et andre siffer kanskje ikke gir feilfrie resultater i alle scenarier.

Klienter: Muliggjør interaksjon med sensorer og aktuatorer

DeviceScript-økosystemet abstraherer interaksjon med sensorer, aktuatorer og andre maskinvarekomponenter gjennom Jacdac-tjenester.

Dette rammeverket behandler sensorer som servere, mens skriptene dine kobler klienter til disse serverne for å lette interaksjon. For å illustrere dette konseptet, vurder scenariet med en kontroller for et hjemmevarmesystem.

Varmesystemet omfatter et relé som regulerer driften av ovnen, en temperatursensor og en roterende koder for justering av ønsket temperatur. I DeviceScript definerer du klienter, også referert til som roller, for hver påkrevde tjeneste.

Ta en titt på følgende kodebit:

import { Temperatur, relé } fra"@devicescript/core";
konst termometer = ny Temperatur();
konst termometer2 = ny Temperatur();
konst relé = ny Relé();

Ved å instansiere nødvendige tjenesteklienter, som f.eks termometer, termometer 2, og relé, etablerer du sømløs kommunikasjon med de tilsvarende serverne.

DeviceScript maskinvareservere

For å samhandle med en hvilken som helst maskinvarekomponent i DeviceScript bruker du tjenesteklienter. For effektiv programmering av disse maskinvarekomponentene er det imidlertid viktig å initialisere tjenesteservere på den underliggende maskinvaren.

DeviceScript tilbyr et omfattende utvalg av servere innenfor @devicescript/servere modul, og dermed effektivisere denne prosessen.

For eksempel start knapp funksjonen lar deg distribuere en knappeserver på en spesifikk pin og få den tilsvarende klienten. Legg merke til følgende eksempel:

import { gpio } fra"@devicescript/core";
import { start knapp } fra"@devicescript/servers";
konst knappA = startknapp({ pin: gpio(2),});

Ved å inkorporere denne kodebiten i skriptet ditt får du muligheten til å samhandle med pin 2 (den maskinvarespesifikke identifikatoren) gjennom knapp A klient. Du kan deretter abonnere på hendelser som knappetrykk og utføre spesifikke handlinger i din IoT-applikasjon.

Styrk IoT-utvikling med DeviceScript

DeviceScript lar deg utnytte TypeScript for små IoT-enheter, og optimaliserer koden for begrensede miljøer. Konsollutgangen forenkler logging og datavisualisering. Ved å abstrahere maskinvareinteraksjon gjennom Jacdec-tjenester, effektiviserer den kommunikasjonen med sensorer og aktuatorer.

Integrert med Visual Studio Code tilbyr DeviceScript et omfattende miljø for utvikling, noe som gjør det til et verdifullt verktøy for effektive og sikre IoT-løsninger. Med DeviceScript og Visual Studio Code kan du trygt bygge IoT-løsninger som ikke bare er effektive, men også opprettholder et høyt sikkerhetsnivå gjennom hele utviklingsprosessen.