Esempio n. 1
0
    def ProcessMessage(self, msg):
        hdr = msg.hdr

        # create identifying string for type and source of message
        msgRoute = Messaging.MsgRoute(msg)
        msgKey = msg.MsgName()
        if len(msgRoute) > 0 and not (all("0" == a for a in msgRoute)):
            msgKey += " (" + "->".join(msgRoute) + ")"

        if self.allowedMessages:
            if not msg.MsgName() in self.allowedMessages:
                return

        if (not (msgKey in self.msgWidgets)):
            # create a new tree widget
            try:
                keyField = self.keyFields[msg.MsgName()]
            except KeyError:
                keyField = None
            msgWidget = msgtools.lib.gui.MsgTreeWidget(type(msg), keyField)

            # connect to double-clicked signal to change scrolling globally
            msgWidget.itemDoubleClicked.connect(self.tableDataDoubleClicked)

            # add it to the tab widget, so the user can see it
            self.tabWidget.addTab(msgWidget, msgKey)

            # store a pointer to it, so we can find it next time (instead of creating it again)
            self.msgWidgets[msgKey] = msgWidget

        # give the data to the widget
        self.msgWidgets[msgKey].addData(msg, self.autoscroll)
Esempio n. 2
0
    def display_message_in_rx_list(self, msg_key, msg):
        rx_time = datetime.datetime.now()

        if not msg_key in self.rx_msg_list:
            widget_name = msg.MsgName()
            msg_route = Messaging.MsgRoute(msg)
            if len(msg_route) > 0 and not (all("0" == a for a in msg_route)):
                widget_name += " (" + "->".join(msg_route) + ")"
            msg_list_item = QTreeWidgetItem(
                [widget_name, str(rx_time), "- Hz"])
            msg_list_item.msg_key = msg_key
            msg_list_item.msg = msg

            self.rx_message_list.addTopLevelItem(msg_list_item)
            self.rx_message_list.resizeColumnToContents(0)
            self.rx_msg_list[msg_key] = msg_list_item

            # Initialize a Deque with an empty iterable with a maxlen of 10
            if self.thread_lock.acquire():
                self.rx_msg_list_timestamps[msg_key] = collections.deque([],
                                                                         10)
                self.thread_lock.release()

        if self.thread_lock.acquire():
            self.rx_msg_list_timestamps[msg_key].appendleft(rx_time)
            self.thread_lock.release()

        self.rx_msg_list[msg_key].setText(1, str(rx_time))
        self.rx_msg_list[msg_key].msg = msg
Esempio n. 3
0
    def ProcessMessage(self, msg):
        hdr = msg.hdr
        msg_id = hex(hdr.GetMessageID())

        msg_key = ",".join(Messaging.MsgRoute(msg)) + "," + msg_id

        self.display_message_in_rx_list(msg_key, msg)
        self.display_message_in_rx_tree(msg_key, msg)
        self.display_message_in_plots(msg_key, msg)
 def onRxMessageFieldSelected(self, rxWidgetItem):
     if isinstance(rxWidgetItem, txtreewidget.FieldItem) or isinstance(rxWidgetItem, txtreewidget.FieldArrayItem):
         fieldInfo = rxWidgetItem.fieldInfo
         msg_id = hex(rxWidgetItem.msg.hdr.GetMessageID())
         msg_key = ",".join(Messaging.MsgRoute(rxWidgetItem.msg)) + "," + msg_id
         try:
             msgPlot = self.addPlot(msg_key, type(rxWidgetItem.msg), rxWidgetItem.fieldName)
             if msgPlot:
                 msgPlot.addData(rxWidgetItem.msg)
         except MsgPlot.PlotError as e:
             QMessageBox.warning(self, "Message Scope", str(e))
Esempio n. 5
0
    def onRxMessageFieldSelected(self, rxWidgetItem):
        try:
            if isinstance(rxWidgetItem, txtreewidget.FieldItem) or isinstance(
                    rxWidgetItem, txtreewidget.FieldArrayItem):
                fieldInfo = rxWidgetItem.fieldInfo
                fieldIndex = 0
                if isinstance(rxWidgetItem, txtreewidget.FieldArrayItem):
                    fieldIndex = rxWidgetItem.index
                msg_id = hex(rxWidgetItem.msg.hdr.GetMessageID())
                plotListForID = []
                msg_key = ",".join(Messaging.MsgRoute(
                    rxWidgetItem.msg)) + "," + msg_id
                if msg_key in self.msgPlots:
                    plotListForID = self.msgPlots[msg_key]
                else:
                    self.msgPlots[msg_key] = plotListForID
                alreadyThere = False
                for plot in plotListForID:
                    for line in plot.lines:
                        if line.fieldInfo == fieldInfo and line.fieldSubindex == fieldIndex:
                            alreadyThere = True
                if not alreadyThere:
                    plotName = rxWidgetItem.msg.MsgName()
                    if plottingLoaded:
                        msgPlot = MsgPlot(type(rxWidgetItem.msg), fieldInfo,
                                          fieldIndex)
                        # add a dock widget for new plot
                        dockWidget = ClosableDockWidget(
                            plotName, self, msgPlot.plotWidget, msgPlot,
                            plotListForID)
                        self.addDockWidget(Qt.RightDockWidgetArea, dockWidget)
                        # Change title when plot is paused/resumed
                        msgPlot.Paused.connect(
                            lambda paused: dockWidget.setWindowTitle(
                                plotName + " (PAUSED)"
                                if paused else plotName))

                        plotListForID.append(msgPlot)
                        msgPlot.addData(rxWidgetItem.msg)
        except AttributeError:
            pass
    def display_message_in_rx_list(self, msg_key, msg):
        rx_time = datetime.now()

        if not msg_key in self.rx_msg_list:
            widget_name = msg.MsgName()
            msg_route = Messaging.MsgRoute(msg)
            if len(msg_route) > 0 and not(all ("0" == a for a in msg_route)):
                widget_name += " ("+",".join(msg_route)+")"
            msg_list_item = QTreeWidgetItem([ widget_name, rx_time.strftime('%H:%M:%S.%f')[:-3], "- Hz" ])
            msg_list_item.msg_key = msg_key
            msg_list_item.msg = msg
            msg_list_item.rx_count = 1
            msg_list_item.avg_rate = 1.0

            self.rx_message_list.addTopLevelItem(msg_list_item)
            self.rx_message_list.resizeColumnToContents(0)
            self.rx_msg_list[msg_key] = msg_list_item

        self.rx_msg_list[msg_key].setText(1, rx_time.strftime('%H:%M:%S.%f')[:-3])
        self.rx_msg_list[msg_key].msg = msg
        self.rx_msg_list[msg_key].rx_count += 1