所以我试图通过串口从arduino板读取数据。目前,我将它保存为最终图形的数据,希望接近实时。到目前为止,当我尝试读取超过150次时,我的执行速度变慢了。我不完全确定为什么。它似乎并不缺乏记忆,因为它几乎不使用任何记忆。串行连接几乎是即时的。 Python不是我最常用的语言,所以如果它是愚蠢的话我会道歉。
我的python代码如下。
import serial
import matplotlib as plt
import time
from time import sleep as zzz
import csv
ser = serial.Serial(2, 9600)
startTime = time.clock()
line = ser.readline()
dataInital = [float(val) for val in line.split()][0]
timeList = []*12000
dataList = []*12000
timeList.append(startTime)
dataList.append(dataInital)
with open('data.csv', 'w', newline='') as csvFile:
testFile = csv.writer(csvFile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
#testFile.writerow([dataInital, "%f" % (startTime)])
userInput = input("enter q to quit, r to read: ")
while userInput != 'q':
n = 1
if userInput == 'r':
n = int(input("How many seconds do you want to read? "))
for i in range(1, n):
ser.write(b'1')
line = ser.readline()
timeList.append(time.clock())
data = [float(val) for val in line.split()][0]
dataList.append(data)
print(data)
zzz(1)
userInput = input("enter q to quit, r to read: ")
finalTime = time.clock()
timeList.append(finalTime)
testFile.writerows(zip(dataList, timeList))
testFile.writerow(["No data",timeList[-1]])
print("%f:%f" % (startTime, finalTime))