微软发布针对微型物联网设备的开源物联网语言 DeviceScript
微软开源了DeviceScript语言,DeviceScript是用于微型物联网设备的TypeScript。它为基于低资源微控制器的设备带来TypeScript开发人员体验。DeviceScript编译为自定义VM字节码,可以在非常受限的环境中运行。
DeviceScript有以下典型特征:
- 支持TypeScript:熟悉的语法和工具,开发成本低。
- 便携式虚拟机:占用空间小,DeviceScript字节码解释器。
- 硬件即服务:在抽象硬件服务上编写可重用应用程序/固件。?
- 云即服务:通过统一API使用JSON与云通信,内置设备运行状况监控。
- 非常小:为低功耗、低闪存、低内存嵌入式项目设计。?
- 模拟与追踪:使用模拟或真实传感器开发和测试固件。?
- 调试:针对硬件或模拟设备的Visual Studio Code完整调试体验。
- 包生态系统:使用npm、yarn或pnpm分发和使用DeviceScript包。
3. DeviceScript已经在GitHub上开源,采用MIT许可证,目前已有超过0.8k的star。
4. DeviceScript是一个值得关注的前端开源项目。
DeviceScript示例代码:
下面是 ESP32 上的经典 LED 闪烁程序,LED 连接到引脚 A0。
import { pins } from "@dsboard/adafruit_qt_py_c3" import { startLightBulb } from "@devicescript/servers" const lightBulb = startLightBulb({ pin: pins.A0, }) setInterval(async () => { await lightBulb.toggle() }, 500)在下面的示例中,使用单个按钮在 Raspberry Pi Pico 上创建一个复制粘贴微型键盘。
该按钮连接到 Pico 的 GP14 引脚。 按下按钮时,Pico 将使用 HID 键盘服务器向计算机发送 ctrl+c 或 ctrl+v 击键。 ctrl+c 将复制所选文本,ctrl+v 键将粘贴复制的文本。
剪贴板的状态由连接到 Pico 的 GP1 引脚的状态 LED 指示。 当 LED 亮起时,剪贴板已满,当 LED 熄灭时,剪贴板为空。
下面是示例完整代码:
import { pins, board } from "@dsboard/pico" import { startButton, startHidKeyboard, startLightBulb, } from "@devicescript/servers" import { HidKeyboardAction, HidKeyboardModifiers, HidKeyboardSelector, } from "@devicescript/core" // 安装在 GP14 上的键盘按钮 const button = startButton({ pin: pins.P14, }) // 安装在 GP1 上的状态指示灯 LED const led = startLightBulb({ pin: pins.P1, }) // 将发送击键的 HID 键盘驱动程序 const keyboard = startHidKeyboard({}) // true: ctrl+c, false: ctrl+v let copy = true // use leftgui on mac or leftcontrol on windows let modifier = HidKeyboardModifiers.LeftGUI // uncomment for windows // let modifier = HidKeyboardModifiers.LeftControl // copy and paste on button click button.down.subscribe(async () => { // 当copy为true时,发送 ctrl+c const selector = copy ? HidKeyboardSelector.C : HidKeyboardSelector.V // 当 copy 为真时,打开 led 以表示“完整剪贴板” const brightness = copy ? 1 : 0 // 部分日志 console.log(copy ? "ctrl+c" : "ctrl+v") await keyboard.key(selector, modifier, HidKeyboardAction.Press) await led.intensity.write(brightness) // toggle for next round copy = !copy })
github地址:https://github.com/microsoft/devicescript
文档:https://microsoft.github.io/devicescript/getting-started
网友评论