在获取数据之前清除串行缓冲区



我在python中创建了一个简短的脚本,它从Arduino读取传入的串行数据并将其写入CSV文件。我在Arduino程序中创建了标题(数据标签(,这些标题作为第一个字符串值传递,并作为列标题分配。然而,由于某种原因,数据头前面有一小部分数据,我认为这些数据是USB串行缓冲区中的旧数据。有没有什么我可以告诉python等待,直到旧数据被清除,Arduino已经重置了串行连接?

代码如下所示,如有任何帮助,将不胜感激。

问题快照

import serial
from datetime import datetime
import time
import pandas as pd
import random
a = input("Enter a:")
b = input("Enter b:")
c = input("Enter c:")
d = input("Enter d:")
fileName= a + "-" + b + "-" + c + "-" + d + ".csv" #name of the CSV file generated
arduino_port = "COM7"
baud = 115200
print_labels = False
file = open(fileName, "w", newline="")
print("Created file")
ser = serial.Serial(arduino_port, baud)
print("Connected to Arduino port:" + arduino_port)
line = 0 #start at 0 because our header is 0 (not real data)
while True:

getData = (ser.readline().decode())
data=getData[0:][:-1]
now = datetime.now()
dt_string = now.strftime("%d/%m/%Y %H:%M:%S")
time.sleep(1)
if data

if line == 0:
print(data)
file = open(fileName, "a", newline="")
file.write(data + "n") #write data with a newline
line = line+1
else:
print(data + "," + dt_string)
file = open(fileName, "a", newline="")
file.write(data + "," + dt_string + "n") #write data with a newline
line = line+1
print("Data collection complete!")
file.close()
  1. 如果新进程染红了这些数据,也许旧进程没有。这是前一个程序中的问题,该程序应确保在关闭连接之前接收到所有数据(通过等待EOFError或"\0"(
  2. 在一个新的过程中,我会跳过这些行,直到发现一些独特的标记(例如,从"\n"开始流式传输csv(并将流式传输内容中的所有"\n"引用为"\n"(

最新更新