私はマイクロコントローラと話すために使用しているPythonプログラムを持っています。私のCOMポートがビジーなのはなぜですか?
except:
print("\n Program Interrupted...")
finally:
print("\n Closing Serial Port\n")
serial_connection.close()
このすべてが正常に動作します:私は、キーボードinterputで、このようなプログラムを閉じるまで、データの送受信、
def STM32_connect():
ports = list(serial.tools.list_ports.comports())
for p in ports:
if "STM32" in p.description:
connection = serial.Serial(p.device, timeout = .01)
return(connection)
print("ERROR: No STM32 Device Found")
sys.exit()
serial_connection = STM32_connect()
をそして、物事の束を行います。それはこのようにCOMポートを開きます。私の問題は、PythonスクリプトがUSBケーブルを切断するか、ボードの電源を切って、私がもうCOMポートのマイクロに接続できなくなって、誤って殺されたときです。
Traceback (most recent call last):
File "/home/---/.local/lib/python3.5/site-packages/serial/serialposix.py", line 265, in open
self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
OSError: [Errno 16] Device or resource busy: '/dev/ttyACM2'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "flextester.py", line 1, in <module>
from flex_usb_class import *
File "/home/---/Code/RobotFlexTester/flex_usb_class.py", line 30, in <module>
serial_connection = STM32_connect()
File "/home/---/Code/RobotFlexTester/flex_usb_class.py", line 25, in STM32_connect
connection = serial.Serial(p.device, timeout = .01)
File "/home/---/.local/lib/python3.5/site-packages/serial/serialutil.py", line 240, in __init__
self.open()
File "/home/janey/.local/lib/python3.5/site-packages/serial/serialposix.py", line 268, in open
raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 16] could not open port /dev/ttyACM2: [Errno 16] Device or resource busy: '/dev/ttyACM2'
私はCOMポートを変更できますが、別のttyACMポートでも同じエラーが発生します。しかし、私は別のpythonスクリプトを実行しようとすると、同じポート上の同じデバイスに接続することができます。問題は何らかの形で初期テストスクリプトにロックされているようですが、ps -a
はまだ実行中であることを示していません。 30秒後〜1分後に何もせずに問題が解消します。