def data(self, qIndex, role=None): # qIndex is the qIndex of the column/row. keyList = list(self.hashedDatagrams.keys()) if role == Qt.DisplayRole: period = self.hashedDatagrams[keyList[qIndex.row()]][0] count = self.hashedDatagrams[keyList[qIndex.row()]][1] datagram = self.hashedDatagrams[keyList[qIndex.row()]][2] if qIndex.column() == 0: return str(period) elif qIndex.column() == 1: return str(count) elif qIndex.column() == 3: return str(datagram.messageID) elif qIndex.column() == 4: if datagram.data == None: return "" else: return str( datagram.dataToString(displayFlag=self.displayFlag)) if role == Qt.DecorationRole: datagram = self.hashedDatagrams[keyList[qIndex.row()]][2] if qIndex.column() == 2: if datagram.getDatagramTypeCode() == "R": return GUIToolKit.getIconByName("reddot") elif datagram.getDatagramTypeCode() == "r": return GUIToolKit.getIconByName("bluedot") elif datagram.getDatagramTypeCode() == "T": return GUIToolKit.getIconByName("orangedot") elif datagram.getDatagramTypeCode() == "t": return GUIToolKit.getIconByName("greendot") if role == Qt.TextAlignmentRole: if qIndex.column() == 1: return Qt.AlignVCenter + Qt.AlignCenter if qIndex.column() == 3: return Qt.AlignVCenter + Qt.AlignRight
def connectDisconnectSnnifer(self): if self.sniffer.isConnected: # Diconnect Serial Action self.sniffer.disconnectSerial() self.connectDisconnectButton.setIcon( GUIToolKit.getIconByName("connect")) self.connectDisconnectButton.setText("Serial connect") self.startStopButton.setEnabled(False) self.serialPortComboBox.setEnabled(True) self.rebootButton.setEnabled(False) self.modeLabel.setEnabled(False) self.canbitrateLabel.setEnabled(False) self.busSpeedComboBox.setEnabled(False) self.modeComboBox.setEnabled(False) else: # Connect Serial Action self.sniffer.serialPortName = self.serialPortComboBox.currentText() self.sniffer.connectSerial() self.connectDisconnectButton.setIcon( GUIToolKit.getIconByName("disconnect")) self.connectDisconnectButton.setText("Serial disconnect") self.startStopButton.setEnabled(True) self.startStopButton.setIcon(GUIToolKit.getIconByName("start")) self.startStopButton.setText("Start") self.serialPortComboBox.setEnabled(False) self.sniffer.isSnifing = False self.modeLabel.setEnabled(True) self.canbitrateLabel.setEnabled(True) self.busSpeedComboBox.setEnabled(True) self.modeComboBox.setEnabled(True) self.rebootButton.setEnabled(True)
def data(self, index, role=None): if role == Qt.DisplayRole: timestamp = self.datagramsTimedList[index.row()][0] datagram = self.datagramsTimedList[index.row()][1] if index.column() == 0: return str(timestamp) elif index.column() == 2: return str(datagram.messageID) elif index.column() == 3: return str(datagram.dlc) elif index.column() == 4: if datagram.data == None: return "" else: return str( datagram.dataToString(displayFlag=self.displayFlag)) if role == Qt.DecorationRole: datagram = self.datagramsTimedList[index.row()][1] if index.column() == 1: if datagram.getDatagramTypeCode() == "R": return GUIToolKit.getIconByName("reddot") elif datagram.getDatagramTypeCode() == "r": return GUIToolKit.getIconByName("bluedot") elif datagram.getDatagramTypeCode() == "T": return GUIToolKit.getIconByName("orangedot") elif datagram.getDatagramTypeCode() == "t": return GUIToolKit.getIconByName("greendot") if role == Qt.TextAlignmentRole: if index.column() == 3: return Qt.AlignVCenter + Qt.AlignCenter if index.column() == 2: return Qt.AlignVCenter + Qt.AlignRight
def reapetChecked(self): if self.repeatCheckBox.isChecked(): self.periodEdit.setEnabled(True) self.msLabel.setEnabled(True) self.sendStartStopButton.setText("Start") self.sendStartStopButton.setIcon(GUIToolKit.getIconByName("start")) else: self.periodEdit.setEnabled(False) self.msLabel.setEnabled(False) self.sendStartStopButton.setText("Send") self.sendStartStopButton.setIcon(GUIToolKit.getIconByName("send"))
def sendStartStopAction(self): if self.repeatCheckBox.isChecked(): if self.sendLoopActive is True: # Pause self.sendLoopActive = False self.sendStartStopButton.setText("Start") self.sendStartStopButton.setIcon( GUIToolKit.getIconByName("start")) self.setDatagramEditionEnable(True) self.stopSendingLoop() else: # Start self.sendLoopActive = True self.sendStartStopButton.setText("Stop") self.sendStartStopButton.setIcon( GUIToolKit.getIconByName("stop")) self.setDatagramEditionEnable(False) self.startSendingLoop() else: # Send a single datagram datagram = self.grabDatagram() self.sendDatagram(datagram)
def startStopSnifer(self): if self.sniffer.isSnifing: # Stop Action self.startStopButton.setText("Start") self.startStopButton.setIcon(GUIToolKit.getIconByName("start")) self.clearButton.setEnabled(True) self.canbitrateLabel.setEnabled(True) self.modeLabel.setEnabled(True) self.modeComboBox.setEnabled(True) self.busSpeedComboBox.setEnabled(True) self.stopSnifing() else: # Start Action self.startStopButton.setText("Stop") self.startStopButton.setIcon(GUIToolKit.getIconByName("stop")) self.snniferStarts.emit(str(self.current_milli_time())) self.clearButton.setEnabled(False) self.canbitrateLabel.setEnabled(False) self.modeLabel.setEnabled(False) self.modeComboBox.setEnabled(False) self.busSpeedComboBox.setEnabled(False) self.statrtSnifing()
def __init__(self, parent=None, sniffer=None): """Constructor for ToolsWidget""" super().__init__(parent) self.setObjectName("sniffercontrlwidget") self.sniffer = sniffer self.gridLayout = QtWidgets.QGridLayout(self) self.gridLayout.setObjectName("horizontalLayout") self.serialPortLabel = QtWidgets.QLabel(self) self.serialPortLabel.setObjectName("serialPortLabel") self.gridLayout.addWidget(self.serialPortLabel, 1, 0, 1, 1) self.serialPortComboBox = SerialPortComboBox(self) self.serialPortComboBox.setEditable(False) self.serialPortComboBox.setObjectName("serialPortComboBox") self.serialPortComboBox.setMinimumWidth(150) self.gridLayout.addWidget(self.serialPortComboBox, 1, 2, 1, 1) self.canbitrateLabel = QtWidgets.QLabel(self) self.canbitrateLabel.setObjectName("sepeedBusLabel") self.gridLayout.addWidget(self.canbitrateLabel, 2, 0, 1, 1) self.busSpeedComboBox = QtWidgets.QComboBox(self) self.busSpeedComboBox.setObjectName("busSpeedComboBox") self.busSpeedComboBox.addItems(self.sniffer.canBusBitRates.keys()) self.busSpeedComboBox.setMinimumWidth(120) self.gridLayout.addWidget(self.busSpeedComboBox, 2, 2, 1, 1) self.modeLabel = QtWidgets.QLabel(self) self.modeLabel.setObjectName("modeLabel") self.gridLayout.addWidget(self.modeLabel, 1, 3, 1, 1) self.modeComboBox = QtWidgets.QComboBox(self) self.modeComboBox.setObjectName("modeComboBox") self.modeComboBox.addItems(self.sniffer.canBusModes.keys()) self.modeComboBox.setMinimumWidth(120) self.gridLayout.addWidget(self.modeComboBox, 1, 4, 1, 1) self.connectDisconnectButton = QtWidgets.QPushButton(self) self.connectDisconnectButton.setObjectName("connectDisconnectButton") self.connectDisconnectButton.clicked.connect( self.connectDisconnectSnnifer) self.connectDisconnectButton.setMinimumWidth(120) self.connectDisconnectButton.setIcon( GUIToolKit.getIconByName("connect")) self.gridLayout.addWidget(self.connectDisconnectButton, 1, 6, 1, 1) self.startStopButton = QtWidgets.QPushButton(self) self.startStopButton.setIcon(GUIToolKit.getIconByName("start")) self.startStopButton.setObjectName("startStopButton") self.startStopButton.clicked.connect(self.startStopSnifer) self.startStopButton.setMinimumWidth(120) self.startStopButton.setEnabled(False) self.gridLayout.addWidget(self.startStopButton, 2, 6, 1, 1) self.clearButton = QtWidgets.QPushButton(self) self.clearButton.setObjectName("clearButton") self.clearButton.setMinimumWidth(120) self.clearButton.setIcon(GUIToolKit.getIconByName("delete")) self.gridLayout.addWidget(self.clearButton, 1, 7, 1, 1) self.rebootButton = QtWidgets.QPushButton(self) self.rebootButton.setObjectName("rebootButton") self.rebootButton.setIcon(GUIToolKit.getIconByName("reboot")) self.rebootButton.setMinimumWidth(120) self.gridLayout.addWidget(self.rebootButton, 2, 7, 1, 1) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem, 1, 5, 1, 1) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) # self.statuslineEdit = QtWidgets.QLineEdit(self) # self.statuslineEdit.setObjectName("statuslineEdit") # self.statuslineEdit.setEnabled(False) self.gridLayout.addItem(spacerItem, 2, 3, 1, 3) self.serialPortLabel.setText("Serial Port") self.canbitrateLabel.setText("CAN Bit rate") self.modeLabel.setText("Mode") self.connectDisconnectButton.setText("Serial connect") self.startStopButton.setText("Start") self.clearButton.setText("Clear tables") self.rebootButton.setText("Reboot sniffer") self.rebootButton.setEnabled(False) self.clearButton.setEnabled(False) self.modeLabel.setEnabled(False) self.canbitrateLabel.setEnabled(False) self.busSpeedComboBox.setEnabled(False) self.modeComboBox.setEnabled(False) self.modeComboBox.currentTextChanged.connect(self.sendModeCommand) self.busSpeedComboBox.currentTextChanged.connect( self.sendBitrateCommand) self.rebootButton.clicked.connect(self.rebbotAction)
def __init__(self, parent=None, tablesWidget=None): """Constructor for ToolsWidget""" super().__init__(parent) self.setObjectName("tableConrrolWidget") self.setTitle("Tables vizualization control") self.horizontalLayout = QtWidgets.QHBoxLayout(self) self.horizontalLayout.setObjectName("horizontalLayout") self.standardDataLabelImege = QtWidgets.QLabel(self) pixmap = GUIToolKit.getIconByName("greendot").pixmap( (QtCore.QSize(16, 16))) self.standardDataLabelImege.setPixmap(pixmap) self.horizontalLayout.addWidget(self.standardDataLabelImege) self.standardDataLabel = QtWidgets.QLabel(self) self.standardDataLabel.setObjectName("standardDataLabel") self.standardDataLabel.setText("Standard data") self.horizontalLayout.addWidget(self.standardDataLabel) self.extndedDataLabelImege = QtWidgets.QLabel(self) pixmap = GUIToolKit.getIconByName("orangedot").pixmap( (QtCore.QSize(16, 16))) self.extndedDataLabelImege.setPixmap(pixmap) self.horizontalLayout.addWidget(self.extndedDataLabelImege) self.extndedDataLabel = QtWidgets.QLabel(self) self.extndedDataLabel.setObjectName("standardDataLabel") self.extndedDataLabel.setText("Extended data") self.horizontalLayout.addWidget(self.extndedDataLabel) self.standardRTLabelImage = QtWidgets.QLabel(self) pixmap = GUIToolKit.getIconByName("bluedot").pixmap( (QtCore.QSize(16, 16))) self.standardRTLabelImage.setPixmap(pixmap) self.horizontalLayout.addWidget(self.standardRTLabelImage) self.standardRTRLabel = QtWidgets.QLabel(self) self.standardRTRLabel.setObjectName("standardRTRCheckBox") self.standardRTRLabel.setText("Standard RTR") self.horizontalLayout.addWidget(self.standardRTRLabel) self.extendedRTRLabelImege = QtWidgets.QLabel(self) pixmap = GUIToolKit.getIconByName("reddot").pixmap( (QtCore.QSize(16, 16))) self.extendedRTRLabelImege.setPixmap(pixmap) self.horizontalLayout.addWidget(self.extendedRTRLabelImege) self.extendedRTRLabel = QtWidgets.QLabel(self) self.extendedRTRLabel.setObjectName("standardRTRCheckBox") self.extendedRTRLabel.setText("Extended RTR") self.horizontalLayout.addWidget(self.extendedRTRLabel) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.label = QtWidgets.QLabel(self) self.label.setObjectName("label") self.label.setText("Display mode") self.horizontalLayout.addWidget(self.label) self.displayModeComboBox = QtWidgets.QComboBox(self) self.displayModeComboBox.setObjectName("displayModeComboBox") self.displayModeComboBox.addItem("Hexadecimal") self.displayModeComboBox.addItem("ASCII") self.displayModeComboBox.addItem("Binary") self.displayModeComboBox.currentTextChanged.connect( self.displayModeAction) self.horizontalLayout.addWidget(self.displayModeComboBox) self.tablesWidget = tablesWidget
def __init__(self, parent=None, sniffer=None): """Constructor for ToolsWidget""" super().__init__(parent) self.snifferDevice = sniffer self.repeatThread = CANMessengerDaemonSender() self.setObjectName("sendCANDatagramsWidget") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.sendDatagramsWidget = QtWidgets.QWidget(self) self.sendDatagramsWidget.setObjectName("sendDatagramsWidget") self.gridLayout = QtWidgets.QGridLayout(self.sendDatagramsWidget) self.gridLayout.setObjectName("gridLayout") self.messageLabel = QtWidgets.QLabel(self.sendDatagramsWidget) self.messageLabel.setObjectName("messageLabel") self.gridLayout.addWidget(self.messageLabel, 0, 0, 1, 1) self.messageLabel.setText("ID ") self.messageIDEdit = self.ByteEditLine(self.sendDatagramsWidget) self.messageIDEdit.setObjectName("messageIDEdit") self.messageIDEdit.setValidator(QtGui.QIntValidator()) self.messageIDEdit.setAlignment(QtCore.Qt.AlignCenter) self.messageIDEdit.setMaxLength(4) self.messageIDEdit.setText("0") self.messageIDEdit.setMinimumWidth(100) self.gridLayout.addWidget(self.messageIDEdit, 0, 1, 1, 2) self.byte0Label = QtWidgets.QLabel(self.sendDatagramsWidget) self.byte0Label.setObjectName("byte0Label") self.gridLayout.addWidget(self.byte0Label, 0, 4, 1, 1) self.byte4Label = QtWidgets.QLabel(self.sendDatagramsWidget) self.byte4Label.setObjectName("byte4Label") self.gridLayout.addWidget(self.byte4Label, 1, 4, 1, 1) self.spinBoxDLC = QtWidgets.QSpinBox(self.sendDatagramsWidget) self.spinBoxDLC.setObjectName("spinBoxDLC") self.spinBoxDLC.setValue(8) self.spinBoxDLC.valueChanged.connect(self.chabgedNumberOfDLC) self.gridLayout.addWidget(self.spinBoxDLC, 1, 1, 1, 2) self.spinBoxDLC.setAlignment(QtCore.Qt.AlignCenter) self.byte3Edit = self.ByteEditLine(self.sendDatagramsWidget) self.byte3Edit.setObjectName("byte3Edit") self.gridLayout.addWidget(self.byte3Edit, 0, 15, 1, 1) self.byte1Edit = self.ByteEditLine(self.sendDatagramsWidget) self.byte1Edit.setObjectName("byte1Edit") self.gridLayout.addWidget(self.byte1Edit, 0, 7, 1, 1) self.byte4Edit = self.ByteEditLine(self.sendDatagramsWidget) self.byte4Edit.setObjectName("byte4Edit") self.gridLayout.addWidget(self.byte4Edit, 1, 5, 1, 1) self.rtrCheckBox = QtWidgets.QCheckBox(self.sendDatagramsWidget) self.rtrCheckBox.setObjectName("rtrCheckBox") self.gridLayout.addWidget(self.rtrCheckBox, 1, 16, 1, 1) self.dlcLabel = QtWidgets.QLabel(self.sendDatagramsWidget) self.dlcLabel.setObjectName("dlcLabel") self.gridLayout.addWidget(self.dlcLabel, 1, 0, 1, 1) self.dlcLabel.setText("DLC") self.byte5Edit = self.ByteEditLine(self.sendDatagramsWidget) self.byte5Edit.setObjectName("byte5Edit") self.gridLayout.addWidget(self.byte5Edit, 1, 7, 1, 1) self.byte6Edit = self.ByteEditLine(self.sendDatagramsWidget) self.byte6Edit.setObjectName("byte7Edit") self.gridLayout.addWidget(self.byte6Edit, 1, 13, 1, 1) self.byte5Label = QtWidgets.QLabel(self.sendDatagramsWidget) self.byte5Label.setObjectName("byte5Label") self.gridLayout.addWidget(self.byte5Label, 1, 6, 1, 1) self.byte1Label = QtWidgets.QLabel(self.sendDatagramsWidget) self.byte1Label.setObjectName("byte1Label") self.gridLayout.addWidget(self.byte1Label, 0, 6, 1, 1) self.byte6Label = QtWidgets.QLabel(self.sendDatagramsWidget) self.byte6Label.setObjectName("byte6Label") self.gridLayout.addWidget(self.byte6Label, 1, 8, 1, 1) self.byte2Label = QtWidgets.QLabel(self.sendDatagramsWidget) self.byte2Label.setObjectName("byte2Label") self.gridLayout.addWidget(self.byte2Label, 0, 8, 1, 1) self.byte2Edit = self.ByteEditLine(self.sendDatagramsWidget) self.byte2Edit.setObjectName("byte2Edit") self.gridLayout.addWidget(self.byte2Edit, 0, 13, 1, 1) self.byte0Edit = self.ByteEditLine(self.sendDatagramsWidget) self.byte0Edit.setObjectName("byte0Edit") self.gridLayout.addWidget(self.byte0Edit, 0, 5, 1, 1) self.byte7Edit = self.ByteEditLine(self.sendDatagramsWidget) self.byte7Edit.setObjectName("byte7Edit") self.gridLayout.addWidget(self.byte7Edit, 1, 15, 1, 1) self.extendedCheckBox = QtWidgets.QCheckBox(self.sendDatagramsWidget) self.extendedCheckBox.setObjectName("extendedCheckBox") self.gridLayout.addWidget(self.extendedCheckBox, 0, 16, 1, 1) self.extendedCheckBox.stateChanged.connect(self.updateMessageEditMode) self.byte3Label = QtWidgets.QLabel(self.sendDatagramsWidget) self.byte3Label.setObjectName("byte3Label") self.gridLayout.addWidget(self.byte3Label, 0, 14, 1, 1) self.byte7Label = QtWidgets.QLabel(self.sendDatagramsWidget) self.byte7Label.setObjectName("byte7Label") self.gridLayout.addWidget(self.byte7Label, 1, 14, 1, 1) self.horizontalLayout_2.addWidget(self.sendDatagramsWidget) self.senControlWidget = QtWidgets.QWidget(self) self.senControlWidget.setObjectName("senControlWidget") self.gridLayout_2 = QtWidgets.QGridLayout(self.senControlWidget) self.gridLayout_2.setObjectName("gridLayout_2") self.periodEdit = QtWidgets.QLineEdit(self.senControlWidget) self.periodEdit.setObjectName("periodEdit") self.periodEdit.setMinimumWidth(75) self.periodEdit.setText("100") self.periodEdit.setValidator(QtGui.QIntValidator()) self.periodEdit.setAlignment(QtCore.Qt.AlignCenter) self.periodEdit.setEnabled(False) self.gridLayout_2.addWidget(self.periodEdit, 0, 1, 1, 1) self.repeatCheckBox = QtWidgets.QCheckBox(self.senControlWidget) self.repeatCheckBox.setObjectName("repeatCheckBox") self.gridLayout_2.addWidget(self.repeatCheckBox, 0, 0, 1, 1) self.periodEdit.setEnabled(False) self.msLabel = QtWidgets.QLabel(self.senControlWidget) self.msLabel.setObjectName("msLabel") self.msLabel.setEnabled(False) self.gridLayout_2.addWidget(self.msLabel, 0, 2, 1, 1) self.sendStartStopButton = QtWidgets.QPushButton(self.senControlWidget) self.sendStartStopButton.setObjectName("sendStartStopButton") self.sendStartStopButton.setIcon(GUIToolKit.getIconByName("send")) self.sendStartStopButton.clicked.connect(self.sendStartStopAction) self.gridLayout_2.addWidget(self.sendStartStopButton, 1, 0, 1, 3) self.horizontalLayout_2.addWidget(self.senControlWidget) self.byte0Label.setText("Byte 0") self.byte4Label.setText("Byte 4") self.byte3Label.setText("Byte 3") self.byte7Label.setText("Byte 7") self.rtrCheckBox.setText("RTR") self.byte5Label.setText("Byte 5") self.byte1Label.setText("Byte 1") self.byte6Label.setText("Byte 6") self.byte2Label.setText("Byte 2") self.extendedCheckBox.setText("Extended") self.repeatCheckBox.setText("Repeat") self.msLabel.setText("ms") self.sendStartStopButton.setText("Send") self.repeatCheckBox.stateChanged.connect(self.reapetChecked) self.sendLoopActive = False self.setTitle("Send datagrams") self.dataByteLineEditList = [ self.byte0Edit, self.byte1Edit, self.byte2Edit, self.byte3Edit, self.byte4Edit, self.byte5Edit, self.byte6Edit, self.byte7Edit, ] self.dataByteLabelList = [ self.byte0Label, self.byte1Label, self.byte2Label, self.byte3Label, self.byte4Label, self.byte5Label, self.byte6Label, self.byte7Label, ] font = QtGui.QGuiApplication.font() font.setCapitalization(QtGui.QFont.AllUppercase) hexValidator = QtGui.QRegExpValidator( QtCore.QRegExp("(?:[0-9a-fA-F]{2},)*[0-9a-fA-F]{0,2}")) for edit in self.dataByteLineEditList: edit.setValidator(hexValidator) edit.setFont(font) edit.setAlignment(QtCore.Qt.AlignCenter) self.repeatThread.senDatagramSignal.connect(self.sendDatagram) self.rtrCheckBox.clicked.connect(self.rtrAction) self.setEnabled(False)
def getTabIcon(self): return GUIToolKit.getIconByName("canbus")