Advertisement
Frekvens1

[WIP] Pump project simulation

Nov 26th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.81 KB | None | 0 0
  1. import time, threading
  2. import ASUS.GPIO as GPIO
  3.  
  4. class GPIOA():
  5.    
  6.     PINS = [
  7.     [252, False], #1
  8.     [253, False], #2
  9.     [17, False],  #3
  10.    
  11.     [164, False], #4
  12.     [166, False], #5
  13.     [167, False], #6
  14.    
  15.     [257, False], #7
  16.     [256, False], #8
  17.     [254, False], #9
  18.    
  19.     [165, False], #10
  20.     [168, False], #11
  21.     [238, False], #12
  22.     [185, False], #13
  23.     [224, False], #14
  24.    
  25.     [161, False], #15
  26.     [160, False], #16
  27.     [184, False], #17
  28.    
  29.     [162, False], #18
  30.     [163, False], #19
  31.    
  32.     [171, False], #20
  33.     [255, False], #21
  34.     [251, False], #22
  35.    
  36.     [239, False], #23
  37.    
  38.     [223, False], #24
  39.     [187, False], #25
  40.     [188, False]] #26
  41.    
  42.     def __init__(self):
  43.         GPIO.setwarnings(False)
  44.         GPIO.setmode(GPIO.ASUS)
  45.    
  46.         for id in range(len(self.PINS)):
  47.             pin = self.PINS[id]
  48.            
  49.             GPIO.setup(pin[0], GPIO.OUT)
  50.             GPIO.output(pin[0], GPIO.LOW)
  51.        
  52.     def on(self, id):
  53.         pin = self.PINS[id]
  54.        
  55.         if not (pin[1]):
  56.             GPIO.output(pin[0], GPIO.HIGH)
  57.             return True
  58.         return False
  59.        
  60.     def off(self, id):
  61.         pin = self.PINS[id]
  62.        
  63.         if not (pin[1]):
  64.             GPIO.output(pin[0], GPIO.LOW)
  65.             return True
  66.         return False
  67.        
  68.     def switch(self, id):
  69.         if self.state(id): return self.off(id)
  70.         return self.on(id)
  71.        
  72.     def mode(self, id, bol_input):
  73.         try:
  74.             if (bol_input): GPIO.setup(self.PINS[id][0], GPIO.IN)
  75.             else: GPIO.setup(self.PINS[id][0], GPIO.OUT)
  76.        
  77.             self.PINS[id][1] = bol_input
  78.        
  79.             return True
  80.         except:
  81.             return False
  82.            
  83.     def modeSwitch(self, id):
  84.         return self.mode(id, not self.PINS[id][1])
  85.        
  86.     def allOn(self):
  87.         try:
  88.             for i in range(len(self.PINS)): self.on(i)
  89.             return True
  90.         except:
  91.             return False
  92.        
  93.     def allOff(self):
  94.         try:
  95.             for i in range(len(self.PINS)): self.off(i)
  96.             return True
  97.         except:
  98.             return False
  99.        
  100.     def state(self, id):
  101.         return GPIO.input(self.PINS[id][0])
  102.    
  103.     def isInput(self, id):
  104.         return self.PINS[id][1]
  105.        
  106.     def cleanup(self):
  107.         try:
  108.             GPIO.cleanup()
  109.             return True
  110.         except:
  111.             return False
  112.  
  113. def millis():
  114.     return int(round(time.time() * 1000))
  115.    
  116. def log(message):
  117.     print(message)
  118.    
  119. def simulationDone(milli_start, milli_stop, milli_sensor1, milli_sensor2, milli_sensor3):
  120.     log("Calculating test run...")
  121.     values = {"start" : milli_start, "stop" : milli_stop, "sensor1" : milli_sensor1, "sensor2" : milli_sensor2, "sensor3" : milli_sensor3}
  122.     log( str( values ) )
  123.  
  124. class checkSimulation(threading.Thread):
  125.    
  126.     running = True
  127.  
  128.     def run(self):
  129.         milli_start = millis()
  130.        
  131.         milli_sensor1 = 0
  132.         milli_sensor2 = 0
  133.         milli_sensor3 = 0
  134.        
  135.        
  136.         while self.running:
  137.             if not (GPIOH.state(3)):
  138.                 if (milli_sensor1 == 0):
  139.                     milli_sensor1 = millis()
  140.                     log("1")
  141.                    
  142.             if not (GPIOH.state(4)):
  143.                 if (milli_sensor2 == 0):
  144.                     milli_sensor2 = millis()
  145.                     log("2")
  146.                    
  147.             if not (GPIOH.state(5)):
  148.                 if (milli_sensor3 == 0):
  149.                     milli_sensor3 = millis()
  150.                     self.running = False
  151.                     log("3")
  152.        
  153.         milli_stop = millis()
  154.         simulationDone(milli_start, milli_stop, milli_sensor1, milli_sensor2, milli_sensor3)
  155.    
  156. GPIOH = GPIOA()
  157.  
  158. message = ""
  159.  
  160. if (GPIOH.mode(3, True)): log("OK 1")
  161. if (GPIOH.mode(4, True)): log("OK 2")
  162. if (GPIOH.mode(5, True)): log("OK 3")
  163.  
  164. test = checkSimulation()
  165.  
  166. while message != 'q':
  167.    
  168.     try:
  169.         message = str( raw_input(" >> ") )
  170.         cmd = message.split(" ")
  171.        
  172.         if (cmd[0] == "start"):
  173.            
  174.             if (cmd[1] == "1"):
  175.                 GPIOH.on(0)
  176.             else:
  177.                 GPIOH.off(0)
  178.                
  179.             if (cmd[2] == "1"):
  180.                 GPIOH.on(1)
  181.             else:
  182.                 GPIOH.off(1)
  183.                
  184.             if (cmd[3] == "1"):
  185.                 GPIOH.on(2)
  186.             else:
  187.                 GPIOH.off(2)
  188.            
  189.             test = checkSimulation()
  190.             test.start()
  191.            
  192.         elif (cmd[0] == "stop"):
  193.             GPIOH.allOff()
  194.             log("Turned all engines off!")
  195.             test.running = False
  196.            
  197.         else:
  198.             log("Unknown command!")
  199.        
  200.     except:
  201.         log("Error while handling command!")
  202.         GPIOH.allOff()
  203.        
  204. test.running = False
  205. GPIOH.cleanup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement