class MyModel(gtkmvc.ModelMT): analogueValuesList = None displacement = None __observables__ = ['analogueValuesList', 'displacement'] def __init__(self): gtkmvc.ModelMT.__init__(self) self.testingMachine = TestingMachine() self._setInitialValuesOfVariables() def _setInitialValuesOfVariables(self): self.nEvents = 0 self.dataDirectory = '/home/crush/tmp' self.squashStroke = 44 # mm self.squashSpeed = 22 # mm/min self.fastSpeed = 110 # mm/min self.upStroke = -5 # mm self.downStroke = 5 # mm self.acceleration = 1.0 # mm/sec/sec self.boxId = 0 def squash(self, nEventsAtStartOfSquashing): self._openFileForWriting() self.startSquashTime = time.time() self.testingMachine.moveUpDown(self.squashStroke, self.squashSpeed, \ self.acceleration) self._recordTest(nEventsAtStartOfSquashing) self.cleanUpAfterSquashTest(nEventsAtStartOfSquashing) def _cleanUpAfterSquashTest(self, nEventsAtStart): self.testingMachine.moveUpDown(-self.squashStroke, self.squashSpeed, \ self.acceleration) self.nEvents += 1 def _recordTest(self, nEventsAtStartOfSquashing): try: while (self.testingMachine.isAtTargetPosition()==False and \ self.nEvents==nEventsAtStartOfSquashing): self.updateAnalogueValuesList() self.writeOneLineOfDataToFile() finally: self._closeFile() def updateAnalgoueValuesList(self): tmp = [] for i in range(6): tmp.append(self.testingMachine.getAnalogueMillivoltage(i)) self.analogueValuesList = tmp def _writeOneLineOfDataToFile(self): self.displacement = self.testingMachine.getPASIUnits() lineToWriteToFile = '%f.3, %d, %d, %d, %d, %d, %d, %f.3\n' % \ (self.displacement, \ self.analogueValuesList[0], \ self.analogueValuesList[1], \ self.analogueValuesList[2], \ self.analogueValuesList[3], \ self.analogueValuesList[4], \ self.analogueValuesList[5], \ time.time() - self.startSquashTime) self.fid.write(lineToWriteToFile) def _openFileForWriting(self): self.fid = open('%s/box%s.csv' % (self.dataDirectory, \ str(self.boxId)), 'w') self._writeHeader() def _writeHeader(self): self.fid.write('# distance_mm, load_cell_mV, time_seconds\n') def _closeFile(self): self.fid.close() def _tidyUpAfterSquash(self): self.testingMachine.stopMotor() self.nEvents += 1 self.closeFile() self.testingMachine.moveSIUnits(0,returnToStartPosition()) def _returnToStartPosition(self): self.moveUpDown(self.nEvents, -self.stroke) print('Box squashed') def moveUp(self, nEvents): self.testingMachine.moveUpDown(self.upStroke, self.fastSpeed, \ self.acceleration) def moveDown(self, nEvents): self.testingMachine.moveUpDown(self.downStroke, self.fastSpeed, \ self.acceleration) def moveDown(self, nEvents): self.testingMachine.moveUpDown(self.downStroke, self.fastSpeed, \ self.acceleration) def stop(self, nEvents): self.testingMachine.stopMotor()
def __init__(self): gtkmvc.ModelMT.__init__(self) self.testingMachine = TestingMachine() self._setInitialValuesOfVariables()