【问题标题】:Inconsistent serial fails不一致的序列失败
【发布时间】:2021-04-17 23:55:40
【问题描述】:

我正在尝试开发一个基于 python tkinter 的应用程序,该应用程序将从我的 arduino 传感器平台读取数据。

我收到不一致的错误,我无法理解为什么会发生这种情况。

首先,这是要怪的代码:

def readSerial():
   print("1")
   global after_id
   print("2")
   ser_bytes = ser.readline()
   print("3")
   ser_bytes = ser_bytes.decode("utf-8")
   print("4")
   text.insert("end", ser_bytes)
   print("5")
   after_id = root.after(50, readSerial)
  1. 有时这有效。数据出现在我的 tkinter 框架上,因为字符 1、2、3、4、5 在终端中不断向下滚动。这是最罕见的情况。

  1. 其他时候终端打印持续下降,但我的 tkinter 文本框架上没有出现任何内容。当我再次按下读取按钮时,终端中的数字停止打印,但序列中的文本出现在我的 tkinter 框架上。这怎么可能我无法理解。

  2. 有时终端打印持续下降,但我的 tkinter 文本框架上没有出现任何内容。如果我再次按下“开始阅读”按钮,程序将卡住,按钮将保持灰色,终端中的打印将停止。

  1. 其他时候我会因为某种原因冻结。让程序冻结,或停止按钮使其冻结。

我不仅不明白为什么除了 (1) 之外的行为 - 正常情况会发生,我不明白为什么会触发什么行为没有一致性。行为 2、3 或 4 何时会发生,为什么?是什么触发了每个特定行为?

有人能理解发生了什么吗?

【问题讨论】:

    标签: python-3.x serial-port pyserial


    【解决方案1】:

    我会问自己关于你的设置(我不知道电路是什么):

    1. 您是否使用独立于 Arduino 链接的测试数据测试了您的代码。
    2. 您是否检查过来自 Arduino 的数据的有效性。
    3. 您采取了哪些措施来避免数据输入中引入噪音。

    【讨论】:

    • arduino 工作正常。我可以从 arduino IDE 的串行接口很好地收集数据。
    • @user1584421 函数的第 7 行是:ser_bytes = sre_bytes.decode("utf-8"),不应该是:ser_bytes = ser_bytes.decode("utf-8")?
    • 谢谢,但是这个错误是我在这里输入代码时出现的,它在我的代码中不存在,所以这不是错误的根源。
    猜你喜欢
    • 2012-06-19
    • 2012-11-10
    • 2015-04-22
    • 2021-08-15
    • 2015-08-08
    • 2016-04-08
    • 2018-03-15
    • 2022-09-30
    相关资源
    最近更新 更多