Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import time
- import subprocess
- import os
- ##import psutil
- import threading
- import settingsPiLabo as settings
- from servicesRPC import ServerServiceRPC, ServerRPC
- SASOutFirstOpen = False
- gamemasterValidate = False
- start = False
- FNULL = open(os.devnull, 'w')
- doorOpen = False
- unlockDoor = False
- changed = True
- forced = False
- isActive = True
- hasTerminate = False
- alert = False
- updateTime = False
- oldResult = 0
- receivedTime = 0
- ## SAS ##
- def gestionSAS():
- global gamemasterValidate
- global SASOutFirstOpen
- settings.MICROSCOPE.reset_input_buffer()
- settings.com.writeSerial(settings.MICROSCOPE, b'50')
- out = settings.com.readSerial(settings.MICROSCOPE)
- print(out)
- settings.RFIDEXT.reset_input_buffer()
- settings.com.writeSerial(settings.RFIDEXT, b'50')
- statusSASOUT = settings.com.readSerial(settings.RFIDEXT)
- time.sleep(0.06)
- print("coucou")
- print(statusSASOUT)
- if "1" == statusSASOUT:
- if not SASOutFirstOpen:
- SASOutFirstOpen = True
- print("first open")
- elif not gamemasterValidate:
- gamemasterValidate = True
- print("lock and start timer")
- # Send gamemasterValidate OK to RPI Master
- ## START GAME ##
- def startGame():
- # send info game start to pi master
- settings.com.writeToUNO(settings.RFIDINT, 96)
- ## DOOR FOREST ##
- def handleDoor():
- global unlockDoor
- global doorOpen
- if unlockDoor:
- settings.com.writeSerial(settings.LEDRING, b'95')
- unlockDoor = False
- time.sleep(0.02)
- settings.com.writeSerial(settings.LEDRING, b'51')
- statusDoor = settings.com.readSerial(settings.LEDRING)
- if statusDoor == 4:
- doorOpen = True
- time.sleep(0.02)
- ## MICROSCOPE ##
- ##def getplayers():
- ## procs = []
- ## for p in psutil.process_iter():
- ## if p.name() == 'omxplayer.bin':
- ## procs.append(p)
- ## return procs
- def killoldplayers(procs):
- for p in procs:
- p.kill()
- # def handleMicroscope():
- # ##players = getplayers()
- # settings.com.writeSerial(settings.MICROSCOPE, 50)
- # result = settings.com.readSerial(settings.MICROSCOPE)
- # if result != oldResult:
- # changed = True
- # if result == 0 and changed:
- # cmd = "omxplayer -b --no-osd --no-keys --loop /home/piVideos/Microscope.mp4"
- # subprocess.Popen(cmd, shell=True, stdout=FNULL, stderr=FNULL)
- # killoldplayers(players)
- # changed = False
- # elif result == 1 and changed:
- # cmd = "omxplayer -b --no-osd --no-keys --loop /home/piVideos/Microscope1.mp4"
- # subprocess.Popen(cmd, shell=True, stdout=FNULL, stderr=FNULL)
- # killoldplayers(players)
- # changed = False
- # elif result == 2 and changed:
- # cmd = "omxplayer -b --no-osd --no-keys --loop /home/piVideos/Microscope2.mp4"
- # subprocess.Popen(cmd, shell=True, stdout=FNULL, stderr=FNULL)
- # killoldplayers(players)
- # changed = False
- # elif result == 3 and changed:
- # cmd = "omxplayer -b --no-osd --no-keys --loop /home/piVideos/Microscope3.mp4"
- # subprocess.Popen(cmd, shell=True, stdout=FNULL, stderr=FNULL)
- # killoldplayers(players)
- # changed = False
- ## HANDLE LIGHTS ##
- def handleLights():
- global alert
- if alert:
- #turn off neons
- settings.com.writeSerial(settings.LEDRING, b'87')
- time.sleep(0.02)
- settings.com.writeSerial(settings.LEDRING, b'98')
- time.sleep(0.02)
- #change led ceiling colour
- settings.com.writeSerial(settings.LEDRING, b'93')
- time.sleep(0.02)
- # update time on led ring & colour
- settings.com.writeSerial(settings.LEDRING, b'90')
- time.sleep(0.02)
- settings.com.writeSerial(settings.LEDRING, b'1')
- time.sleep(0.02)
- alert = False
- def handleLedring():
- global updateTime
- # update time on led ring
- if updateTime:
- settings.com.writeSerial(settings.LEDRING, b'94')
- time.sleep(0.02)
- class ServerService(ServerServiceRPC):
- # TOUJOURS COMMENCER AVEC exposed_
- def exposed_set_time(self, timeValue):
- global receivedTime
- receivedTime = timeValue
- def exposed_get_time(self):
- return time.ctime()
- def exposed_update_time(self):
- global updateTime
- updateTime = True
- def exposed_set_SAS(self, etat):
- if etat:
- settings.com.writeToUNO(settings.RFIDINT, 99)
- else:
- settings.com.writeToUNO(settings.RFIDINT, 98)
- time.sleep(0.02)
- print("SAS state changed")
- def exposed_get_SAS_value(self):
- global start
- return start
- def exposed_set_door_value(self, value):
- global unlockDoor
- unlockDoor = value
- def exposed_get_door_value(self):
- global doorOpen
- return doorOpen
- def exposed_set_alert(self, value):
- global alert
- alert = value
- def exposed_has_terminate(self):
- global hasTerminate
- return hasTerminate
- def exposed_close_program(self):
- global isActive
- isActive = False
- if __name__ == '__main__':
- serverRPC = ServerRPC(ServerService(), 18871)
- clientRPC = serverRPC.start_and_wait_client()
- while isActive:
- # Gestion SAS(avec booleen a OK quand GM valide derriere)
- if not start:
- gestionSAS()
- # Envoie info (Une seul fois !!!!) & Donner ordre VERR a l'uno SAS interieur
- if gamemasterValidate:
- startGame()
- start = True
- gamemasterValidate = False
- # Gestion Porte (faite une fois et relai reste ouvert ensuite)
- if start:
- handleDoor()
- # Gestion microscope
- ##handleMicroscope()
- # Gestion lumieres
- handleLights()
- # Gestion Temps (affichage + detection bouton => RPI Master)
- handleLedring()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement