# 工具 API

这里封装了一些常用的工具 API

# API 文档

工具类 API 文档

# Cast 类型转换

该方法沿用 Scratch-VM (opens new window) 主要用于积木块的数值的类型转换

import { CommonUtility } from "@ubtech/ucode-extension-common-sdk";

const { Cast } = CommonUtility;

Cast.toString(1); // return '1'

Cast.toNumber("1"); // return 1

Cast.toRgbColorList("#FFF000"); // return [255, 240, 0]

详细的可以参照 Cast

# Repl 模式数据解释器

该功能主要对 micropython 通用 repl 模式快捷键操作、ready 状态查询、设置 ready 状态和错误信息输出的方法封装。

import { CommonUtility } from "@ubtech/ucode-extension-common-sdk";

const { Repl } = CommonUtility;
const { ReplModelHandler, replModel } = Repl;

// ---- 初始化handler ----
const device = self.UCode.extensions.getDevice(util.targetId); // 协议对象
let replModelHandler = new ReplModelHandler(device.sendMsg); // 初始化实例且设置发送方法
device.onData((data) => replModelHandler.onData(data)); // 设置响应监听

// ---- 可用的方法 ----
// 进入REPL某个模式,如发送Ctr-C: interrupt a running program
replModelHandler.enterReplMode(replModel.CANCEL);

// 查询ready状态 return Promise<boolean>
replModelHandler.isReady();

// 设置ready状态, return Promise<boolean>
replModelHandler.setReady();

// respData设备回应数据,抛出错误信息
replModelHandler.handleReplError(respData);

typescript:

// 引入模块
import { CommonUtility } from "@ubtech/ucode-extension-common-sdk";
// 引入类型
import type { CommonUtility as CommonUtilityTypes } from "@ubtech/ucode-extension-common-sdk";

// 解构 repl 处理模块
const { ReplModelHandler } = CommonUtility.Repl;

// 获取当前用于通信的对象
const device = self.UCode.extensions.getDevice(util.targetId);

// 声明 repl handler 变量
let replModelHandler: CommonUtilityTypes.Repl.ReplModelHandler;

// 实例化 repl handler  变量
replModelHandler = new ReplModelHandler(device.sendMsg.bind(device));
device.onData((data) => replModelHandler.onData(data)); // 设置响应监听

Repl commands:

快捷键 replModel 用途
CTRL-A replModel.NO_DISPLAY 进入 raw REPL 模式
CTRL-B replModel.DISPLAY 进入 normal REPL 模式
CTRL-C replModel.CANCEL 中断运行中的程序
CTRL-D replModel.RESTART 软重启
CTRL-E replModel.PASTE 进入代码片段粘贴模式。
Enter replModel.ENTER 按回车进入下一个空白行

CTRL-E 需要配合其他快捷键如:CTRL-C 取消粘贴,CTRL-D 执行已粘贴的程序