Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 618 → Rev 619

/VibrationTest/trunk/VibrationTest/VibrationTestGui.py
330,10 → 330,11
 
# Configure TestListCtrl
self.TestListCtrl.InsertColumn(0, "Description")
self.TestListCtrl.InsertColumn(1, "Speed")
self.TestListCtrl.InsertColumn(2, "Channel")
self.TestListCtrl.InsertColumn(3, "Vibration Value")
self.TestListCtrl.SetColumnWidth(3, 500)
self.TestListCtrl.InsertColumn(1, "Voltage")
self.TestListCtrl.InsertColumn(2, "Speed")
self.TestListCtrl.InsertColumn(3, "Channel")
self.TestListCtrl.InsertColumn(4, "Vibration Value")
self.TestListCtrl.SetColumnWidth(4, 500)
 
def DrawPointLabel(self, dc, mDataDict):
"""This is the fuction that defines how the pointLabels are plotted
362,12 → 363,13
 
def onNewTest(self, test):
index = self.TestListCtrl.InsertStringItem(sys.maxint, test.descr)
self.TestListCtrl.SetStringItem(index, 1, str(test.speed))
self.TestListCtrl.SetStringItem(index, 2, test.channel)
self.TestListCtrl.SetStringItem(index, 1, "%.1f V" %test.voltage)
self.TestListCtrl.SetStringItem(index, 2, str(test.speed))
self.TestListCtrl.SetStringItem(index, 3, test.channel)
 
vv = int(test.getVibValue(self.app.settings["hpf"].value, self.app.settings["lpf"].value))
vvs = "|%s| (%d)" % ("----------------------------------------------------------------------------------------------------"[0:min(vv,100)], vv)
self.TestListCtrl.SetStringItem(index, 3, vvs)
self.TestListCtrl.SetStringItem(index, 4, vvs)
self.TestListCtrl.Select(index)
 
 
448,16 → 450,29
def OnImport(self, event): # wxGlade: MainFrame.<event_handler>
dlg = wx.FileDialog(
self, message="Choose a file",
defaultDir=os.getcwd(),
defaultDir="%s/Data/" % os.getcwd(),
defaultFile="*.txt",
wildcard="",
wildcard="*.txt",
style=wx.OPEN | wx.CHANGE_DIR
)
if dlg.ShowModal() == wx.ID_OK:
paths = dlg.GetPaths();
self.app.Import(paths[0])
self.app.loadTests(paths[0])
dlg.Destroy()
 
def onExport(self, event): # wxGlade: MainFrame.<event_handler>
dlg = wx.FileDialog(
self, message="Save file as ...",
defaultDir="%s/Data/" % os.getcwd(),
defaultFile="*.txt",
wildcard="",
style=wx.SAVE
)
if dlg.ShowModal() == wx.ID_OK:
paths = dlg.GetPaths();
self.app.saveTests(paths[0])
dlg.Destroy()
 
def onYAxisChange(self, event): # wxGlade: MainFrame.<event_handler>
self.drawGraph()
 
481,7 → 496,9
mp.motors = map(int,self.tcMotors.GetValue().split(','))
mp.channels = map(int,self.tcChannels.GetValue().split(','))
s = self.tcSpeeds.GetValue()
if s.count("-") == 1:
if s=="test":
mp.speeds = (100,100,100,100,100, 150,150,150,150,150, 200,200,200,200,200, 100,150,200, 100,150,200, 100,150,200, 100,150,200)
elif s.count("-") == 1:
# assume from-to:step format
s = s.split("-")
if len(s) != 2: raise Exception("Invalid format")
522,10 → 539,7
if idx == -1: break
self._removeTest(idx)
def onExport(self, event): # wxGlade: MainFrame.<event_handler>
print "Event handler `onExport' not implemented"
event.Skip()
 
# end of class MainFrame
 
class Setting:
608,13 → 622,19
for channel in self.param.channels:
self._setMotorSpeed(speed, .1)
msg = self.mk.getDebugMsg()
voltage = msg.getVoltage()
self._sendEvent("Getting data from channel %s" % CHANNEL_NAMES[channel])
data = self.mk.doVibrationTest(1000, channel)
vt = VibTest(self.param.descr, self.param.motors, speed, CHANNEL_NAMES[channel], data)
vt = VibTest(self.param.descr, voltage, self.param.motors, speed, CHANNEL_NAMES[channel], data)
evt = MeasDataEvent(vibTest = vt)
wx.PostEvent(self.evtConsumer, evt)
if voltage<minVoltage:
raise Exception("Voltage too low")
self._sendEvent("Done !")
except Exception, e:
625,8 → 645,9
 
class VibTest:
def __init__(self, descr, motor, speed, channel, rawData):
def __init__(self, descr, voltage, motor, speed, channel, rawData):
self.descr = descr
self.voltage = voltage
self.motor = motor
self.speed = speed
self.channel = channel
710,7 → 731,7
self.readSettings()
 
if len(sys.argv)>1:
self.Import(sys.argv[1])
self.loadTests(sys.argv[1])
 
 
def readSettings(self):
748,8 → 769,8
self.VibTests.append(vibTest)
self.frame_1.onNewTest(vibTest)
def AddTest(self, descr, motor, speed, channel, rawData):
test = VibTest(descr, motor, speed, channel, rawData)
def AddTest(self, descr, voltage, motor, speed, channel, rawData):
test = VibTest(descr, voltage, motor, speed, channel, rawData)
self.AddTest2(test)
 
def removeTest(self, idx):
768,7 → 789,42
self.frame_1.Show()
return 1
 
def Import(self, filePath):
def saveTests(self, filePath):
try:
logfile = open(filePath, "r")
newFile = False
logfile.close()
except:
newFile = True
for test in self.VibTests:
if newFile:
logfile = open(filePath, "w")
print "Writing result to %s ..." % filePath,
logfile.write("%s %d %s\n" % (test.descr, test.speed, test.channel))
for value in test.rawData:
logfile.write("%d\n" % value)
logfile.close()
print "OK"
else:
print "Appending result to %s ..." % filePath,
logfile = open(filePath, "r")
prevData = []
for line in logfile:
prevData.append(line[:-1])
logfile.close()
logfile = open(filePath, "w")
logfile.write("%s,%s %d %s\n" % (prevData[0], test.descr, test.speed, test.channel))
i = 1
for value in test.rawData:
logfile.write("%s,%d\n" % (prevData[i], value))
i += 1
logfile.close()
print "OK"
newFile = False
def loadTests(self, filePath):
print "Importing file \"%s\"" % filePath
 
775,7 → 831,7
logfile = open(filePath, "r")
data = None
 
headers = (logfile.readline()).split(',')
headers = (logfile.readline()[:-1]).split(',')
nbCols = len(headers)
print "NbCols =", nbCols
 
799,7 → 855,7
for c in range(nbCols):
if (len(data[c]) % 2) != 0:
data[c].append(data[c][-1])
self.AddTest(descr[c], 0, int(speed[c]), channel[c], data[c])
self.AddTest(descr[c], 0, 0, int(speed[c]), channel[c], data[c])
def startMeasure(self, measureParams, dialog):
print "Start measuring"