我正在使用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写入代码并随时间延迟几秒钟后,我尝试关闭端口。sleep但没有起作用,程序仍然崩溃
如果我能告诉Python在读取第一个“analyze”实例后停止读取串行端口几秒钟,我认为它可以工作,但我真的不知道怎么做,我需要程序连续运行,因为它是一个传送带
我很感激你的帮助
目前没有回答
相关问题 更多 >
编程相关推荐