Я использую 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 отправляет две разные строки, когда он отправляет «анализ», python должен запустить алгоритм CV и вернутьцвет, который он обнаруживает, проблема в том, что Python много раз читает «анализ» и пытается выполнить алгоритм CV каждый раз, и в конечном итоге ему не удается захватить изображение, и программа сворачивается, поэтому ничего не выводится.Я попытался закрыть порт после записи из Python в Arduino и задержать на несколько секунд с time.sleep, но это не сработало, программа все равно вылетает.
Если бы я мог сказать Python прекратить чтение последовательного портав течение нескольких секунд после прочтения первого экземпляра «проанализировать», я думаю, что это может сработать, но я не знаю, как это сделать, и мне нужно, чтобы программа работала непрерывно, потому что это конвейерная лента.
Я ценю помощь.