1. 文档中心
  2. 比卜创造 Micro:bit
  3. API 参考
  4. 数据记录

数据记录

log 模块可将数据写入保存在 micro:bit MICROBIT USB 盘中的 MY_DATA 文件。

数据以表格形式组织,可用浏览器打开查看与绘图(将 micro:bit 连接电脑后,在 MICROBIT 盘中找到日志文件)。

在 MICROBIT 盘中查看 MY_DATA
在 MICROBIT 盘中查看 MY_DATA
用浏览器打开日志并查看图表
用浏览器打开日志并查看图表

函数

set_labels(*labels, timestamp=log.SECONDS)

设置日志表头。

接受任意数量的位置参数,每个参数对应一列,例如 log.set_labels("X", "Y", "Z")。

理想情况下在写入任何数据前只调用一次,以固定表头。

若程序启动时日志已存在,或多次调用本函数,会与已有表头比对;若出现新列名,会追加一行新表头。

默认第一列为时间戳,可通过 timestamp 选择单位,例如 log.set_labels("temp", timestamp=log.MINUTES)。

参数

  • *labels:列名,每个位置参数对应表头一列。
  • timestamp:时间戳单位,可为 log.MILLISECONDS、log.SECONDS、log.MINUTES、log.HOURS、log.DAYS,或 None 禁用时间戳。默认 log.SECONDS。

set_mirroring(serial)

配置是否将日志行镜像到串口输出。默认关闭;开启后每写入一行都会打印到串口。

参数

  • serial:True 开启串口镜像。

delete(full=False)

删除日志内容(含表头)。之后需再次调用 set_labels() 才能恢复表头。

两种擦除模式:

  • full=True:从物理存储中完全擦除。
  • full=False(默认):快速失效数据,不物理清除。

参数

  • full:True 为完整擦除,False 为快速擦除。

add(data_dictionary, /, *, **kwargs)

向日志追加一行数据。

两种写法:

  1. 关键字参数,参数名即列名:log.add(X=compass.get_x(), Y=compass.get_y())
  2. 字典,键为列名:log.add({"X": compass.get_x(), "Y": compass.get_y()})

字典写法便于使用空格等特殊字符作为列名。

未在 set_labels() 或此前 add() 中出现的新列名会触发表头扩展;已有列名但本次未提供的列会在该行留空。

异常:日志已满时抛出 OSError,错误码 28(ENOSPC),表示设备无剩余空间。

示例

最小示例

每 5 秒记录一次温度:

from bibo import *
import log

log.set_labels("temp", timestamp=log.SECONDS)

@run_every(s=5)
def log_temp():
    log.add(temp=temperature())

while True:
    sleep(100)

完整 API 演示

from bibo import *
import log

log.set_labels("x", "y", "z")
log.set_mirroring(True)

while True:
    log.add(
        x=accelerometer.get_x(),
        y=accelerometer.get_y(),
        z=accelerometer.get_z(),
    )
    if button_a.was_pressed():
        log.delete()
        log.set_labels("x", "y", "z")
    sleep(1000)

在比卜创造 Python 编辑器中烧录运行,摇动 micro:bit 一段时间后连接电脑,在 MICROBIT 盘中查看 MY_DATA 文件。