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.
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.