# 终端调试工具

# 1. 介绍

一直以来终端工具都是开发者的必备工具,在开发调试中发挥着重要的作用。特别是 Python 提供了交互式的终端,可以在终端中直接执行 Python 代码,这对于调试代码非常有帮助。同样 MicroPython 也行提供了交互式的终端,可以在终端中直接执行 MicroPython 代码。

提示

鹿戴马终端调试工具进行技术上的突破,把终端工具以前只能下载到本地使用改为在线使用,这样就可以在任何地方使用终端工具了。

鹿戴马终端调试工具

# 2. 使用

# 2.1 连接设备

在使用终端调试工具之前,需要先将设备连接到电脑上,连接设备的方式有很多种,这里以 ESP32 开发板为例,介绍两种连接方式。

# 2.1.1 通过 USB 连接(推荐)

将 ESP32 开发板通过 USB 线连接到电脑上,如下图所示:

USB 连接

# 2.1.2 通过WebREPL连接(暂不支持)

WebREPL是实验的功能(本工具目前还不支持)。 通过执行以下命令进行配置:

import webrepl_setup

按照屏幕的提示操作。重启后,允许使用WebREPL。如果你禁用了开机自动启动WebREPL, 可以通过以下命令使用:

import webrepl
webrepl.start()

# 也可在在开始时候设置一个密码
webrepl.start(password='mypass')

这个 WebREPL 通过连接到ESP32的AP使用,如果你的路由器配网络配置正确,这个功能也可以通过STA方式使用,那意味着你可以同时上网和调试ESP32。(如果遇到不可行的特殊情况, 请先使用ESP32 AP方式)。

除了终端/命令符的访问方式, WebREPL同时允许传输文件 (包含上传和下载)。Web客户端有相应的功能按钮,也可以通过 webrepl_cli.py 模块上存储的命令行进行操作。

# 2.2 打开终端页面

在顶部工具栏中点击“连接”按钮,即可连接设备,如下图所示:

连接设备

选择支持的设备点击连接

选择设备

连接成功后,会在终端窗口中显示设备正在运行的代码,如下图:

连接成功

# 2.3 执行代码

当设备连接成功后,终端窗口显示: >>>,这时就可以在终端中执行 MicroPython 代码了。比如直接输入 1+1(按回车),如下图所示:

执行代码

直接打印出运算结果 2。这只是小试牛刀,接下来你可以研究更有意思的代码。

# MicroPython 终端命令

MicroPython 终端命令是 MicroPython 提供的一些命令,可以在终端中直接执行,这些命令可以帮助开发者更好的使用 MicroPython。

# 1. 帮助命令

MicroPython 提供了 help() 命令,可以查看 MicroPython 的帮助文档,如下图所示:

>>> help()
Welcome to MicroPython on the ESP32!

For online docs please visit http://docs.micropython.org/

For access to the hardware use the 'machine' module:

import machine
pin12 = machine.Pin(12, machine.Pin.OUT)
pin12.value(1)
pin13 = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL_UP)
print(pin13.value())
i2c = machine.I2C(scl=machine.Pin(21), sda=machine.Pin(22))
i2c.scan()
i2c.writeto(addr, b'1234')
i2c.readfrom(addr, 4)

Basic WiFi configuration:

import network
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.scan()                             # Scan for available access points
sta_if.connect("<AP_name>", "<password>") # Connect to an AP
sta_if.isconnected()                      # Check for successful connection

Control commands:
  CTRL-A        -- on a blank line, enter raw REPL mode
  CTRL-B        -- on a blank line, enter normal REPL mode
  CTRL-C        -- interrupt a running program
  CTRL-D        -- on a blank line, do a soft reset of the board
  CTRL-E        -- on a blank line, enter paste mode

For further help on a specific object, type help(obj)
For a list of available modules, type help('modules')
>>>

中文翻译如下:

欢迎使用 ESP32 上的 MicroPython!

在线文档请访问 http://docs.micropython.org/

要访问硬件,请使用“machine”模块:

import machine
pin12 = machine.Pin(12, machine.Pin.OUT)
pin12.value(1)
pin13 = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL_UP)
print(pin13.value())
i2c = machine.I2C(scl=machine.Pin(21), sda=machine.Pin(22))
i2c.scan()
i2c.writeto(addr, b'1234')
i2c.readfrom(addr, 4)

基本的 WiFi 配置:

import network
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.scan()                             # 扫描可用的接入点
sta_if.connect("<AP_name>", "<password>") # 连接到一个接入点
sta_if.isconnected()                      # 检查是否成功连接

控制命令:
  CTRL-A        -- 在空白行上,进入原始 REPL 模式
  CTRL-B        -- 在空白行上,进入正常的 REPL 模式
  CTRL-C        -- 中断正在运行的程序
  CTRL-D        -- 在空白行上,对板进行软复位
  CTRL-E        -- 在空白行上,进入粘贴模式

要获取有关特定对象的更多帮助,请键入 help(obj)
要获取可用模块的列表,请键入 help('modules')