我正在使用Arduino将数据发送到Python,然后启动使用OpenCV制作的计算机视觉算法,在计算机视觉算法完成后,我需要将输出发送回Arduino以执行分类技术。 这是我正在使用的与串行通信有关的代码的一部分:
while True:
try:
data = arduino_serial.readline()[:-2].decode()
print(data)
if (data == 'analyze'):
blockcolor= ColorAnalysis()
if(blockcolor== 'red'):
arduino_serial.write(b'0')
print(ColorAnalysis())
serial.Serial('COM3', 9600).close()
else:
arduino_serial.write(b'1')
print(ColorAnalysis())
serial.Serial('COM3', 9600).close()
elif(data == 'continue'):
arduino_serial.write(b'1')
print(data)
except:
print("Something went wrong...")
好吧,基本上,arduino发送两个不同的字符串,当它发送“ analyze”时,python必须运行CV算法并返回它检测到的颜色,问题是Python多次读取“ analyze”并尝试执行每次使用CV算法,最终都无法捕获图像,并且程序崩溃,因此它不输出任何内容。从Python写到Arduino之后,我尝试关闭端口,并随着time.sleep延迟了几秒钟,但是它不起作用,程序仍然崩溃。
如果我可以让Python在读取第一个“分析”实例后停止读取串行端口几秒钟,我认为它可以工作,但是我真的不知道该怎么做,因此我需要该程序连续运行,因为它是传送带。
感谢您的帮助。