From 30ce09e9ec4956d477c660805b77b920db7f4d66 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" <robin.mueller.m@gmail.com> Date: Sat, 7 Mar 2020 17:50:06 +0100 Subject: [PATCH] gui testingf continued --- OBSW_TmTcClient.py | 14 +++++++--- gui/{OBSW_ClientTest.py => Client.py} | 0 gui/{OBSW_ListenerTest.py => Listener.py} | 2 +- gui/OBSW_BackendTest.py | 30 ++++++++++++++++++++++ gui/OBSW_TmtcGUI.py | 31 ++++++++++++++++++----- 5 files changed, 66 insertions(+), 11 deletions(-) rename gui/{OBSW_ClientTest.py => Client.py} (100%) rename gui/{OBSW_ListenerTest.py => Listener.py} (88%) create mode 100644 gui/OBSW_BackendTest.py diff --git a/OBSW_TmTcClient.py b/OBSW_TmTcClient.py index 56bf0ce..4e8d08b 100644 --- a/OBSW_TmTcClient.py +++ b/OBSW_TmTcClient.py @@ -57,6 +57,7 @@ import atexit import queue import unittest import logging +from multiprocessing import Process from test import OBSW_PusServiceTest from config import OBSW_Config as g @@ -69,7 +70,8 @@ from utility.OBSW_ArgParser import parseInputArguments from utility.OBSW_TmTcPrinter import TmtcPrinter from comIF.OBSW_Ethernet_ComIF import EthernetComIF from comIF.OBSW_Serial_ComIF import SerialComIF -from gui.OBSW_TmtcGUI import TmtcGUI +from gui.OBSW_TmtcGUI import TmTcGUI +from gui.OBSW_BackendTest import TmTcBackend from utility.OBSW_ExitHandler import keyboardInterruptHandler @@ -79,8 +81,14 @@ def main(): tmtcPrinter = TmtcPrinter(g.displayMode, g.printToFile, True) communicationInterface = 0 if g.modeId == "GUIMode": - GUI = TmtcGUI() - GUI.open() + backend = TmTcBackend() + backend.start() + GUI = TmTcGUI() + GUI.start() + backend.join() + GUI.join() + print("Both processes have closed") + exit() else: communicationInterface = setCommunicationInterface(tmtcPrinter) atexit.register(keyboardInterruptHandler, comInterface=communicationInterface) diff --git a/gui/OBSW_ClientTest.py b/gui/Client.py similarity index 100% rename from gui/OBSW_ClientTest.py rename to gui/Client.py diff --git a/gui/OBSW_ListenerTest.py b/gui/Listener.py similarity index 88% rename from gui/OBSW_ListenerTest.py rename to gui/Listener.py index b675d2c..3d65092 100644 --- a/gui/OBSW_ListenerTest.py +++ b/gui/Listener.py @@ -1,4 +1,5 @@ from multiprocessing.connection import Listener +from multiprocessing import Process address = ('localhost', 6000) # family is deduced to be 'AF_INET' listener = Listener(address, authkey=None) @@ -7,7 +8,6 @@ print('connection accepted from' + str(listener.last_accepted)) while True: msg = conn.recv() # do something with msg - print("I received something") if msg == 'close': conn.close() break diff --git a/gui/OBSW_BackendTest.py b/gui/OBSW_BackendTest.py new file mode 100644 index 0000000..a17f957 --- /dev/null +++ b/gui/OBSW_BackendTest.py @@ -0,0 +1,30 @@ +from multiprocessing.connection import Listener +from multiprocessing import Process +import logging + + +class TmTcBackend(Process): + def __init__(self): + super(TmTcBackend, self).__init__() + self.address = ('localhost', 6000) # family is deduced to be 'AF_INET' + self.listener = Listener(self.address, authkey=None) + self.conn = 0 + + def run(self): + self.listen() + + def listen(self): + self.conn = self.listener.accept() + print('connection accepted from' + str(self.listener.last_accepted)) + while True: + msg = self.conn.recv() + # do something with msg + if msg == 'test': + print("Hallo Welt !") + elif msg == 'close': + try: + self.conn.close() + break + except OSError: + logging.exception("Error: ") + self.listener.close() diff --git a/gui/OBSW_TmtcGUI.py b/gui/OBSW_TmtcGUI.py index 6f89bd5..b55b160 100644 --- a/gui/OBSW_TmtcGUI.py +++ b/gui/OBSW_TmtcGUI.py @@ -13,8 +13,10 @@ @author: R. Mueller """ -from tkinter import Tk +import tkinter as tk from multiprocessing.connection import Client +from multiprocessing import Process +import time # A first simple version has drop down menus to chose all necessary options @@ -24,16 +26,31 @@ from multiprocessing.connection import Client # A third button to perform a keyboard interrupt should be implemented # include a really nice source badge and make it large ! # plan this on paper first... -class TmtcGUI: +class TmTcGUI(Process): def __init__(self): - self.window = Tk() + super(TmTcGUI, self).__init__() + self.root = None self.address = ('localhost', 6000) self.conn = Client(self.address, authkey=None) + self.counter = 0 + + def run(self): + self.open() def open(self): - self.window.title("Hallo Welt") - self.window.mainloop() - self.conn.send("close") + self.root = tk.Tk("Hallo Welt !") + self.root.title("Hallo Welt") + while True: + self.conn.send("test") + self.root.update() + time.sleep(2) + self.counter = self.counter + 1 + if self.counter == 3: + self.conn.send("close") + self.conn.close() + break + # self.window.mainloop() def close(self): - self.window.quit() + pass + # self.window.quit() -- GitLab