【发布时间】:2020-12-26 14:11:43
【问题描述】:
我正在以 200 毫秒的采样率从传感器收集数据。我需要收集并取其信号强度的平均值,这可以从接收到的数据中检索到。目前我可以每分钟收集和保存数据。但是,我需要缩短时间,以便获得更多的实时平均值。 这是我的代码的样子。
count = 0
record = []
while (str(datetime.datetime.now().second)!="59"):
ser_bytes = ser.readline().decode('utf-8')[:-1].rstrip() # Read the newest output
if ser_bytes:
arr = ser_bytes.split(':')
i=0
db=[]
with open("test_data.csv","a") as f:
writer = csv.writer(f,delimiter=",")
writer.writerow([ser_bytes])
ser_bytes = ser.readline().decode('utf-8')[:-1].rstrip() # Read the newest output
if ser_bytes:
arr = ser_bytes.split(':')
i=0
db=[]
with open("test_data.csv","a") as f:
writer = csv.writer(f,delimiter=",")
writer.writerow([ser_bytes])
start_time = str(datetime.datetime.now().hour) + "_" + str(datetime.datetime.now().minute) + "_" + str(datetime.datetime.now().second)
with open(pi_dir1+r_ID+start_time+".csv","w") as correct:
writer = csv.writer(correct, dialect = 'excel')
with open('test_data.csv', 'r', encoding='utf-8') as mycsv:
reader = csv.reader((line.replace('\x00','') for line in mycsv))
try:
for i, row in enumerate(reader):
writer.writerow(row)
except csv.Error:
print(r_ID+' csv choked on line %s' % (i+1))
raise
os.remove("test_data.csv")
soc.sendall(str(r_ID).encode("utf8"))
time.sleep(5)
这是使用记录时间信息作为文件名保存的创建的 csv 数据中的内容(例如 12_12_59) Collected data
然后,我想将持续时间从 1 分钟缩短为 5 秒。首先,我尝试减少到 15 秒,但似乎无法实现 time.sleep(15)。因为当我这样做时,它只会捕获一行,而不是连续记录数据作为采样率。
ser_bytes = ser.readline().decode('utf-8')[:-1].rstrip() # Read the newest output
if ser_bytes:
arr = ser_bytes.split(':')
i=0
db=[]
with open("test_data.csv","a") as f:
writer = csv.writer(f,delimiter=",")
writer.writerow([ser_bytes])
start_time = str(datetime.datetime.now().hour) + "_" + str(datetime.datetime.now().minute) + "_" + str(datetime.datetime.now().second)
with open(pi_dir1+r_ID+start_time+".csv","w") as correct:
writer = csv.writer(correct, dialect = 'excel')
with open('test_data.csv', 'r', encoding='utf-8') as mycsv:
reader = csv.reader((line.replace('\x00','') for line in mycsv))
try:
for i, row in enumerate(reader):
writer.writerow(row)
except csv.Error:
print(r_ID+' csv choked on line %s' % (i+1))
raise
os.remove("test_data.csv")
soc.sendall(str(r_ID).encode("utf8"))
time.sleep(15)
这是我使用 time.sleep(15) 时出现的结果 captured data with time.sleep(15)
此外,为了处理程序,时间被延迟了,所以我的数据没有按我想要的确切持续时间记录。服务器接收到的创建文件如下所示:delayed process
请通过提出解决此问题的建议来帮助我。谢谢。
【问题讨论】:
-
我可以帮助您以最佳方式使用 time 和 schedule 模块设置计划的自动化任务,例如此示例 github.com/IT-Support-L2/…
标签: python pandas multithreading sensors