0
我有一個使用串口與Arduino連接的python程序。我想實時繪製一些數據而不會減慢執行速度,所以我嘗試了多處理。然而,我得到了錯誤多處理串口WindowsError(5,'訪問被拒絕')
serial.serialutil.SerialException: could not open port 'COM6': WindowsError(5, 'Access is denied.') # COM6 is the port connected to Arduino
令人驚訝的是,在多處理功能未運行時,Arduino之間的連接仍然存在。我的代碼如下,
class ArduinoThread(threading.Thread):
def __init__(self, portnum):
threading.Thread.__init__(self)
self.setName("Arduino")
self.Arduino = serial.Serial(port="COM"+str(portnum), baudrate=19200)
def run(self):
# some function
def MyPlot_realtime(DATA):
while True:
data = DATA.get(False)
plt.plot(data)
UNO = ArduinoThread(6)
UNO.start()
plt.ion()
pltQ = multiprocessing.Queue()
pltP = multiprocessing.Process(target=MyPlot_realtime, args=(pltQ,))
pltP.start()
while True:
# some calculation on data
UNO.update(data)
if pltQ.empty():
pltQ.put(data)
簡單的評論多道處理部分的代碼可以很好地工作。多處理時彈出錯誤,但UNO.update(data)
仍在工作,而MyPlt_realtime
完全不工作。
(我的代碼是相當複雜的,所以我簡化它。我使用的另一個串口連接其他設備。我使用Tkinter的爲好。希望這些問題並非來自那些部分)