Rev 616 | Rev 623 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 616 | Rev 619 | ||
---|---|---|---|
Line 328... | Line 328... | ||
328 | self.client.setLogScale((False,False)) |
328 | self.client.setLogScale((False,False)) |
Line 329... | Line 329... | ||
329 | 329 | ||
330 | 330 | ||
- | 331 | # Configure TestListCtrl |
|
331 | # Configure TestListCtrl |
332 | self.TestListCtrl.InsertColumn(0, "Description") |
332 | self.TestListCtrl.InsertColumn(0, "Description") |
333 | self.TestListCtrl.InsertColumn(1, "Voltage") |
333 | self.TestListCtrl.InsertColumn(1, "Speed") |
334 | self.TestListCtrl.InsertColumn(2, "Speed") |
334 | self.TestListCtrl.InsertColumn(2, "Channel") |
335 | self.TestListCtrl.InsertColumn(3, "Channel") |
Line 335... | Line 336... | ||
335 | self.TestListCtrl.InsertColumn(3, "Vibration Value") |
336 | self.TestListCtrl.InsertColumn(4, "Vibration Value") |
336 | self.TestListCtrl.SetColumnWidth(3, 500) |
337 | self.TestListCtrl.SetColumnWidth(4, 500) |
337 | 338 | ||
338 | def DrawPointLabel(self, dc, mDataDict): |
339 | def DrawPointLabel(self, dc, mDataDict): |
Line 360... | Line 361... | ||
360 | # ----------- |
361 | # ----------- |
Line 361... | Line 362... | ||
361 | 362 | ||
362 | 363 | ||
- | 364 | def onNewTest(self, test): |
|
363 | def onNewTest(self, test): |
365 | index = self.TestListCtrl.InsertStringItem(sys.maxint, test.descr) |
364 | index = self.TestListCtrl.InsertStringItem(sys.maxint, test.descr) |
366 | self.TestListCtrl.SetStringItem(index, 1, "%.1f V" %test.voltage) |
Line 365... | Line 367... | ||
365 | self.TestListCtrl.SetStringItem(index, 1, str(test.speed)) |
367 | self.TestListCtrl.SetStringItem(index, 2, str(test.speed)) |
366 | self.TestListCtrl.SetStringItem(index, 2, test.channel) |
368 | self.TestListCtrl.SetStringItem(index, 3, test.channel) |
367 | 369 | ||
368 | vv = int(test.getVibValue(self.app.settings["hpf"].value, self.app.settings["lpf"].value)) |
370 | vv = int(test.getVibValue(self.app.settings["hpf"].value, self.app.settings["lpf"].value)) |
Line 369... | Line 371... | ||
369 | vvs = "|%s| (%d)" % ("----------------------------------------------------------------------------------------------------"[0:min(vv,100)], vv) |
371 | vvs = "|%s| (%d)" % ("----------------------------------------------------------------------------------------------------"[0:min(vv,100)], vv) |
370 | self.TestListCtrl.SetStringItem(index, 3, vvs) |
372 | self.TestListCtrl.SetStringItem(index, 4, vvs) |
Line 446... | Line 448... | ||
446 | 448 | ||
447 | 449 | ||
448 | def OnImport(self, event): # wxGlade: MainFrame.<event_handler> |
450 | def OnImport(self, event): # wxGlade: MainFrame.<event_handler> |
449 | dlg = wx.FileDialog( |
451 | dlg = wx.FileDialog( |
450 | self, message="Choose a file", |
452 | self, message="Choose a file", |
451 | defaultDir=os.getcwd(), |
453 | defaultDir="%s/Data/" % os.getcwd(), |
452 | defaultFile="*.txt", |
454 | defaultFile="*.txt", |
453 | wildcard="", |
455 | wildcard="*.txt", |
454 | style=wx.OPEN | wx.CHANGE_DIR |
456 | style=wx.OPEN | wx.CHANGE_DIR |
455 | ) |
457 | ) |
456 | if dlg.ShowModal() == wx.ID_OK: |
458 | if dlg.ShowModal() == wx.ID_OK: |
- | 459 | paths = dlg.GetPaths(); |
|
- | 460 | self.app.loadTests(paths[0]) |
|
- | 461 | dlg.Destroy() |
|
- | 462 | ||
- | 463 | def onExport(self, event): # wxGlade: MainFrame.<event_handler> |
|
- | 464 | dlg = wx.FileDialog( |
|
- | 465 | self, message="Save file as ...", |
|
- | 466 | defaultDir="%s/Data/" % os.getcwd(), |
|
- | 467 | defaultFile="*.txt", |
|
- | 468 | wildcard="", |
|
- | 469 | style=wx.SAVE |
|
- | 470 | ) |
|
- | 471 | if dlg.ShowModal() == wx.ID_OK: |
|
457 | paths = dlg.GetPaths(); |
472 | paths = dlg.GetPaths(); |
Line 458... | Line 473... | ||
458 | self.app.Import(paths[0]) |
473 | self.app.saveTests(paths[0]) |
459 | dlg.Destroy() |
474 | dlg.Destroy() |
Line 479... | Line 494... | ||
479 | mp = MeasureParameters() |
494 | mp = MeasureParameters() |
480 | mp.descr = self.tcDescr.GetValue() |
495 | mp.descr = self.tcDescr.GetValue() |
481 | mp.motors = map(int,self.tcMotors.GetValue().split(',')) |
496 | mp.motors = map(int,self.tcMotors.GetValue().split(',')) |
482 | mp.channels = map(int,self.tcChannels.GetValue().split(',')) |
497 | mp.channels = map(int,self.tcChannels.GetValue().split(',')) |
483 | s = self.tcSpeeds.GetValue() |
498 | s = self.tcSpeeds.GetValue() |
- | 499 | if s=="test": |
|
- | 500 | 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) |
|
484 | if s.count("-") == 1: |
501 | elif s.count("-") == 1: |
485 | # assume from-to:step format |
502 | # assume from-to:step format |
486 | s = s.split("-") |
503 | s = s.split("-") |
487 | if len(s) != 2: raise Exception("Invalid format") |
504 | if len(s) != 2: raise Exception("Invalid format") |
488 | s[1] = s[1].split(":") |
505 | s[1] = s[1].split(":") |
489 | if len(s[1]) != 2: raise Exception("Invalid format") |
506 | if len(s[1]) != 2: raise Exception("Invalid format") |
Line 520... | Line 537... | ||
520 | while True: |
537 | while True: |
521 | idx = self.TestListCtrl.GetFirstSelected() |
538 | idx = self.TestListCtrl.GetFirstSelected() |
522 | if idx == -1: break |
539 | if idx == -1: break |
523 | self._removeTest(idx) |
540 | self._removeTest(idx) |
Line 524... | Line -... | ||
524 | - | ||
525 | def onExport(self, event): # wxGlade: MainFrame.<event_handler> |
- | |
526 | print "Event handler `onExport' not implemented" |
- | |
527 | event.Skip() |
541 | |
528 | 542 | ||
Line 529... | Line 543... | ||
529 | # end of class MainFrame |
543 | # end of class MainFrame |
530 | 544 | ||
531 | class Setting: |
545 | class Setting: |
Line 606... | Line 620... | ||
606 | self._sendEvent("Changing motor speed to %d... " % speed) |
620 | self._sendEvent("Changing motor speed to %d... " % speed) |
607 | self._setMotorSpeed(speed, 1) |
621 | self._setMotorSpeed(speed, 1) |
Line 608... | Line 622... | ||
608 | 622 | ||
609 | for channel in self.param.channels: |
623 | for channel in self.param.channels: |
- | 624 | self._setMotorSpeed(speed, .1) |
|
- | 625 | msg = self.mk.getDebugMsg() |
|
- | 626 | voltage = msg.getVoltage() |
|
610 | self._setMotorSpeed(speed, .1) |
627 | |
611 | self._sendEvent("Getting data from channel %s" % CHANNEL_NAMES[channel]) |
628 | self._sendEvent("Getting data from channel %s" % CHANNEL_NAMES[channel]) |
Line 612... | Line 629... | ||
612 | data = self.mk.doVibrationTest(1000, channel) |
629 | data = self.mk.doVibrationTest(1000, channel) |
613 | 630 | ||
614 | vt = VibTest(self.param.descr, self.param.motors, speed, CHANNEL_NAMES[channel], data) |
631 | vt = VibTest(self.param.descr, voltage, self.param.motors, speed, CHANNEL_NAMES[channel], data) |
Line -... | Line 632... | ||
- | 632 | evt = MeasDataEvent(vibTest = vt) |
|
- | 633 | wx.PostEvent(self.evtConsumer, evt) |
|
- | 634 | ||
615 | evt = MeasDataEvent(vibTest = vt) |
635 | if voltage<minVoltage: |
Line 616... | Line 636... | ||
616 | wx.PostEvent(self.evtConsumer, evt) |
636 | raise Exception("Voltage too low") |
617 | 637 | ||
Line 618... | Line 638... | ||
618 | self._sendEvent("Done !") |
638 | self._sendEvent("Done !") |
619 | 639 | ||
Line 620... | Line 640... | ||
620 | except Exception, e: |
640 | except Exception, e: |
621 | self._sendEvent("Exception \"%s\"" % e, error=True) |
641 | self._sendEvent("Exception \"%s\"" % e, error=True) |
622 | 642 | ||
- | 643 | self.running = False |
|
623 | self.running = False |
644 | self._sendEvent("") |
624 | self._sendEvent("") |
645 | |
625 | 646 | ||
Line 626... | Line 647... | ||
626 | 647 | class VibTest: |
|
Line 708... | Line 729... | ||
708 | self.settings["lpf"] = Setting("LP Filter cutoff (Hz)", 180) |
729 | self.settings["lpf"] = Setting("LP Filter cutoff (Hz)", 180) |
Line 709... | Line 730... | ||
709 | 730 | ||
Line 710... | Line 731... | ||
710 | self.readSettings() |
731 | self.readSettings() |
711 | 732 | ||
Line 712... | Line 733... | ||
712 | if len(sys.argv)>1: |
733 | if len(sys.argv)>1: |
713 | self.Import(sys.argv[1]) |
734 | self.loadTests(sys.argv[1]) |
714 | 735 | ||
Line 746... | Line 767... | ||
746 | 767 | ||
747 | def AddTest2(self, vibTest): |
768 | def AddTest2(self, vibTest): |
748 | self.VibTests.append(vibTest) |
769 | self.VibTests.append(vibTest) |
Line 749... | Line 770... | ||
749 | self.frame_1.onNewTest(vibTest) |
770 | self.frame_1.onNewTest(vibTest) |
750 | 771 | ||
751 | def AddTest(self, descr, motor, speed, channel, rawData): |
772 | def AddTest(self, descr, voltage, motor, speed, channel, rawData): |
Line 752... | Line 773... | ||
752 | test = VibTest(descr, motor, speed, channel, rawData) |
773 | test = VibTest(descr, voltage, motor, speed, channel, rawData) |
753 | self.AddTest2(test) |
774 | self.AddTest2(test) |
Line 766... | Line 787... | ||
766 | 787 | ||
767 | self.frame_1.CenterOnScreen() |
788 | self.frame_1.CenterOnScreen() |
768 | self.frame_1.Show() |
789 | self.frame_1.Show() |
Line 769... | Line 790... | ||
769 | return 1 |
790 | return 1 |
- | 791 | ||
- | 792 | def saveTests(self, filePath): |
|
- | 793 | try: |
|
- | 794 | logfile = open(filePath, "r") |
|
- | 795 | newFile = False |
|
- | 796 | logfile.close() |
|
- | 797 | except: |
|
- | 798 | newFile = True |
|
- | 799 | ||
- | 800 | for test in self.VibTests: |
|
- | 801 | if newFile: |
|
- | 802 | logfile = open(filePath, "w") |
|
- | 803 | print "Writing result to %s ..." % filePath, |
|
- | 804 | logfile.write("%s %d %s\n" % (test.descr, test.speed, test.channel)) |
|
- | 805 | for value in test.rawData: |
|
- | 806 | logfile.write("%d\n" % value) |
|
- | 807 | logfile.close() |
|
- | 808 | print "OK" |
|
- | 809 | else: |
|
- | 810 | print "Appending result to %s ..." % filePath, |
|
- | 811 | logfile = open(filePath, "r") |
|
- | 812 | prevData = [] |
|
- | 813 | for line in logfile: |
|
- | 814 | prevData.append(line[:-1]) |
|
- | 815 | logfile.close() |
|
- | 816 | logfile = open(filePath, "w") |
|
- | 817 | logfile.write("%s,%s %d %s\n" % (prevData[0], test.descr, test.speed, test.channel)) |
|
- | 818 | i = 1 |
|
- | 819 | for value in test.rawData: |
|
- | 820 | logfile.write("%s,%d\n" % (prevData[i], value)) |
|
- | 821 | i += 1 |
|
- | 822 | logfile.close() |
|
- | 823 | print "OK" |
|
- | 824 | newFile = False |
|
- | 825 | ||
Line 770... | Line 826... | ||
770 | 826 | ||
Line 771... | Line 827... | ||
771 | def Import(self, filePath): |
827 | def loadTests(self, filePath): |
772 | 828 | ||
Line 773... | Line 829... | ||
773 | print "Importing file \"%s\"" % filePath |
829 | print "Importing file \"%s\"" % filePath |
774 | 830 | ||
775 | logfile = open(filePath, "r") |
831 | logfile = open(filePath, "r") |
Line 776... | Line 832... | ||
776 | data = None |
832 | data = None |
777 | 833 | ||
Line 797... | Line 853... | ||
797 | logfile.close() |
853 | logfile.close() |
Line 798... | Line 854... | ||
798 | 854 | ||
799 | for c in range(nbCols): |
855 | for c in range(nbCols): |
800 | if (len(data[c]) % 2) != 0: |
856 | if (len(data[c]) % 2) != 0: |
801 | data[c].append(data[c][-1]) |
857 | data[c].append(data[c][-1]) |
Line 802... | Line 858... | ||
802 | self.AddTest(descr[c], 0, int(speed[c]), channel[c], data[c]) |
858 | self.AddTest(descr[c], 0, 0, int(speed[c]), channel[c], data[c]) |
803 | 859 | ||
Line 804... | Line 860... | ||
804 | def startMeasure(self, measureParams, dialog): |
860 | def startMeasure(self, measureParams, dialog): |