def doNextStepInFlowChart(self):
		
		if self.waitingForHandshake == False:
			self.flowConditionOutcome =  self.determineFlowConditionTypeAndOutcome()
		
		print "self.flowConditionOutcome: " + str(self.flowConditionOutcome)
				
		self.flowOperationOutcome = self.performFlowOperation(self.flowConditionOutcome)
	
		print "self.flowOperationOutcome: " + str(self.flowOperationOutcome)
			
		if self.flowOperationOutcome == "Complete":
			
			if self.flowConditionOutcome == "Yes":			
				self.nextStepInThisFlowChart = self.flowDictionary[self.flowChartStep]["YesNextStepInThisFlowChart"]
				
				if self.nextStepInThisFlowChart != "Finished":
					self.flowChartStep = self.nextStepInThisFlowChart
					
					try:
						print "EskySincePreviousYes before reset: " + str(globalvars.timers["EskySincePreviousYes"])
					
					except:
						a = 1
					
					globalvars.timers["EskySincePreviousYes"] = globalfxns.millis()
					
					print "EskySincePreviousYes after reset: " + str(globalvars.timers["EskySincePreviousYes"])
					return "Not finished"
				
				else:
					self.flowChartStep = "1"
					return "Finished"

			if self.flowConditionOutcome == "No":
				self.nextStepInThisFlowChart = self.flowDictionary[self.flowChartStep]["NoNextStepInThisFlowChart"]

				if self.nextStepInThisFlowChart != "Finished":
					self.flowChartStep = self.nextStepInThisFlowChart
					
					try:
						print "EskySincePreviousNo before reset: " + str(globalvars.timers["EskySincePreviousNo"])
					
					except:
						a = 1
					
					globalvars.timers["EskySincePreviousNo"] = globalfxns.millis()
					
					print "EskySincePreviousNo after reset: " + str(globalvars.timers["EskySincePreviousNo"])
					return "Not finished"
				
				else:
					self.flowChartStep = "1"
					return "Finished"
					
		else:
			return "Repeating"
	def doNextStepInFlowChart(self):
		
		if self.turnUpdateHandshakesFromComsFlagOn == True:
			globalvars.updateHandshakesFromComs = True
			self.turnUpdateHandshakesFromComsFlagOn = False
		
		if self.justStarted == True:
			globalvars.timers["EskyLastStartup"] = globalfxns.millis()			
			self.justStarted = False
		
		if self.waitingForHandshake == False:
			self.flowConditionOutcome =  self.determineFlowConditionTypeAndOutcome()
		
		print "self.flowConditionOutcome: " + str(self.flowConditionOutcome)
				
		self.flowOperationOutcome = self.performFlowOperation(self.flowConditionOutcome)
	
		print "self.flowOperationOutcome: " + str(self.flowOperationOutcome)
			
		if self.flowOperationOutcome == "Complete":	
			
			self.turnUpdateHandshakesFromComsFlagOn = True
			
			if self.flowConditionOutcome == "Yes":			
				self.nextStepInThisFlowChart = self.flowDictionary[self.flowChartStep]["YesNextStepInThisFlowChart"]
				
				if self.nextStepInThisFlowChart != "Finished":
					self.flowChartStep = self.nextStepInThisFlowChart
					globalvars.timers["EskySincePreviousYes"] = globalfxns.millis()
					return "Not finished"
				
				else:
					self.flowChartStep = "1"
					globalvars.timers["EskyLastFinish"] = globalfxns.millis()
					self.justStarted = True
					return "Finished"

			if self.flowConditionOutcome == "No":
				self.nextStepInThisFlowChart = self.flowDictionary[self.flowChartStep]["NoNextStepInThisFlowChart"]

				if self.nextStepInThisFlowChart != "Finished":
					self.flowChartStep = self.nextStepInThisFlowChart
					globalvars.timers["EskySincePreviousNo"] = globalfxns.millis()
					return "Not finished"
				
				else:
					self.flowChartStep = "1"
					globalvars.timers["EskyLastFinish"] = globalfxns.millis()
					self.justStarted = True
					return "Finished"
					
		else:
			return "Repeating"
Beispiel #3
0
	def __init__(self):
		
		# Create GUI object and assign to its own thread
		self.GUI = GUIModule.GUIClass("ARBI GUI")
		self.GUIThread = threading.Thread(target = self.GUI.createGUI)
		self.GUIThread.start()

		# Create data logger object and clear previous file
		self.DataLogger = DataLoggerModule.DataLoggerClass("textfile.txt")
		self.DataLogger.clearFile()

		# Create Coms object
		self.Coms = ComsModule.ComsClass()
		
		# Create CSV Reader objects for as many csv files as there is to read
		self.StepReader = CsvReaderModule.CsvReaderClass("tasksEsky.csv", "Step")
		globalvars.taskDictionary = self.StepReader.csvReturnDict()

		self.EskyReader = CsvReaderModule.CsvReaderClass("flowEsky.csv", "Flow")
		self.eskyDictionary = self.EskyReader.csvReturnDict()

		# Create Task Controller objects for as many flow chart dictionaries as there is to implement
		self.EskyController = ProcessControllerModule.ProcessControllerClass(self.eskyDictionary)	
				
		# Intialise starting time references in milliseconds
		globalvars.timers["EskyLastStartup"] = globalfxns.millis()
