# 更新日志

# USV 0.8.0 (2022-10-31)

USV 0.8.0 主要在烧录模式下新增了 Arduino 语言的支持

# 新增功能

  1. 新增 烧录模式 Arduino 支持
  2. 新增 内置串口协议, 新增了两个方法 disconnectNoEmit()connectNoEmit() 解决 Arduino 编译烧录的时候, 触发连接断开的问题

# 修复

  1. 修复 工具类 Cast 新增了 toNumberOrString 适合于转代码的函数

# USV 0.7.0 (2022-09-15)

# 破坏性更新

  1. 由于 USV 0.7.0 更新了连接交互, 只有一个设备的时候自动连接的选项(autoConnect 以下代码第6行)已经去除, 并且新增一个 skipDuplicate (参照代码14行)是否要过滤已经连接过的设备, 默认开启





 







 


/**
 * 扫描 设备类型
 */
export type DiscoverDeviceType = CommonDeviceType & {
  readonly connectType: 'discover';
  // autoConnect?: boolean; 
  /**
   * 扫描超时时间, 到达时间自动停止
   */
  scanTime?: number;
  /**
   * 是否要过滤已经连接过的设备, device.id 作为唯一标识, 默认过滤
   */
  skipDuplicate?: boolean;
};

# 新增功能

  1. 新增 连接前环境监测
  2. 新增 连接提示
  3. 新增 连接错误统一提示

# USV 0.6.0 (2022-07-19)

# 新增功能

  1. 新增 国际化支持
  2. 新增 Developer-Kit 封装了配置文件 tsconfig.json 以及 .eslintrc.js, 以后更新配置, 只要更新 Developer-kit 即可

扩展 tsconfig 以及 eslintrc

可以参考以下配置, 或者参考最新的脚手架:

  1. 优化 Beta 测试版本的支持, 在使用 Beta 版本的脚手架的时候, 默认安装的是 Beta 版本的 NPM 仓库
npx @ubtech/create-ucode-extension@beta

# USV 0.5.0 (2022-06-17)

# 新增功能

  1. 新增 初始workspace积木配置

# 修复

  1. 修复函数积木块无法正常转代码的问题
  2. 修复windows下脚手架异常的问题

# USV 0.4.0 (2022-06-09)

# 重要更新

  1. 更改 插件结构, 插件现在统一设计为: 后缀名为 .ucdext 一种 zip 压缩格式 插件目录结构
  2. 更改 更新了全新的插件安装界面以及流程, 具体的细节请参照 导入插件

# 破坏性更新

  1. 更改 积木块中数字字符串值的输入限制配置参数用 options 包装。
  • 旧的写法:
// 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】的限制。
      }
    },
  },
},
  1. 更改 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 = {}

# 新增功能

  1. 新增 自定义 UI *beta
  2. 新增 硬件设置菜单
  3. 新增 积木块定义, 新增参数 onlySupportUploadMode, 控制该积木块只在烧录模式下可用
  4. 新增 标准 micropython 设备repl 模式数据解释器工具
  5. 新增 积木控件普通点阵增加行、列配置参数
  6. 新增 积木控件自定义点阵

# 优化

  1. 优化 统一错误码以及错误提示, 以及自定义错误
  2. 优化 新增了 UCode 调试服务
  3. 优化 脚手架增加了 Manifest 的校验
  4. 优化 脚手架, 更改了目录结构, 新建了 .dev 目录, 参照 脚手架目录结构

# 修复

  1. 修复 烧录模式转代码, 全局变量, 没有初始化值的问题
  2. 修复 烧录模式转代码, 变量是中文的时候(非合法变量), 没有做处理
  3. 修复 烧录模式转代码, python 代码转换, 控制积木块, if-else, else 的缩进不正确
  4. 修复 在客户端调试模式中已连接硬件,并启动了修改代码自动刷新页面功能,刷新后无法再次搜索硬件的问题

# USV 0.3.0 (2022-04-12)

# 迭代更新

  1. 新增 支持 积木块 多个积木盒子 (多个积木块分类) (把 getInfo 返回一个数组即可, 兼容原来的版本)
  2. 新增 支持 UDP/TCP 协议
  3. 新增 支持 积木块中数字字符串值的输入限制能力
  4. 优化 整个插件加载方式, 从 Worker 修改为 iFrame Sandbox, 将会支持更新的特性
  5. 优化 脚手架框架, 修复了很多 以前 Yeoman 框架的问题

# 破坏性更新

USV 0.3.0 开始:

  1. 插件 manifest.json 必须指定 USV 的版本号, 该版本号用于 uCode 作为, 该插件的版本更新兼容判断, 详细可以参考 USV 版本号
  2. 为了保证 SDK 和 uCode 的一致性, 从这个版本开始, 插件不需要再打包 SDK, uCode 内部集成了 SDK, 需要更新 webpack 配置
  3. 最新 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

  1. 新增“项目实践”内容,提供从 0 到 1 指导开发 ESP32 设备项目描述
  2. 新增“内置硬件协议”内容,提供数据发送和接受的描述及示例代码
  3. 新增积木“参数控件(Field)类型 使用示例

# 2022-03-18

# 更新脚手架

优化了脚手架的选项, 合并了两类选项 硬件特性(串口协议, 蓝牙协议, 烧录模式)

  1. 硬件特性:
❯ 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
 ◯ 烧录模式
  1. 开发功能:
? 要支持的开发功能 (Press <space> to select, <a> to toggle all, <i> to invert selection,
 and <enter> to proceed)
❯◯ 使用 TypeScript
 ◯ 使用 ESLint

# 新增了脚手架的, 协议案例的说明

  1. 增加协议案例说明, 内置硬件协议
  2. 优化 试用插件, 增加 websocket 以及积木块的试用

# 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

# 增加烧录模式支持

支持以下几大特性:

  1. 支持在线模式和烧录模式下的积木块转换(烧录模式和在线模式共享一个工作区)
  2. 支持自定义语言 (内置了 Python 3.x 的转换器)
  3. 可以替换公共积木块的转代码(就是替换原有的积木)
  4. 转代码模块不需要依赖积木块
  5. 脚手架内置模板