Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 716 → Rev 717

/VibrationTest/branches/ParameterTest/VibrationTest/VibrationTestGui.py
14,6 → 14,7
import thread
import ConfigParser
import math
import copy
 
import wx
import wx.lib
28,7 → 29,7
CHANNEL_NAMES = ["GyroYaw", "GyroRoll", "GyroNick", "Pressure", "Batt", "AccTop", "AccRoll", "AccNick"]
MOTOR_MAX = 16
 
FS = 20
FS = 18.0
pi = 3.14
COLOR_YELLOW = wx.Colour(255, 240, 0)
COLOR_BACKGROUND = wx.Colour(0x80, 0x80, 0x80)
631,7 → 632,7
nb = vibTest.getDataLen()
 
if self.graphTypeChoice.GetSelection() == 0:
xydata = _Numeric.linspace(0,0.09*nb,2*nb)
xydata = _Numeric.linspace(0,(1/FS)*nb,2*nb)
xydata.shape = (nb, 2)
xydata[:,1] = vibTest.getRawData()
line = wx.lib.plot.PolyLine(xydata, legend= 'Raw Data', colour='red', width=2)
638,13 → 639,13
title = "Raw Signal: %s %s %d" %(vibTest.descr, vibTest.channel, vibTest.speed)
self.graphCtrl.setLogScale((False,False))
self.graphCtrl.Draw(wx.lib.plot.PlotGraphics([line], title, "Time (ms)", "Acc"), yAxis= (-y/2,y/2))
self.graphCtrl.Draw(wx.lib.plot.PlotGraphics([line], title, "Time (s)", "Angle"), yAxis= (-y/2,y/2))
self.graphCtrl.SetEnableGrid('Horizontal')
self.graphCtrl.SetEnableLegend(False)
if self.graphTypeChoice.GetSelection() == 1:
xydata = _Numeric.linspace(0,0.09*nb,2*nb)
xydata = _Numeric.linspace(0,(1/FS)*nb,2*nb)
xydata.shape = (nb, 2)
xydata[:,1] = vibTest.getFilteredData()
line = wx.lib.plot.PolyLine(xydata, legend= 'Raw Data', colour='red', width=2)
651,7 → 652,7
title = "Filtered Signal: %s %s %d" %(vibTest.descr, vibTest.channel, vibTest.speed)
self.graphCtrl.setLogScale((False,False))
self.graphCtrl.Draw(wx.lib.plot.PlotGraphics([line], title, "Time (ms)", "Acc"), yAxis= (-y/2,y/2))
self.graphCtrl.Draw(wx.lib.plot.PlotGraphics([line], title, "Time (s)", "Angle"), yAxis= (-y/2,y/2))
self.graphCtrl.SetEnableGrid('Horizontal')
self.graphCtrl.SetEnableLegend(False)
912,9 → 913,9
self._sendEvent("Opening SerialPort \"%s\"" % self.param.serialPort)
self.mk.open(comPort=self.param.serialPort)
print "Sending FC->NC forwarding",
self.mk.sendNCRedirectUartFromFC()
print "Done"
# print "Sending FC->NC forwarding",
# self.mk.sendNCRedirectUartFromFC()
# print "Done"
msg = self.mk.getVersionMsg()
version = msg.getVersion()
936,11 → 937,11
if self.param.minVoltage > 0:
minVoltage = self.param.minVoltage
else:
minVoltage = nbCells*3.5 # auto
minVoltage = nbCells*3 # auto
if self.param.maxVoltage > 0:
maxVoltage = self.param.maxVoltage
else:
maxVoltage = nbCells*3.9
maxVoltage = nbCells*4
self._sendEvent("Voltage: %2.1fV" % voltage)
self._sendEvent("Min/Max Voltage: %2.1fV-%2.1fV" % (minVoltage, maxVoltage), parVoltage=(minVoltage, maxVoltage, voltage))
947,23 → 948,47
 
msg = self.mk.getDebugMsg()
voltage = msg.getVoltage()
for I in self.param.speeds:
self._sendEvent("TestSettings I=%d" % I)
orgSetting = self.mk.getSettingsMsg()
testSettings = copy.deepcopy(orgSetting)
# testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_P, I)
# testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_I, 65)
testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_P, 0)
testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_I, I)
self.mk.sendSettings(testSettings.getSettings())
#time.sleep(3)
#data = self.mk.doVibrationTest(1000, channel)
messages = self.mk.recordDbgMsg(0.05, 20*5)
data = []
for msg in messages:
data.append(msg.getAngleRoll())
print data
## DISTURB
msg = MkProtocol.MkMsg(address=2, cmd='f', data=[7, 50])
self.mk.sendMsg(msg)
time.sleep(.1)
vt = VibTest(self.param.descr, voltage, self.param.motors, 0, "AngleRoll", data)
evt = MeasDataEvent(vibTest = vt)
wx.PostEvent(self.evtConsumer, evt)
#data = self.mk.doVibrationTest(1000, channel)
messages = self.mk.recordDbgMsg(0.05, 20*5)
data = []
for msg in messages:
data.append(msg.getAngleRoll())
print data
vt = VibTest(self.param.descr, voltage, self.param.motors, I, "AngleRoll", data)
evt = MeasDataEvent(vibTest = vt)
wx.PostEvent(self.evtConsumer, evt)
self._sendEvent("Original Settings")
self.mk.sendSettings(orgSetting.getSettings())
time.sleep(1)
if voltage<minVoltage:
raise Exception("Voltage too low")
self._sendEvent("Done !", parVoltage=(minVoltage, maxVoltage, voltage))
except Exception, e:
self._sendEvent("Exception \"%s\"" % e, error=True)
1038,7 → 1063,8
def getVibValue(self):
if self.vibValue == None:
fd = self.getFilteredData()[100:-100];
fd = self.getRawData()
#fd = self.getFilteredData()[100:-100];
if self.useRms:
print "RMS"
self.vibValue = math.sqrt(sum([x*x for x in fd])/len(fd))*2*math.sqrt(2)
1243,6 → 1269,6
rootPath = os.path.abspath(os.path.dirname(sys.argv[0]))
print rootPath
 
VibrationTestGui = App(0)
VibrationTestGui.MainLoop()