コード例 #1
0
class AppWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_mainWindow()
        self.styleFile = open("styles.qss").read()
        self.setStyleSheet(self.styleFile)
        self.ui.setupUi(self)
        self.socketThread = None
        #self.show()
        self.listSerialDevices()
        self.ui.buttonConnect.clicked.connect(self.openMonitor)

    def openMonitor(self):
        print("opening monitor")
        self.connectToSerialDevices()
        #self.socketThread = None
        self.monitor_window = QWidget()
        self.monitor_window.setStyleSheet(self.styleFile)
        self.monitor = Ui_Monitor()
        self.monitor.setupUi(self.monitor_window)
        self.close()
        self.monitor_window.show()
        self.console = ConsoleWidget()
        self.monitor.console.addWidget(self.console)
        self.runServer()
        self.openSockets()
        self.initNFFSim()

    def listSerialDevices(self):
        comlist = serial.tools.list_ports.comports()
        for x in comlist:
            self.ui.sc_port.addItem(x.device)
            self.ui.ub_port.addItem(x.device)

    def connectToSerialDevices(self):
        sc_port = self.ui.sc_port.itemText(self.ui.sc_port.currentIndex())
        ub_port = self.ui.ub_port.itemText(self.ui.ub_port.currentIndex())
        self.serialManager = SerialManager(sc_port, ub_port,
                                           config.SERIAL_PUBLISH,
                                           config.SERIAL_SUBSCRIBE,
                                           config.SERIAL_NFF_SUBSCRIBE)
        self.serialManager.start()

    def runServer(self):
        self.server = Server(self.monitor, config.SERVER_SUBSCRIBE,
                             config.SERVER_PUBLISH)
        self.server.start()

    def openSockets(self):
        print("opening gui sockets")
        try:
            context = zmq.Context()
            self.telemSocket = context.socket(zmq.SUB)
            self.telemSocket.connect(config.GUI_SUBSCRIBE)
            self.telemSocket.setsockopt_string(zmq.SUBSCRIBE, '')

            self.commandSocket = context.socket(zmq.PUB)
            self.commandSocket.bind(config.GUI_PUBLISH)
            # print("sockets open")
        except (zmq.ZMQError, zmq.ZMQBindError) as err:
            print("Error: {}".format(err))
            return

        if (self.socketThread is not None):
            self.socketThread.terminate()
            self.socketThread.socket.close()

        self.socketThread = SocketMonitor(self.telemSocket)
        self.socketThread.signal.connect(self.gotSig)
        self.socketThread.start()

    def initNFFSim(self):
        self.nffSim = NFFSim(self.monitor, config.NFF_PUBLISH)
        self.monitor.run_sim.clicked.connect(self.nffSim.start)
        self.monitor.pause_sim.clicked.connect(self.nffSim.pause)
        self.monitor.abort_sim.clicked.connect(self.nffSim.stop)

    def gotSig(self, msg):
        #print("\nReceived New Packet...")
        # print(msg)
        for key in msg:
            # print(key)
            # print(msg[key][0])
            if self.monitor.nff_groupbox.findChild(QLabel, key):
                item = self.monitor.nff_groupbox.findChild(QLabel, key)
            elif self.monitor.sc_groupbox.findChild(QLabel, key):
                item = self.monitor.sc_groupbox.findChild(QLabel, key)
            elif self.monitor.ub_groupbox.findChild(QLabel, key):
                item = self.monitor.ub_groupbox.findChild(QLabel, key)
            else:
                continue
            item.setText(str(msg[key][0]))
            if msg[key][1] == 1:
                item.setStyleSheet('color: #f93943')  #red
            else:
                item.setStyleSheet('color: #063D23')  #green