我不期待这里的代码,而是了解那里的人们的知识。
我有一个python代码 - 它使用pyserial与微控制器单元(MCU)进行串行通信。我的MCU是128字节RAM并具有内部存储器。我使用ser.write命令写入MCU,MCU响应数据 - 我使用ser.read命令读取它。
这里的问题是 - 它在上周工作得非常好。从昨天开始 - 我只能在当天早上进行串行通信。过了一会儿,当我读取数据时,MCU响应“#34; NONE"信息。我第二天读了数据,工作正常。奇怪的是 - 我安装了Hyperterminal并且它与MCU正确通信并读取数据。所以我希望以前有人遇到过这个问题。
我在我的python程序中使用线程 - 只是为了检查是否多次使用线程运行程序导致问题。据我所知,线程应该只影响我的PC内存,而不影响MCU。
我重启了我的电脑和MCU,我仍然有这个问题。
注意:Pycharm给了我在问题中提到的答案。如果我在IDLE中做同样的事情 - 它给了我完全不同的答案
答案 0 :(得分:3)
因此,最终您正在寻找有关如何调试此类时间依赖性问题的建议。 不知何故,状态正在你的计算机,python进程或影响事物的微控制器的某个地方被创建。 (从理论上讲,外部环境因素也可能影响事物。例如,如果你的微控制器有一个实时时钟,你实际上可能有一个时间依赖的bug。这似乎不太可能比其他可能性。)
首先,尝试重新启动你的python程序。如果这可以解决问题,那么你就知道在python或你的程序中创建了一个导致问题的状态。 使用此信息更新您的问题。
如果无法修复,请尝试重新启动计算机。如果这样可以解决问题,那么您强烈怀疑计算机中的某些状态会影响事物。
如果这些都不起作用,请尝试重新启动微控制器。如果重新启动PC和微控制器都无法解决问题,请在您的问题中加入,因为这是非常有趣的数据。
可以创建的状态示例:
流量控制。微控制器可以发送xoff,清除清除发送或以其他方式指示它不需要数据
另一个方向的流量控制:您的PC可能正在发送xoff,清除请求发送或以其他方式指示它不需要数据
您的程序会因为代码或pyserial中的错误而陷入混乱状态。
串口配置 - 串口设置可能搞砸了。
超级终端可以做各种事情来清除流量控制状态或重新配置串口。
如果重新启动python无法解决问题,则线程很可能不是您的问题。如果重新启动python修复问题线程可能是一个问题。