所以我正在嘗試制作一個(gè)程序來(lái)讀取我的 Arduino 的串口。這一切正常,但問(wèn)題是我無(wú)法在需要時(shí)阻止它。我的 arduino 不斷發(fā)送數(shù)據(jù)(沒(méi)關(guān)系)但我的腳本僅在 100 行讀數(shù)后停止(按照我的設(shè)置)。在這 100 個(gè)讀數(shù)之后,它會(huì)將列表保存到一個(gè) csv 文件中。我怎樣才能更早停止,例如在終端中輸入“停止”或“退出”并仍然保存我的數(shù)據(jù)?ctrl+c 只是停止我的腳本而不保存。我的代碼:import serialimport csvimport reimport pandas as pdimport timeportPath = "/dev/cu.usbmodem1411" baud = 9600 timeout = 5 # Secondsfilename = time.strftime("%Y%m%d") + "_shieldv1_water_data.csv"max_num_readings = 100def create_serial_obj(portPath, baud_rate, tout):return serial.Serial(portPath, baud_rate, timeout = tout)def read_serial_data(serial):serial.flushInput() # buffer flushserial_data = []readings_left = Truetimeout_reached = Falsewhile 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 = Falsereturn serial_datadef 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.")
添加回答
舉報(bào)
0/150
提交
取消