- extension.onLoad
- extension.onUnload
- extension.onStopAll
- extension.onConnect
- extension.onDisconnect
- extension.beforeChangeUploadMode
- extension.afterChangeUploadMode
- extension.beforeChangeDebugMode
- extension.afterChangeUploadMode
- extension.onSelect
- extension.onUnselect
- extension.onRead
- extension.beforeCodeUpload
- extension.afterCodeUpload
extension.onLoad
功能: 当扩展加载。
注意: 此函数在加载卸载时可以触发多次,在单次加载扩展时,也可能因为支持多个目标(角色),而在每个角色上触发一次。
示例:
async onLoad(app, target)
{
// app.log为web ide调试窗口下打印的功能,同console.log,
// target.id 则为该扩展的唯一标志
app.log('I am loaded, get ID of '+ target.id);
}
extension.onUnload
功能: 当扩展卸载。
示例:
onUnload(app, target)
{
app.log("I am unloading, bye, yours "+ target.id);
}
extension.onStopAll
功能: 在慧编程软件内点击红色停止按钮或主动调用 stop all 积木块时,你可以用在此事件回调里处理设备停止。
示例:
onStopAll(app, device) {
app.log("stop running");
}
extension.onConnect
功能: 当设备连接上。
注意: device 的通信操作必须在此函数响应之后。你可以用device.isConnected 判断是否有连接。
示例:
onConnect(app, device) {
app.log("${device.id} is connected, you can send data to ${device.id}");
device.writeText("a text message");
}
extension.onDisconnect
功能: 当扩展断连。
注意: 此时已无法和设备进行通信。你可以用device.isConnected 判断是否有连接。
示例:
onDisconnect(app, device) {
app.log("${device.id} is not connected, you can not communicate to device any more");
}
extension.beforeChangeUploadMode
功能: 请求进入上传模式,在这里可以给设备发送数据,切换到上传模式。
注意: 需和 afterChangeUploadMode 联合使用,当返回 true 时,才会触发 afterChangeUploadMode。
示例:
async beforeChangeUploadMode(app, device) {
// 异步等待,参考javascript es6语法,
// 使用名为F3F4协议组一条协议
await device.asyncWriteProtocol('f3f4', [0x0d, 0x00, 0x03]);
// 在这里假设一定会成功
return true;
}
extension.afterChangeUploadMode
功能: 成功进入上传模式。
注意: 需和 beforeChangeUploadMode 联合使用,当 beforeChangeUploadMode 返回 true 时,才会导致触发。
示例:
afterChangeUploadMode(app, device) {
app.log("${device.id} switch to upload mode successfully");
}
extension.beforeChangeDebugMode
功能: 请求进入调试(在线模式),在这里可以给设备发送数据切换到调试(在线模式)。
注意: 需和 afterChangeUploadMode 联合使用,当返回 true 时,才会触发 afterChangeUploadMode。
示例:
async beforeChangeDebugMode(app, device) {
// 异步等待,参考javascript es6语法,
// 使用名为F3F4协议组一条切换模式协议
await device.asyncWriteProtocol('f3f4', [0x0d, 0x00, 0x00]);
// 在这里假设一定会成功
return true;
}
extension.afterChangeUploadMode
功能: 成功进入调试(在线模式)。
注意: 需和 beforeChangeDebugMode 联合使用,当 beforeChangeDebugMode 返回 true 时,才会导致触发。
示例:
afterChangeUploadMode(app, device) {
app.log("${device.id} switch to online mode successfully");
}
extension.onSelect
功能: 当角色/设备被选中,在多设备的一个项目里,点击切换角色(该角色/设备被编辑)时触发。
注意: 当设备主扩展加载时,onSelect 会接着触发。
示例:
onSelect(app, device) {
app.log("switch to ${device.id}");
}
extension.onUnselect
功能: 当角色/设备被选中,在多设备的一个项目里,点击切换角色(该角色/设备被编辑)时触发。
注意: 当切换角色时,onSelect/onUnselect 发生顺序为先 onUnselect, 再 onSelect。
示例:
onUnselect(app, device) {
app.log("from ${device.id} switch to other target");
}
extension.onRead
功能: 当收到设备数据时。
注意: 需要通过 device 拿到数据。
示例:
onRead(app, device) {
let anyText = device.readText(false);
app.log("text receive from ${device.id}: ${anyText}");
}
extension.beforeCodeUpload
功能: 上传模式下,准备上传代码。
注意: 此时还未将代码上传到设备。
示例:
// 以下代码实现了,在代码上传前取得并修改代码;
beforeCodeUpload(app, device) {
let {type, text} = device.getCode();
app.log("upload code of ${type}: ${text}");
return "# prepend before code\n" + text;
}
extension.afterCodeUpload
功能: 上传模式下,上传代码已完成。
注意: 此时已将代码上传到设备,即完成上传代码。
示例:
onUnselect(app, device) {
app.log("congratulations! you've uploaded code to ${device.id}");
}