【问题标题】:NodeMCU (ESP8266) unresponsive when using endless loop (while True)使用无限循环时NodeMCU(ESP8266)无响应(当真)
【发布时间】:2021-09-05 19:13:30
【问题描述】:

当我在 main.py 中包含 while True: 时,我无法再覆盖它并上传新版本。

许多初学者指南和教程,例如:this onethis one,使用while True。所以我想这应该是可能的。

我曾尝试使用Thonnyampy 在开发板运行无限循环时上传(覆盖)main.py。

我当前的解决方法是使用 picocom 连接到 REPL,并使用 os.remove 删除文件。

Micropython 版本:esp8266-20210618-v1.16

注意。我知道计时器可以减少对无限循环的需求。

【问题讨论】:

  • 如果您在 while 开始之前不连接,它将阻塞并且您无法连接。您可以在 while 循环之前放置一个短暂的睡眠,或者只是不使用 main.py。我的工作在不断发展中,并且总是与计算机联系在一起,所以我只是不使用 main。相反,我有一个自定义 shell 脚本,它在脚本上传后启动 REPL,它会注入一个 import 行来启动我的其他命名的主文件。

标签: nodemcu micropython thonny


【解决方案1】:

看看你链接到的第一个例子,它 在引入while true 循环后准确描述了您当前的情况:

您可能会担心看到 >>> REPL 提示再也不会出现并且您无法输入代码。请记住,这是因为 MicroPython 一次只能做一件事,而无限循环意味着开发板正忙于闪烁 LED。

幸运的是,您可以告诉开发板停止它正在执行的任何操作并返回到 REPL 提示符。按键盘上的 Ctrl-c 键,您应该会看到代码停止并出现 KeyboardInterrupt 错误,如下所示:

当你有一个无限循环运行时,没有其他东西可以运行。 如果您希望能够与之交互,则需要退出循环 REPL(例如,这正是 ampy 所做的)。

【讨论】:

  • 感谢您的回答。我使用 Thonny 让它工作,实际上是在它运行 while 循环时按 ctrl+c。然后显示 REPL,之后我可以再次读取和写入文件(在 Thonny 内)。使用ampy 在while 循环中我仍然无法将其“放入”。然后它正在等待,当我按 ctrl+c 时,它正在取消“放置”cmd。
猜你喜欢
  • 2021-06-03
  • 2015-09-27
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
相关资源
最近更新 更多