بهبود TypeScript مایکروسافت می تواند به شما کمک کند تا سیستم های پیچیده ای را توسعه دهید که توسط اینترنت اشیا پشتیبانی می شوند.
DeviceScript یک نوآوری پیشرفته از Microsoft Research است. قابلیتهای TypeScript را برای تطبیق دستگاههای اینترنت اشیا (IoT) در مقیاس کوچک با منابع محدود گسترش میدهد.
هدف اصلی آن این است که شما را قادر می سازد تا کدی را در TypeScript بنویسید و آن را در بایت کد سفارشی کامپایل کنید که برای استقرار در محیط های با محدودیت منابع بهینه شده است.
خروجی کنسول در DeviceScript
Microsoft DeviceScript یک کنسول کاربرپسند ارائه می دهد. از خروجی پیام و ثبت دادههای حسگر پشتیبانی میکند، اما به عنوان یک ابزار ارزشمند برای بررسی خطا نیز عمل میکند.
طیف وسیعی از عملکردها برای ثبت پیام ها با سطوح مختلف گزارش در اختیار شما است:
console.debug("debug")
console.log("log")
console.warn("warn")
console.error("error")
خروجی کنسول به راحتی در پنجره ترمینال DeviceScript قابل مشاهده است. این می تواند به ارائه بینش های ارزشمندی در مورد اجرای کد شما کمک کند و به فرآیند اشکال زدایی کمک کند.
علاوه بر این، DeviceScript ثبت اطلاعات حسگر را با ارائه تابع console.data، که به طور خودکار یک مهر زمانی به داده های ثبت شده اضافه می کند، ساده می کند.
به مثال زیر توجه کنید:
const temperature = 20;
const humidity = 60;
console.data({ temperature, humidity });
برای دسترسی به دادههای ثبتشده، میتوانید به صفحه خروجی DeviceScript – Data در Visual Studio Code بروید یا آن را از منوی view دانلود کنید.
قالب بندی قوی رشته
هنگام استفاده از تابع console.log() در DeviceScript، گزینه های زیادی برای قالب بندی رشته ها برای خروجی بهبود یافته دارید. به مثال های گویا زیر توجه کنید:
let x = 0;
let y = 4;
console.log("Greetings, world");
console.log("The value of X is", x, "while Y is", y);
console.log("X=", x, "Y=", y);
console.log(`X=${x} Y=${y}`);
console.log("X=" + x + " Y=" + y);
کامپایلر DeviceScript به طور خودکار فاصله ها را وارد می کند و در نتیجه خروجی خواناتری به دست می آید. به عنوان مثال، مثال دوم و سوم مقدار X 7 است در حالی که Y به ترتیب 12 و X=7 Y=12 است.
هنگام نوشتن در رجیسترها، می توانید از الفاظ الحاقی و الگو استفاده کنید. قطعه کد زیر را در نظر بگیرید:
const screen = new ds.CharacterScreen();
let x = 7;
screen.message.write("The value of X is " + x);
screen.message.write(`X is equal to ${x}`);
با استفاده از الحاق یا الفاظ الگو، می توانید بدون زحمت رشته های پویا بسازید تا طیف متنوعی از نیازها را برآورده کنید.
علاوه بر این، DeviceScript تابع ds.format() را برای قالب بندی رشته های پیشرفته ارائه می دهد. میتوانید از این تابع در ارتباط با console.log() یا هنگام پیکربندی ثباتهای رشته استفاده کنید.
متغیرهایی را برای آرگومانها با استفاده از قالبهای {0}، {1}، {2} و غیره مشخص کنید. شما همچنین می توانید دقت را با اضافه کردن یک رقم دوم مشخص کنید.
به مثال زیر توجه کنید:
const screen = new ds.CharacterScreen();
let x = 7;
let y = 12;
console.log(ds.format("X is {0} and Y is {1}", x, y));
console.log(ds.format("X = {04}", x));
screen.message.write(ds.format("X is approximately {0}", x));
به خاطر داشته باشید که تعیین دقت با رقم دوم ممکن است در همه حالات نتایج بی عیب و نقصی به همراه نداشته باشد.
مشتریان: فعال کردن تعامل با حسگرها و محرک ها
اکوسیستم DeviceScript تعامل با حسگرها، محرک ها و سایر اجزای سخت افزاری را از طریق خدمات Jacdac خلاصه می کند.
این چارچوب حسگرها را به عنوان سرور در نظر می گیرد، در حالی که اسکریپت های شما برای تسهیل تعامل، مشتریان را به این سرورها متصل می کند. برای نشان دادن این مفهوم، سناریوی کنترل کننده سیستم گرمایش خانه را در نظر بگیرید.
سیستم گرمایشی شامل یک رله است که عملکرد کوره را تنظیم می کند، یک سنسور دما و یک رمزگذار چرخشی برای تنظیم دمای مورد نظر. در DeviceScript، برای هر سرویس مورد نیاز، کلاینتهایی را تعریف میکنید که به آنها نقش نیز گفته میشود.
به قطعه کد زیر نگاهی بیندازید:
import { Temperature, Relay } from "@devicescript/core";
const thermometer = new Temperature();
const thermometer2 = new Temperature();
const relay = new Relay();
با نمونه سازی سرویس گیرندگان ضروری مانند دماسنج، دماسنج 2 و رله، ارتباط یکپارچه با سرورهای مربوطه برقرار می کنید.
سرورهای سخت افزاری DeviceScript
برای تعامل با هر جزء سخت افزاری در DeviceScript، از سرویس گیرندگان استفاده می کنید. با این حال، برای برنامهنویسی مؤثر این اجزای سختافزاری، اولیهسازی سرورهای سرویس بر روی سختافزار اساسی ضروری است.
DeviceScript گستره وسیعی از سرورها را در ماژول @devicescript/servers ارائه میکند، در نتیجه این فرآیند را ساده میکند.
به عنوان مثال، تابع startButton شما را قادر می سازد تا یک سرور دکمه را روی یک پین خاص مستقر کرده و کلاینت مربوطه را بدست آورید. به مثال زیر توجه کنید:
import { gpio } from "@devicescript/core";
import { startButton } from "@devicescript/servers";
const buttonA = startButton({ pin: gpio(2),});
با گنجاندن این قطعه کد در اسکریپت خود، توانایی تعامل با پین 2 (شناسه مخصوص سخت افزار) را از طریق کلاینت buttonA به دست می آورید. سپس می توانید در رویدادهایی مانند فشار دادن دکمه ها مشترک شوید و اقدامات خاصی را در برنامه IoT خود انجام دهید.
توانمندسازی توسعه اینترنت اشیا با DeviceScript
DeviceScript شما را قادر می سازد تا از TypeScript برای دستگاه های IoT کوچک استفاده کنید و کد را برای محیط های محدود بهینه سازی کنید. خروجی کنسول آن ثبت و تجسم داده ها را ساده می کند. با انتزاع کردن تعامل سخت افزاری از طریق خدمات Jacdec، ارتباط با حسگرها و محرک ها را ساده می کند.
DeviceScript که با کد ویژوال استودیو ادغام شده است، یک محیط جامع برای توسعه ارائه می دهد و آن را به ابزاری ارزشمند برای راه حل های کارآمد و ایمن اینترنت اشیا تبدیل می کند. با DeviceScript و Visual Studio Code، میتوانید با اطمینان راهحلهای IoT بسازید که نه تنها کارآمد هستند، بلکه سطح بالایی از امنیت را در کل فرآیند توسعه حفظ میکنند.