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() |