Ulepszenie TypeScript firmy Microsoft może pomóc w tworzeniu złożonych systemów opartych na Internecie rzeczy.

DeviceScript to najnowocześniejsza innowacja firmy Microsoft Research. Rozszerza możliwości TypeScript, aby dostosować się do małych urządzeń Internetu rzeczy (IoT) o ograniczonych zasobach.

Jego głównym celem jest umożliwienie pisania kodu w języku TypeScript i kompilowania go do niestandardowego kodu bajtowego, zoptymalizowanego do wdrożenia w środowiskach o ograniczonych zasobach.

Wyjście konsoli w DeviceScript

Microsoft DeviceScript oferuje przyjazną dla użytkownika konsolę. Obsługuje wysyłanie komunikatów i rejestrowanie danych z czujników, ale służy również jako cenne narzędzie do sprawdzania błędów.

Dostępnych jest szereg funkcji umożliwiających rejestrowanie wiadomości na różnych poziomach rejestrowania:

konsola.odpluskwić("odpluskwić")
konsola.dziennik("dziennik")
konsola.ostrzegać("ostrzegać")
konsola.błąd("błąd")

Dane wyjściowe konsoli są łatwo widoczne w oknie terminala DeviceScript. Może pomóc w uzyskaniu cennych informacji na temat działania kodu i pomóc w procesie debugowania.

instagram viewer

Co więcej, DeviceScript upraszcza rejestrowanie danych z czujników, udostępniając dane.konsoli funkcja, która automatycznie dodaje znacznik czasu do zarejestrowanych danych.

Rozważ następujący przykład:

konst temperatura = 20;
konst wilgotność = 60;
konsola.data({temperatura, wilgotność});

Aby uzyskać dostęp do zarejestrowanych danych, możesz przejść do DeviceScript — wyjście danych pane w Visual Studio Code lub pobierz go z menu widoku.

Potężne formatowanie ciągów

Podczas korzystania z log.konsoli() funkcja w DeviceScript, masz wiele opcji formatowania ciągów dla zwiększonej wydajności. Rozważ następujące ilustrujące przykłady:

pozwalać x = 0;
pozwalać y = 4;
konsola.dziennik(„Witaj, świecie”);
konsola.dziennik(„Wartość X to”, X, „podczas gdy Y jest”, y);
konsola.dziennik("X=", X, "Y=", y);
konsola.dziennik(`X=${x} Y=${y}`);
konsola.dziennik("X=" + x + "Y=" + y);

Kompilator DeviceScript automatycznie wstawia spacje, dzięki czemu dane wyjściowe są bardziej czytelne. Na przykład drugi i trzeci przykład wygenerują Wartość X wynosi 7, podczas gdy Y wynosi 12 I X=7 Y=12odpowiednio.

Podczas zapisywania do rejestrów można również używać literałów konkatenacji i szablonów. Rozważ następujący fragment kodu:

konst ekran = nowy ds. Ekran Znaku();
pozwalać x = 7;
screen.message.write(„Wartość X to” +x);
screen.message.write(`X jest równe ${x}`);

Korzystając z konkatenacji lub literałów szablonowych, możesz bez wysiłku konstruować dynamiczne łańcuchy, aby zaspokoić zróżnicowany zakres wymagań.

Ponadto DeviceScript oferuje ds.format() funkcja do zaawansowanego formatowania ciągów. Możesz użyć tej funkcji w połączeniu z log.konsoli() lub podczas konfigurowania rejestrów łańcuchowych.

Określ symbole zastępcze argumentów za pomocą formatu {0}, {1}, {2}, i tak dalej. Precyzję można również określić, dodając drugą cyfrę.

Zwróć uwagę na następujący przykład:

konst ekran = nowy ds. Ekran Znaku();
pozwalać x = 7;
pozwalać y = 12;
konsola.log (ds.format(„X to {0}, a Y to {1}”, x, y));
konsola.log (ds.format("X = {04}", X));
screen.message.write (ds.format(„X wynosi około {0}”, X));

Należy pamiętać, że określenie precyzji za pomocą drugiej cyfry może nie dać bezbłędnych wyników we wszystkich scenariuszach.

Klienci: umożliwienie interakcji z czujnikami i siłownikami

Ekosystem DeviceScript abstrahuje interakcję z czujnikami, siłownikami i innymi komponentami sprzętowymi za pośrednictwem usług Jacdac.

Ta struktura traktuje czujniki jak serwery, podczas gdy twoje skrypty łączą klientów z tymi serwerami, aby ułatwić interakcję. Aby zilustrować tę koncepcję, rozważmy scenariusz sterownika systemu ogrzewania domu.

W skład układu grzewczego wchodzi przekaźnik regulujący pracę pieca, czujnik temperatury oraz enkoder obrotowy do ustawiania żądanej temperatury. W DeviceScript definiujesz klientów, zwanych także rolami, dla każdej wymaganej usługi.

Spójrz na następujący fragment kodu:

import { Temperatura, przekaźnik } z"@skrypt urządzenia/rdzeń";
konst termometr = nowy Temperatura();
konst termometr2 = nowy Temperatura();
konst przekaźnik = nowy Przekaźnik();

Tworząc wystąpienia niezbędnych klientów usług, takich jak termometr, termometr2, I przekaźnik, nawiązujesz bezproblemową komunikację z odpowiednimi serwerami.

Serwery sprzętowe DeviceScript

Aby wchodzić w interakcje z dowolnym komponentem sprzętowym w DeviceScript, zatrudniasz klientów usług. Jednak w celu efektywnego programowania tych komponentów sprzętowych konieczne jest zainicjowanie serwerów usług na bazowym sprzęcie.

DeviceScript oferuje szeroką gamę serwerów w ramach @devicescript/servers moduł, usprawniając w ten sposób ten proces.

Na przykład przycisk Start Funkcja umożliwia wdrożenie serwera przycisków na określonym pinie i uzyskanie odpowiedniego klienta. Zwróć uwagę na następujący przykład:

import {gpio} z"@skrypt urządzenia/rdzeń";
import { przycisk Start } z"@skrypt urządzenia/serwery";
konst przyciskA = startButton({ szpilka: gpio(2),});

Włączając ten fragment kodu do swojego skryptu, zyskujesz możliwość interakcji z pinem 2 (identyfikatorem sprzętowym) poprzez przycisk A klient. Następnie możesz subskrybować zdarzenia, takie jak naciśnięcia przycisków i wykonywać określone działania w aplikacji IoT.

Wzmacnianie rozwoju IoT dzięki DeviceScript

DeviceScript umożliwia wykorzystanie TypeScript dla małych urządzeń IoT, optymalizując kod dla ograniczonych środowisk. Wyjście konsoli upraszcza rejestrowanie i wizualizację danych. Abstrahując interakcje sprzętowe za pośrednictwem usług Jacdec, usprawnia komunikację z czujnikami i siłownikami.

Zintegrowany z Visual Studio Code, DeviceScript oferuje kompleksowe środowisko programistyczne, dzięki czemu jest cennym narzędziem dla wydajnych i bezpiecznych rozwiązań IoT. Dzięki DeviceScript i Visual Studio Code możesz śmiało budować rozwiązania IoT, które są nie tylko wydajne, ale także utrzymują wysoki poziom bezpieczeństwa w całym procesie programowania.