Итак, я пытаюсь создать программу, которая считывает последовательный порт моего Arduino.Это все работает нормально, но проблема в том, что я не могу остановить это, когда хочу.Мой arduino продолжает посылать данные (что нормально), но мой скрипт останавливается только после 100 чтений строк (как я установил).После этих 100 чтений список сохраняется в CSV-файл.Как я могу остановиться раньше, например, после ввода «stop» или «exit» в терминале И все еще сохранять свои данные?Ctrl + C просто останавливает мой скрипт без сохранения.
Мой код:
import serial
import csv
import re
import pandas as pd
import time
portPath = "/dev/cu.usbmodem1411"
baud = 9600
timeout = 5 # Seconds
filename = time.strftime("%Y%m%d") + "_shieldv1_water_data.csv"
max_num_readings = 100
def create_serial_obj(portPath, baud_rate, tout):
return serial.Serial(portPath, baud_rate, timeout = tout)
def read_serial_data(serial):
serial.flushInput() # buffer flush
serial_data = []
readings_left = True
timeout_reached = False
while readings_left and not timeout_reached:
serial_line = serial.readline()
if serial_line == '':
timeout_reached = True
else:
serial_data.append(serial_line.decode('utf-8'))
if len(serial_data) == max_num_readings:
readings_left = False
return serial_data
def save_to_csv(data, filename):
with open(filename, 'w') as csvfile:
csvwrite = csv.writer(csvfile, delimiter = '\n')
csvwrite.writerow(data)
serial_obj = create_serial_obj(portPath, baud, timeout)
print("Reading serial data...")
serial_data = read_serial_data(serial_obj)
print("Saving to csv...")
save_to_csv(serial_data, filename)
print("Saved.")