使用 micropython 初始化 UART 总线时出现错误 "missing 1 requires positional arguments"
Using micropython to initialize a UART bus, and I'm getting an error "missing 1 requires positional arguments"
我有以下代码,我正在尝试 运行 在 ESP-WROOM-32 上:
from machine import UART
def do_uart_things():
uart = UART.init(baudrate=9600, bits=8, parity=None, stop=1, rx=34,tx=35)
do_uart_things()
我正在尝试根据文档初始化 uart 总线:https://docs.micropython.org/en/latest/library/machine.UART.html。文档建议只需要波特率、位、奇偶校验和停止,但是我收到“需要 1 个额外的位置参数”错误。我不明白为什么会出现此错误。
我还假设 rx 和 tx 参数会根据 UART class 的需要自动转换为正确的引脚类型,而不是我必须手动管理它。
我已经设法让稍微类似的代码工作:
from machine import UART
def do_uart_things():
uart = UART(1,9600)
uart.init(baudrate=9600, bits=8, parity=None, stop=1, rx=34,tx=35)
#Pin numbers taken from ESP data sheet--they might not be correctly formatted
do_uart_things()
这让我认为文档无意中产生了误导,主要示例并不是要“以这种方式或这种方式初始化它”,而是要求两者都完成。
我认为后一个代码示例是使用 micropython UART 功能的正确方法是否正确?我也愿意接受任何关于 UART 和 I2C 在 micropython 中使用的好例子的推荐,因为我发现文档有点不好意思...
“可以使用以下方式创建和初始化 UART 对象:...”可能有点误导。他们意味着对象只能使用构造函数创建,但是它可以使用构造函数初始化,或者稍后在创建对象之后使用init
方法就可以了。
如您所见,class 构造函数需要第一个参数 id
,而方法 init()
则不需要。所以你可以使用构造函数
uart = UART(1,baudrate=9600, bits=8, parity=None, stop=1, rx=34,tx=35)
但是你不能使用 UART.init()
因为这不是一个构造函数而是一个方法,所以它需要对一个实例进行操作,而不是 class.
我有以下代码,我正在尝试 运行 在 ESP-WROOM-32 上:
from machine import UART
def do_uart_things():
uart = UART.init(baudrate=9600, bits=8, parity=None, stop=1, rx=34,tx=35)
do_uart_things()
我正在尝试根据文档初始化 uart 总线:https://docs.micropython.org/en/latest/library/machine.UART.html。文档建议只需要波特率、位、奇偶校验和停止,但是我收到“需要 1 个额外的位置参数”错误。我不明白为什么会出现此错误。
我还假设 rx 和 tx 参数会根据 UART class 的需要自动转换为正确的引脚类型,而不是我必须手动管理它。
我已经设法让稍微类似的代码工作:
from machine import UART
def do_uart_things():
uart = UART(1,9600)
uart.init(baudrate=9600, bits=8, parity=None, stop=1, rx=34,tx=35)
#Pin numbers taken from ESP data sheet--they might not be correctly formatted
do_uart_things()
这让我认为文档无意中产生了误导,主要示例并不是要“以这种方式或这种方式初始化它”,而是要求两者都完成。
我认为后一个代码示例是使用 micropython UART 功能的正确方法是否正确?我也愿意接受任何关于 UART 和 I2C 在 micropython 中使用的好例子的推荐,因为我发现文档有点不好意思...
“可以使用以下方式创建和初始化 UART 对象:...”可能有点误导。他们意味着对象只能使用构造函数创建,但是它可以使用构造函数初始化,或者稍后在创建对象之后使用init
方法就可以了。
如您所见,class 构造函数需要第一个参数 id
,而方法 init()
则不需要。所以你可以使用构造函数
uart = UART(1,baudrate=9600, bits=8, parity=None, stop=1, rx=34,tx=35)
但是你不能使用 UART.init()
因为这不是一个构造函数而是一个方法,所以它需要对一个实例进行操作,而不是 class.