如何使用 Python 写入 Python 控制台

How to write to a Python console using Python

有一个运行 uPython (Micropython) 的设备通过串行连接连接到我的计算机。当我在 COM19 上打开控制台时,例如使用 Moba XTerm 我可以执行 uPython 命令,例如2+3:

关键是,我想执行脚本而不是在控制台中开发它们 "live"。所以我想我写了一个 Python 自动写入串行控制台的脚本:

import serial
import time

# config
baud = 115200
port = "COM19"
TOUT = 1


def main():
    ser = serial.Serial(port, baud, timeout=TOUT)
    time.sleep(2)

    # Read a few lines to "read away" the header if existing
    ser.readline()
    ser.readline()
    ser.readline()

    # the problem is here I guess - the newline character does not trigger
    # the execution of the command - how can I encode the "Enter" keypress? 
    ser.write(str.encode("2+3\n"))
    time.sleep(2)

    # I would expect it to read "5"
    output_line = ser.readline()
    print(output_line.decode('utf8'))

    ser.close()


if __name__ == "__main__":
    main()

我认为问题在于换行符不会触发与终端中的回车键相同的行为(请参阅代码中的注释)。问题是,我怎样才能"activate"这个命令呢?

我认为 Enter 会发送换行符 (CR + LF)。因此,您必须在消息末尾发送 \n\r

如果您想要一种单击方法将 Python 脚本从您的 PC 上传到您的 Micropython 设备并 运行 它在那里,有具有此功能的 IDE 和其他工具 - 对于示例 Thonny, uPyCraft and others discussed on this forum thread.

我不知道这些中的哪一个会或不会在你的特定板上工作,但 Micropython 论坛将是最好的询问地点。