为了账号安全,请及时绑定邮箱和手机立即绑定

如何停止键盘输入的串行读取

如何停止键盘输入的串行读取

慕哥6287543 2021-09-11 10:15:27
所以我正在尝试制作一个程序来读取我的 Arduino 的串口。这一切正常,但问题是我无法在需要时阻止它。我的 arduino 不断发送数据(没关系)但我的脚本仅在 100 行读数后停止(按照我的设置)。在这 100 个读数之后,它会将列表保存到一个 csv 文件中。我怎样才能更早停止,例如在终端中输入“停止”或“退出”并仍然保存我的数据?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.")
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号