55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
import serial
|
|
port = serial.Serial('COM6', 9600)
|
|
valuesBeforeAveraging = 6
|
|
numberOfSensors = 3
|
|
splitValues = []
|
|
averageSetLength = 0
|
|
nan = ['nan','na']
|
|
|
|
def getNewValue():
|
|
newRead = port.readline()[:-2].lower()
|
|
if nan[0] in newRead or nan[1] in newRead:
|
|
print "FIFO Buffer Overflow"
|
|
getNewValue()
|
|
else:
|
|
return newRead
|
|
|
|
def getNewAverage(newValue):
|
|
global splitValues
|
|
global averageSetLength
|
|
average = 0.0000
|
|
outputLine = ""
|
|
|
|
splitValues.append([]) # Append new trial
|
|
|
|
if averageSetLength > valuesBeforeAveraging:
|
|
del splitValues[0]
|
|
|
|
averageSetLength = len(splitValues)
|
|
|
|
for yprNum, ypr in enumerate(newValue.split(":")): # For each sensor/YPR set
|
|
splitValues[averageSetLength - 1].append([]) # Append new array, compensate for array start 0
|
|
|
|
for valueNum, value in enumerate(ypr.split(",")): # For each value in YPR set
|
|
splitValues[averageSetLength - 1][yprNum].append(float(value)) # Append value to array
|
|
|
|
for entryNum in xrange(0, averageSetLength): #For all trials
|
|
average += splitValues[entryNum][yprNum][valueNum] # Add all x,y,z values
|
|
average = average / (averageSetLength) # Divide by number of trials
|
|
outputLine = outputLine + str(average)[:str(average).find('.') + 4] + ","
|
|
average = 0.0000
|
|
outputLine = outputLine[:-1] + ":"
|
|
outputLine = outputLine[:-1]
|
|
|
|
return outputLine
|
|
|
|
while 1:
|
|
try:
|
|
newRead = getNewValue()
|
|
final = getNewAverage(newRead)
|
|
print final
|
|
file = open('Transfer.txt','w')
|
|
file.write(final)
|
|
file.close()
|
|
except: IOError
|