重新连接几次后,通过 USB 端口与 Python 的串行通信停止工作

Dr *_*ban 5 python usb serial-port arduino pyserial

我有一个简单的 Python 代码,它通过串行端口使用串行通信连接到 Arduino 板。

我正在使用 Python 库“pyserial”。它是Python2.7

我创建了一个连接,基本上是在做类似的事情

 ser = serial.Serial("/dev/ttyACM0", 115200)
Run Code Online (Sandbox Code Playgroud)

在此之后,我使用 serial.write 向我的 arduino 板发送命令。我有一个自制的固件,可以读取命令并移动一些电机。

此代码正在运行,目前正在运行。虽然我每天连接和断开几次连接和我的机器人做一些事情。我总是刷新所有东西(serial.flush)。在某些时候,它只是失败了。它似乎连接,但没有执行任何操作。就像在某个时候串行端口损坏了一样。

一旦我重新启动计算机,一切正常。

知道如何在不重新启动计算机的情况下修复它吗?

拔下 USB 电缆不起作用。

Use*_*ser 1

我遇到的一个问题是我没有关闭串行连接:

ser.close()
Run Code Online (Sandbox Code Playgroud)

这导致 python 进程没有关闭并阻止对串行连接的任何访问。pyserial 可能会阻止进程死亡,因为它在后台启动了一个线程。