diff --git a/slave/main.py b/slave/main.py index 888f2ad..fd24b12 100644 --- a/slave/main.py +++ b/slave/main.py @@ -13,12 +13,9 @@ from image import Image import multiprocessing class App: - def __init__(self, client, x, y): + def __init__(self, x, y): self.x = x self.y = y - - - self.client = client self.video = Video(x, y) self.image = Image(x, y) self.videos = [join("slave/videos", f) for f in listdir("slave/videos") if isfile(join("slave/videos", f))] @@ -27,41 +24,17 @@ class App: self.lastimage = -1 print(self.videos) print(self.videos[randint(0, len(self.videos)-1)]) - - def on_connect(self, client, userdata, flags, rc): - print("Connected with result code "+str(rc)) - self.client.subscribe("slave") - - - def on_message(self, client, userdata, msg): - print(msg.topic+" "+str(msg.payload)) - if msg.payload == b'idle': - print("Idle") - self.x = multiprocessing.Process(target = self.idle) - self.x.start() - - elif msg.payload == b'stop': - print("Stop") - try: - self.x.terminate() - except: - pass - + def idle(self): last = -1 - while True: - try: - self.x.terminate() - except: - pass - + while True: # if i == last: # continue if randint(0,5) == 0: self.showimage() else: - self.playvideo() + self.playvideo() def showimage(self): totalimages = len(self.images)-1 @@ -72,7 +45,7 @@ class App: i = 0 self.lastimage = i self.image.show(self.images[i]) - cv2.waitKey(1000) + cv2.waitKey(10000) def playvideo(self): totalvideos = len(self.videos)-1 @@ -90,15 +63,8 @@ class App: def main(): - client = mqtt.Client() - app = App(client, int(sys.argv[1]), int(sys.argv[2])) - client.on_connect = app.on_connect - client.on_message = app.on_message - - client.connect("10.1.1.162", 1883, 60) - - client.loop_forever() - + app = App(int(sys.argv[1]), int(sys.argv[2])) + app.idle() if __name__ == "__main__": main() \ No newline at end of file diff --git a/slave/video.py b/slave/video.py index 6b41037..29693eb 100644 --- a/slave/video.py +++ b/slave/video.py @@ -2,6 +2,7 @@ from random import randint import cv2 import multiprocessing import time +import sys class Video: def __init__(self, x, y): @@ -27,7 +28,7 @@ class Video: delay = 1/fps * 1000 print(fps, delay) i = 0 - playframes = randint(50, 200) + playframes = randint(300, 500) while(self.cap.isOpened() ): i += 1 if i > playframes: @@ -45,14 +46,15 @@ class Video: cv2.imshow("window", frame) - if cv2.waitKey(int(delay)) == ord('q'): - break + if cv2.waitKey(int(delay)) & 0xFF == ord('q'): + self.cap.release() + cv2.destroyAllWindows() + sys.exit(0) # Break the loop else: break - #self.cap.release() - + self.cap.release() # Closes all the frames #cv2.destroyAllWindows()