Pyserial - 嵌入式系统

时间:2016-08-30 19:42:18

标签: python multithreading embedded pyserial

我不期待这里的代码,而是了解那里的人们的知识。

我有一个python代码 - 它使用pyserial与微控制器单元(MCU)进行串行通信。我的MCU是128字节RAM并具有内部存储器。我使用ser.write命令写入MCU,MCU响应数据 - 我使用ser.read命令读取它。

这里的问题是 - 它在上周工作得非常好。从昨天开始 - 我只能在当天早上进行串行通信。过了一会儿,当我读取数据时,MCU响应“#34; NONE"信息。我第二天读了数据,工作正常。奇怪的是 - 我安装了Hyperterminal并且它与MCU正确通信并读取数据。所以我希望以前有人遇到过这个问题。

我在我的python程序中使用线程 - 只是为了检查是否多次使用线程运行程序导致问题。据我所知,线程应该只影响我的PC内存,而不影响MCU。

我重启了我的电脑和MCU,我仍然有这个问题。

注意:Pycharm给了我在问题中提到的答案。如果我在IDLE中做同样的事情 - 它给了我完全不同的答案

1 个答案:

答案 0 :(得分:3)

因此,最终您正在寻找有关如何调试此类时间依赖性问题的建议。 不知何故,状态正在你的计算机,python进程或影响事物的微控制器的某个地方被创建。 (从理论上讲,外部环境因素也可能影响事物。例如,如果你的微控制器有一个实时时钟,你实际上可能有一个时间依赖的bug。这似乎不太可能比其他可能性。)

首先,尝试重新启动你的python程序。如果这可以解决问题,那么你就知道在python或你的程序中创建了一个导致问题的状态。 使用此信息更新您的问题。

如果无法修复,请尝试重新启动计算机。如果这样可以解决问题,那么您强烈怀疑计算机中的某些状态会影响事物。

如果这些都不起作用,请尝试重新启动微控制器。如果重新启动PC和微控制器都无法解决问题,请在您的问题中加入,因为这是非常有趣的数据。

可以创建的状态示例:

  • 流量控制。微控制器可以发送xoff,清除清除发送或以其他方式指示它不需要数据

  • 另一个方向的流量控制:您的PC可能正在发送xoff,清除请求发送或以其他方式指示它不需要数据

  • 您的程序会因为代码或pyserial中的错误而陷入混乱状态。

  • 串口配置 - 串口设置可能搞砸了。

超级终端可以做各种事情来清除流量控制状态或重新配置串口。

如果重新启动python无法解决问题,则线程很可能不是您的问题。如果重新启动python修复问题线程可能是一个问题。