archive/Arduino/Transfer.py

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