Peningkatan TypeScript Microsoft dapat membantu Anda mengembangkan sistem kompleks yang didukung oleh Internet of Things.

DeviceScript adalah inovasi mutakhir dari Microsoft Research. Ini memperluas kemampuan TypeScript untuk mengakomodasi perangkat Internet of Things (IoT) skala kecil dengan sumber daya terbatas.

Tujuan utamanya adalah untuk memungkinkan Anda menulis kode dalam TypeScript dan mengompilasinya menjadi bytecode khusus, yang dioptimalkan untuk penerapan di lingkungan terbatas sumber daya.

Keluaran Konsol di DeviceScript

Skrip Perangkat Microsoft menawarkan konsol yang mudah digunakan. Ini mendukung keluaran pesan dan pencatatan data sensor tetapi juga berfungsi sebagai a alat yang berharga untuk pengecekan kesalahan.

Berbagai fungsi siap membantu Anda untuk mencatat pesan dengan tingkat log yang berbeda:

menghibur.debug("debug")
menghibur.catatan("catatan")
menghibur.memperingatkan("memperingatkan")
menghibur.kesalahan("kesalahan")

Output konsol mudah terlihat di dalam jendela terminal DeviceScript. Ini dapat membantu memberikan wawasan berharga tentang jalannya kode Anda dan membantu proses debugging.

Selanjutnya, DeviceScript menyederhanakan pencatatan data sensor dengan menyediakan konsol.data fungsi, yang secara otomatis menambahkan stempel waktu ke data yang dicatat.

Pertimbangkan contoh berikut:

const suhu = 20;
const kelembaban = 60;
menghibur.data({ suhu, kelembaban });

Untuk mengakses data yang dicatat, Anda dapat menavigasi ke DeviceScript - Keluaran data pane di Visual Studio Code atau unduh dari menu tampilan.

Pemformatan String yang Kuat

Saat menggunakan konsol.log() berfungsi di DeviceScript, Anda punya banyak pilihan untuk memformat string untuk output yang ditingkatkan. Perhatikan contoh ilustrasi berikut:

membiarkan x = 0;
membiarkan y = 4;
menghibur.catatan("Salam, dunia");
menghibur.catatan("Nilai X adalah", X, "sementara Y adalah", y);
menghibur.catatan("X=", X, "Y=", y);
menghibur.catatan(`X=${x} Y=${y}`);
menghibur.catatan("X=" + x + "Y=" + y);

Kompiler DeviceScript secara otomatis menyisipkan spasi, menghasilkan keluaran yang lebih mudah dibaca. Misalnya, contoh kedua dan ketiga akan menghasilkan Nilai X adalah 7 sedangkan Y adalah 12 Dan X=7 Y=12, masing-masing.

Saat menulis ke register, Anda juga dapat menggunakan gabungan dan templat literal. Pertimbangkan cuplikan kode berikut:

const layar = baru ds. Layar Karakter();
membiarkan x = 7;
layar.pesan.tulis("Nilai X adalah" + x);
layar.pesan.tulis(`X sama dengan ${x}`);

Menggunakan gabungan atau template literal, Anda dapat dengan mudah membuat string dinamis untuk memenuhi beragam persyaratan.

Selanjutnya, DeviceScript menawarkan ds.format() fungsi untuk pemformatan string tingkat lanjut. Anda dapat menggunakan fungsi ini bersamaan dengan konsol.log() atau saat mengkonfigurasi register string.

Tentukan placeholder untuk argumen menggunakan format {0}, {1}, {2}, Dan seterusnya. Anda juga dapat menentukan presisi dengan menambahkan digit kedua.

Perhatikan contoh berikut:

const layar = baru ds. Layar Karakter();
membiarkan x = 7;
membiarkan y = 12;
menghibur.log (ds.format("X adalah {0} dan Y adalah {1}", x, y));
menghibur.log (ds.format("X = {04}", X));
layar.pesan.tulis (ds.format("X kira-kira {0}", X));

Ingatlah bahwa menentukan presisi dengan digit kedua mungkin tidak memberikan hasil sempurna di semua skenario.

Klien: Mengaktifkan Interaksi Dengan Sensor dan Aktuator

Ekosistem DeviceScript mengabstraksi interaksi dengan sensor, aktuator, dan komponen perangkat keras lainnya melalui layanan Jacdac.

Framework ini memperlakukan sensor sebagai server, sementara skrip Anda menghubungkan klien ke server ini untuk memfasilitasi interaksi. Untuk mengilustrasikan konsep ini, pertimbangkan skenario pengontrol sistem pemanas rumah.

Sistem pemanas meliputi relai yang mengatur pengoperasian tungku, sensor suhu, dan encoder putar untuk menyesuaikan suhu yang diinginkan. Di DeviceScript, Anda menentukan klien, juga disebut sebagai peran, untuk setiap layanan yang diperlukan.

Lihatlah cuplikan kode berikut:

impor { Suhu, Relai } dari"@devicescript/core";
const termometer = baru Suhu();
const termometer2 = baru Suhu();
const relai = baru Menyampaikan();

Dengan memberi contoh klien layanan yang diperlukan, seperti termometer, termometer2, Dan menyampaikan, Anda menjalin komunikasi tanpa hambatan dengan server terkait.

Server Perangkat Keras DeviceScript

Untuk berinteraksi dengan komponen perangkat keras apa pun di DeviceScript, Anda menggunakan klien layanan. Namun, untuk pemrograman yang efektif dari komponen perangkat keras ini, sangat penting untuk menginisialisasi server layanan pada perangkat keras yang mendasarinya.

DeviceScript menawarkan berbagai server dalam @devicescript/server modul, sehingga merampingkan proses ini.

Misalnya, tombol Mulai fungsi memungkinkan Anda untuk menggunakan server tombol pada pin tertentu dan mendapatkan klien yang sesuai. Perhatikan contoh berikut:

impor {gpio} dari"@devicescript/core";
impor { tombol Mulai } dari"@devicescript/server";
const tombolA = tombolMulai({ pin: gpio(2),});

Dengan memasukkan cuplikan kode ini ke dalam skrip Anda, Anda memperoleh kemampuan untuk berinteraksi dengan pin 2 (pengidentifikasi khusus perangkat keras) melalui tombolA klien. Anda kemudian dapat berlangganan acara seperti penekanan tombol dan menjalankan tindakan tertentu dalam aplikasi IoT Anda.

Memberdayakan Pengembangan IoT Dengan DeviceScript

DeviceScript memungkinkan Anda memanfaatkan TypeScript untuk perangkat IoT kecil, mengoptimalkan kode untuk lingkungan terbatas. Output konsolnya menyederhanakan logging dan visualisasi data. Dengan mengabstraksi interaksi perangkat keras melalui layanan Jacdec, ini merampingkan komunikasi dengan sensor dan aktuator.

Terintegrasi dengan Visual Studio Code, DeviceScript menawarkan lingkungan pengembangan yang komprehensif, menjadikannya alat yang berharga untuk solusi IoT yang efisien dan aman. Dengan DeviceScript dan Visual Studio Code, Anda dapat dengan percaya diri membangun solusi IoT yang tidak hanya efisien tetapi juga mempertahankan tingkat keamanan yang tinggi di seluruh proses pengembangan.