微软TypeScript是一种脚本编程语言,其主要的应用是在WEB应用领域,TypeScript(下称:TS)主要是改进了JavaScript的语法特性(注:JavaScript脚本和Java没有任何关系,语法上基本没有什么相似性,但是在初学的时候这个名称带来了很大的困惑,Javascript可以嵌入网页中直接操控HTML DOM),增加了类型的限制和面向对象的继承特性,TS编写的程序可以编译成WebAssembly字节码运行,也可以转换成Javascript语句运行,TS的语法相当的灵活而且超越了JavaScript,这次微软推出的嵌入版TS很可能是一次嵌入式编程的新赛道,这种脚本式的开发相似的不少,最早有8051下的Basic语言,还有近来的python,当然也有Javascript...但是要我比较还是看好TS,TS具有以上这些语言系统无法比拟的优势。
但是这种开发方式也有巨大的缺点:就是灵活性较差,需要芯片厂家或嵌入式厂家的BSP支持,就像Arduino一样需要许多人写驱动才能运行,往往嵌入式的项目外设太过复杂,所以Arduino也只是在一些原型什么的领域应用,实际的项目很少。所以这种方式能够走多远还是未知数。
目前微软的项目支持ESP和RP2040两个系列的硬件,我手头就有一块ESP32C3板子,就对DeviceScript做一下探索。
1、下载大火的开发工具VSCode和Nodejs,乐鑫的设备还要配置好ESP-IDF,怎么安装非常的简单,我是直接解压,配置一下PATH就可以了,两个都是。如果是安装包那就一路next
2、打开VSCode,安装DeviceScript扩展,这个也是简单的很。
3、“Creating a new project”创建一个新项目
找到DeviceScript: Create New Project...
选择一个目录
这一步是自动的,但是在国内一切皆有可能,如果失败需要更换NPM源,我的是阿里的。
打开项目目录,src下的main.ts,就是主程序
如果你没有硬件也没关系,可以模拟。
启动后就可以调试了
点击模拟图标还可以选择设备
点击设备还可以使用具体的设备,例如:bottom这时点击按钮就和真实的按钮一样。
如果你有一款物理设备有怎么用呢,这有点麻烦,首先是烧写flash固件,选择对应的命令就可以,注意需要安装pip等python工具。这个不知道是不是EPS32特有的要求
这个过程时常的失败,就像从github上git clone东西一样
多多试上几次,没准就成功了,就像我一样。
就像这里,看到链接到的设备就是成功了。那么点个灯吧!程序如下:
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)
可以看到模拟设备上的灯在闪,设备没有啥动静,这是为什么呀,下面我就来让设备的灯闪亮。
看到这个图标了吗,点一下,connect...
在选择串口设备,我的是COM8,115200
如果成功,可以看到设备的信息,参考这个代码,进行配置
{
"$schema": "https://raw.githubusercontent.com/microsoft/devicescript-esp32/main/boards/esp32deviceconfig.schema.json",
"id": "seeed_xiao_esp32c3",
"devName": "Seeed Studio XIAO ESP32C3",
"productId": "0x3eff6b51",
"$description": "A tiny ESP32-C3 board.",
"archId": "esp32c3",
"url": "https://www.seeedstudio.com/Seeed-XIAO-ESP32C3-p-5431.html",
"$services": [
{
"name": "buttonBOOT",
"pin": 9,
"service": "button"
}
],
"pins": {
"@D9": 9,
"D0": 2,
"D1": 3,
"D10": 10,
"D2": 4,
"D3": 5,
"D4": 6,
"D5": 7,
"D7": 20,
"D8": 8
},
"uartLog": true
}
我然后就是下载程序到设备,然后连接到设备,debug,运行可以看到灯闪了!
|