# 更新日志
# USV 0.8.0 (2022-10-31)
USV 0.8.0 主要在烧录模式下新增了 Arduino 语言的支持
# 新增功能
- 新增 烧录模式 Arduino 支持
- 新增 内置串口协议, 新增了两个方法
disconnectNoEmit()
和connectNoEmit()
解决 Arduino 编译烧录的时候, 触发连接断开的问题
# 修复
- 修复 工具类
Cast
新增了toNumberOrString
适合于转代码的函数
# USV 0.7.0 (2022-09-15)
# 破坏性更新
- 由于 USV 0.7.0 更新了连接交互, 只有一个设备的时候自动连接的选项(
autoConnect
以下代码第6行)已经去除, 并且新增一个skipDuplicate
(参照代码14行)是否要过滤已经连接过的设备, 默认开启
/**
* 扫描 设备类型
*/
export type DiscoverDeviceType = CommonDeviceType & {
readonly connectType: 'discover';
// autoConnect?: boolean;
/**
* 扫描超时时间, 到达时间自动停止
*/
scanTime?: number;
/**
* 是否要过滤已经连接过的设备, device.id 作为唯一标识, 默认过滤
*/
skipDuplicate?: boolean;
};
# 新增功能
# USV 0.6.0 (2022-07-19)
# 新增功能
- 新增 国际化支持
- 新增
Developer-Kit
封装了配置文件tsconfig.json
以及.eslintrc.js
, 以后更新配置, 只要更新Developer-kit
即可
扩展 tsconfig 以及 eslintrc
可以参考以下配置, 或者参考最新的脚手架:
- 优化 Beta 测试版本的支持, 在使用 Beta 版本的脚手架的时候, 默认安装的是 Beta 版本的 NPM 仓库
npx @ubtech/create-ucode-extension@beta
# USV 0.5.0 (2022-06-17)
# 新增功能
# 修复
- 修复函数积木块无法正常转代码的问题
- 修复windows下脚手架异常的问题
# USV 0.4.0 (2022-06-09)
# 重要更新
# 破坏性更新
- 旧的写法:
// block声明
{
// ...省略...
arguments: {
INPUT: {
type: self.UCode.ArgumentType.NUMBER_INPUT,
defaultValue: 2,
min: 1, // 最小值,非必填。若regExp值为空,则根据min的值来限制负号的输入。
max: 100, //最大值,非必填
precision: 1, //小数点位数限制,非必填。
regExp: '^[-]?\\d+(.\\d{0,3})?$', // 校验规则,非必填。校验优先级高于【min,precision】的限制。
},
},
},
- 新的写法:
// block声明
{
// ...省略...
arguments: {
INPUT: {
type: self.UCode.ArgumentType.NUMBER_INPUT,
defaultValue: 2,
options: { // 可选参数
type: 'number',
min: 1, // 最小值,非必填。若regExp值为空,则根据min的值来限制负号的输入。
max: 100, //最大值,非必填
precision: 1, //小数点位数限制,非必填。
regExp: '^[-]?\\d+(.\\d{0,3})?$', // 校验规则,非必填。校验优先级高于【min,precision】的限制。
}
},
},
},
- 更改 typescript 版本的插件部分类型 和 namespace。需要更新 @ubtech/ucode-extension-common-sdk 至 1.2.0
- 旧的写法:
import type { ExternalHardwareGetInfo } from "@ubtech/ucode-extension-common-sdk/types";
export class ExampleDeviceExtension {
getInfo(): ExternalHardwareGetInfo | ExternalHardwareGetInfo[] {}
}
import type { ExternalHardwareExtensionRegister } from '@ubtech/ucode-extension-common-sdk/types';
const register: ExternalHardwareExtensionRegister = {}
- 新的写法:
import type { UCodeExternalHardwareDefinition } from "@ubtech/ucode-extension-common-sdk/types";
export class ExampleDeviceExtension {
getInfo(): UCodeExternalHardwareDefinition.GetInfo | UCodeExternalHardwareDefinition.GetInfo[] {
}
import type { UCodeExternalHardwareDefinition } from '@ubtech/ucode-extension-common-sdk/types';
const register: UCodeExternalHardwareDefinition.ExtensionRegister = {}
# 新增功能
- 新增 自定义 UI *beta
- 新增 硬件设置菜单
- 新增 积木块定义, 新增参数
onlySupportUploadMode
, 控制该积木块只在烧录模式下可用 - 新增 标准 micropython 设备repl 模式数据解释器工具
- 新增 积木控件普通点阵增加行、列配置参数
- 新增 积木控件自定义点阵
# 优化
- 优化 统一错误码以及错误提示, 以及自定义错误
- 优化 新增了 UCode 调试服务
- 优化 脚手架增加了
Manifest
的校验 - 优化 脚手架, 更改了目录结构, 新建了
.dev
目录, 参照 脚手架目录结构
# 修复
- 修复 烧录模式转代码, 全局变量, 没有初始化值的问题
- 修复 烧录模式转代码, 变量是中文的时候(非合法变量), 没有做处理
- 修复 烧录模式转代码, python 代码转换, 控制积木块,
if-else
,else
的缩进不正确 - 修复 在客户端调试模式中已连接硬件,并启动了修改代码自动刷新页面功能,刷新后无法再次搜索硬件的问题
# USV 0.3.0 (2022-04-12)
# 迭代更新
- 新增 支持 积木块 多个积木盒子 (多个积木块分类) (把
getInfo
返回一个数组即可, 兼容原来的版本) - 新增 支持 UDP/TCP 协议
- 新增 支持 积木块中数字、字符串值的输入限制能力
- 优化 整个插件加载方式, 从
Worker
修改为iFrame Sandbox
, 将会支持更新的特性 - 优化 脚手架框架, 修复了很多 以前 Yeoman 框架的问题
# 破坏性更新
从 USV 0.3.0
开始:
- 插件 manifest.json 必须指定
USV
的版本号, 该版本号用于uCode
作为, 该插件的版本更新兼容判断, 详细可以参考 USV 版本号 - 为了保证 SDK 和 uCode 的一致性, 从这个版本开始, 插件不需要再打包 SDK, uCode 内部集成了 SDK, 需要更新 webpack 配置
- 最新 SDK 也不再提供
js
代码, 里面只有d.ts
的声明文件
更改说明
找到你的 webpack.common.js
, 然后 在最后加上
externals: {
'@ubtech/ucode-extension-common-sdk': 'UCodeExtensionCommonSDK',
}
最新版本的脚手架也同步更新了配置, 新建的项目自带了该配置
同时建议, 把 package.json
里面的版本号改为 latest
"@ubtech/ucode-extension-common-sdk": "latest"
然后执行更新
npm update @ubtech/ucode-extension-common-sdk
或者
yarn upgrade @ubtech/ucode-extension-common-sdk
# 2022-03-25
- 新增“项目实践”内容,提供从 0 到 1 指导开发 ESP32 设备项目描述
- 新增“内置硬件协议”内容,提供数据发送和接受的描述及示例代码
- 新增积木“参数控件(Field)类型 使用示例”
# 2022-03-18
# 更新脚手架
优化了脚手架的选项, 合并了两类选项 硬件特性(串口协议, 蓝牙协议, 烧录模式)
- 硬件特性:
❯ npx yo @ubtech/ucode
_-----_
| | ╭──────────────────────────╮
|--(o)--| │ uCode v4 插件脚手架 │
`---------´ │ v1.0.14 │
( _´U`_ ) ╰──────────────────────────╯
/___A___\ /
| ~ |
__'.___.'__
´ ` |° ´ Y `
? 请输入插件的名字 demo
? 要开启的硬件功能 (Press <space> to select, <a> to toggle all, <i> to invert selection,
and <enter> to proceed)
❯◯ 串口协议 SerialPort
◯ 蓝牙协议 Ble
◯ 烧录模式
- 开发功能:
? 要支持的开发功能 (Press <space> to select, <a> to toggle all, <i> to invert selection,
and <enter> to proceed)
❯◯ 使用 TypeScript
◯ 使用 ESLint
# 新增了脚手架的, 协议案例的说明
# 2022-03-02
# 破坏性更新
- npm 组织名修改
由于 @ubt
已经被注册过了, 现在修改为 @ubtech
- 影响到所有的 SDK 引用,
@ubt/ucode-extension-common-sdk
修改为@ubtech/ucode-extension-common-sdk
- 脚手架引用,
yo @ubt/ucode
修改为yo @ubtech/ucode
# 2022-03-01
# 破坏性更新
- 设备注册 名字修改
原来的 ProtocolRegister
修改为 DeviceRegister
完整案例:
// 原来的版本
const register = {
ProtocolRegister: [bleRegister, spRegister, WebsocketRegister],
BlockRegister: ExampleDeviceExtension,
UploadModeRegister: UploadModeRegister,
};
// 最新的版本
const register = {
DeviceRegister: [bleRegister, spRegister, WebsocketRegister],
BlockRegister: ExampleDeviceExtension,
UploadModeRegister: UploadModeRegister,
};
# 关键术语重命名
"Protocol" 统一修改为 DeviceConnection, 对应的中文 硬件协议 修改为 硬件设备
保留 SerialPortProtocol, WebbleProtocol 等, 因为 串口, 蓝牙 本身就是一个协议
# 文档目录结构
重新梳理了文档结构, 提升开发体验
# 去除掉内置模板
由于内置模板有很多东西无法实现, 和脚手架的实现完全不一致, 因此当前版本决定去除 内置模板
# 2022-02-22
# TypeScript 支持
脚手架已经新增了 TypeScript 支持, 目前的类型还比较混乱, 会逐步优化, 另外把 uCode 的公共类型部分集成到了 SDK
具体可以直接引用 @ubtech/ucode-extension-common-sdk/types
路径
例如:
import { DeviceProtocolRegister, IDeviceProtocol, ProtocolConstructorArgumentType, ProtocolEventBus, UCode } from "@ubtech/ucode-extension-common-sdk/types";
# Mac 客户端
已经新增 Mac 客户端, 请在导航栏, uCode 下载里面点击查看
# 2022-02-21
# 增加烧录模式支持
支持以下几大特性:
- 支持在线模式和烧录模式下的积木块转换(烧录模式和在线模式共享一个工作区)
- 支持自定义语言 (内置了 Python 3.x 的转换器)
- 可以替换公共积木块的转代码(就是替换原有的积木)
- 转代码模块不需要依赖积木块
- 脚手架内置模板