Subversion Repositories Projects

Rev

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