Beispiel #4
0
def main():	
	time.sleep(2)

	HATstarttime = globalfxns.millis()

	globalvars.timers = {"HAT" : HATstarttime}
	globalvars.machineState = {"FCV301" : "0", "V201a" : "0", "V201b" :"0", "V301" : "0", "V302" : "0", "heya" : "1", "FL301" : 30}
	globalvars.handshakes = {"FCV301" : "", "V201a" : "", "V201b" :"", "V301" : "", "V302" : "", "heya" : ""}
	print globalvars.timers
	print globalvars.machineState
	print globalvars.handshakes

	ArbiAI = AI.AIclass()

	times = 0

	while True:
		time.sleep(1)
			
		times = times + 1
		if times == 2:
			globalvars.machineState = {"FCV301" : "0", "V201a" : "0", "V201b" :"0", "V301" : "0", "V302" : "0", "heya" : "1", "FL301" : "30"}
			globalvars.handshakes = {"FCV301" : "1", "V201a" : "1", "V201b" :"1", "V301" : "1", "V302" : "1", "heya" : "0"}
		if times == 6:
			globalvars.machineState = {"FCV301" : "1", "V201a" : "1", "V201b" :"1", "V301" : "1", "V302" : "1", "heya" : "1", "FL301" : "30"}
			globalvars.handshakes = {"FCV301" : "1", "V201a" : "1", "V201b" :"1", "V301" : "1", "V302" : "1", "heya" : "1"}
		if times == 9:
			globalvars.machineState = {"FCV301" : "1", "V201a" : "0", "V201b" :"1", "V301" : "0", "V302" : "0", "heya" : "1", "FL301" : "200"}
			globalvars.handshakes = {"FCV301" : "1", "V201a" : "0", "V201b" :"1", "V301" : "1", "V302" : "0", "heya" : "1"} #make handshake wrong
		if times == 10:
			globalvars.machineState = {"FCV301" : "1", "V201a" : "0", "V201b" :"0", "V301" : "0", "V302" : "0", "heya" : "1", "FL301" : "200"}
			globalvars.handshakes = {"FCV301" : "1", "V201a" : "1", "V201b" :"1", "V301" : "1", "V302" : "1", "heya" : "1"}
		if times == 12:
			globalvars.machineState = {"FCV301" : "1", "V201a" : "1", "V201b" :"0", "V301" : "0", "V302" : "0", "heya" : "1", "FL301" : "30"}
			globalvars.handshakes = {"FCV301" : "1", "V201a" : "1", "V201b" :"1", "V301" : "1", "V302" : "1", "heya" : "1"}
		if times == 15:
			globalvars.machineState = {"FCV301" : "1", "V201a" : "1", "V201b" :"0", "V301" : "0", "V302" : "0", "heya" : "1", "FL301" : "10000"}
			globalvars.handshakes = {"FCV301" : "1", "V201a" : "1", "V201b" :"1", "V301" : "0", "V302" : "1", "heya" : ""} # make handshake wrong
		if times == 17:
			globalvars.machineState = {"FCV301" : "1", "V201a" : "0", "V201b" :"0", "V301" : "0", "V302" : "0", "heya" : "1", "FL301" : "10000"}		
			globalvars.handshakes = {"FCV301" : "1", "V201a" : "1", "V201b" :"1", "V301" : "1", "V302" : "1", "heya" : "1"}

		
		outcome = ArbiAI.ArbiFeedAlgaeInterpreter.doNextStepInFlowChart()
		print outcome + str(times)
		
		ArbiAI.status()
		ArbiAI.decide()
		
		ArbiAI.ArbiDataLogger.logData(str(globalvars.machineState))
		
		ArbiAI.ArbiUART.serialWrite("1_hi0_ACM0\r\n")
		ArbiAI.ArbiUART.serialWrite("1_hi1_ACM1\r\n")
		ArbiAI.ArbiUART.serialReceive()

		print globalvars.UARTvar
		
		time.sleep(4)
	def hasTimePassed(self):
		
		self.timerID = self.flowDictionary[self.flowChartStep]["ConditionDescription"] 
		self.timeToWaitSinceReferenceTime = self.flowDictionary[self.flowChartStep]["ConditionValue"]

		self.referenceTime = globalvars.timers[self.timerID]
		
		self.timeElapsedSinceReferenceTime = (globalfxns.millis() - self.referenceTime)/1000
		
		print "ConditionType: hasTimePassed"
		print "referenceTime: " + str(globalvars.timers[self.timerID])
		print "timeElapsedSinceReferenceTime: " + str(self.timeElapsedSinceReferenceTime)
		
		if int(self.timeElapsedSinceReferenceTime) > int(self.timeToWaitSinceReferenceTime):
			return "Yes"
		else:
			return "No"
Beispiel #6
0
	def __init__(self):
		
		self.ArbiGUI = GUI.GUIclass("ARBI GUI")
		self.guiThread = threading.Thread(target = self.ArbiGUI.createGUI)
		self.guiThread.start()

		self.ArbiDataLogger = DataLogger.DataLoggerclass("textfile.txt")
		self.ArbiDataLogger.clearFile()

		self.ArbiUART = UART.UARTclass()
		
		self.ArbiTaskReader = csvReader.csvReaderclass("CSVTask.csv", "Step")
		globalvars.taskDictionary = self.ArbiTaskReader.csvReturnDict()

		self.ArbiFeedAlgaeReader = csvReader.csvReaderclass("CSVFlow.csv", "Flow")
		self.feedAlgaeDictionary = self.ArbiFeedAlgaeReader.csvReturnDict()

		self.ArbiFeedAlgaeInterpreter = csvInterpreter.csvInterpreterclass(self.feedAlgaeDictionary)	
				
		# Intialise start-time reference in milliseconds
		globalvars.timers["startTime"] = globalfxns.millis()