extension.onLoad

功能: 当扩展加载。
注意: 此函数在加载卸载时可以触发多次,在单次加载扩展时,也可能因为支持多个目标(角色),而在每个角色上触发一次。

示例:

  1. async onLoad(app, target)
  2. {
  3. // app.logweb ide调试窗口下打印的功能,同console.log,
  4. // target.id 则为该扩展的唯一标志
  5. app.log('I am loaded, get ID of '+ target.id);
  6. }

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}");
}