diff --git a/UI/AreaSettingWidget.py b/UI/AreaSettingWidget.py index 62cb8fb..934aaeb 100644 --- a/UI/AreaSettingWidget.py +++ b/UI/AreaSettingWidget.py @@ -7,6 +7,7 @@ class AreaSettingWidget(QDialog): def __init__(self, parent=None): super().__init__(parent) self.initUI() + def initUI(self): layout = QFormLayout() varType = QComboBox() @@ -19,6 +20,10 @@ class AreaSettingWidget(QDialog): channelBytes = QLineEdit() channelBytes.setObjectName('channelBytes') + + + + layout.addRow('协议类型:', varType) @@ -59,6 +64,11 @@ class AreaSettingWidget(QDialog): else: self.accept() # 所有输入都是数字且不为空时接受对话框 + def dataTypeTranslate(self, order): + self.dataTypeDict = {'不转换': 'ABCD', '字节转换': 'DCBA', '字转换': 'CDAB', '字转换': 'BADC'} + return self.dataTypeDict[order] + + if __name__ == '__main__': app = QApplication(sys.argv) window = AreaSettingWidget() diff --git a/UI/MainWindow.py b/UI/MainWindow.py index 3208733..b7238aa 100644 --- a/UI/MainWindow.py +++ b/UI/MainWindow.py @@ -44,15 +44,20 @@ class MainWindow(QMainWindow): self.addToolBar(self.toolbar) # self.setWindowState(self.windowState() | QtCore.Qt.WindowMaximized) - self.action1 = QAction("添加设备", self) - self.action1.setObjectName("action1") - self.action1.triggered.connect(self.createDeciveWidget) - self.action2 = QAction("开始通讯", self) - self.action2.setObjectName("action2") - self.action2.triggered.connect(self.startProtocol) + self.addDiviceBtn = QAction("添加设备", self) + self.addDiviceBtn.setObjectName("addDiviceBtn") + self.addDiviceBtn.triggered.connect(self.createDeciveWidget) - self.toolbar.addAction(self.action1) - self.toolbar.addAction(self.action2) + self.startProtocolBtn = QAction("开始通讯", self) + self.startProtocolBtn.setObjectName("startProtocolBtn") + self.startProtocolBtn.triggered.connect(self.startProtocol) + + # self.loadProjectBtn = QAction('导入工程', self) + # self.loadProjectBtn.setObjectName("loadProjectBtn") + # self.loadProjectBtn.triggered.connect(self.loadProject) + + self.toolbar.addAction(self.addDiviceBtn) + self.toolbar.addAction(self.startProtocolBtn) self.mdi_area = QMdiArea() # self.scrollArea = QScrollArea() @@ -97,7 +102,7 @@ class MainWindow(QMainWindow): horizontalLayout.addWidget(newbtn) horizontalLayout.addItem(self.horizontalSpacer) - horizontalLayout.addWidget(delbth) + # horizontalLayout.addWidget(delbth) newbtn.clicked.connect(lambda: self.newAreaWidget(sub_window)) delbth.clicked.connect(lambda: self.delAreaWidget(sub_window)) @@ -142,6 +147,7 @@ class MainWindow(QMainWindow): channelNums = area["nums"] channelBytes = area["bytes"] areaID = area['id'] + if masterSlaveModel == '主站': self.addAreaWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaID) else: @@ -202,28 +208,33 @@ class MainWindow(QMainWindow): areaLabel2 =QLabel('0') areaLineEdit = QLineEdit('0') editbtn = QPushButton('强制') + order = QComboBox() + order.addItems(['不转换', '字节转换', '字转换', '字内转换']) layout.addWidget(areaLabel, (i + number)//2, (i + number) % 2) layout.addWidget(areaLabel2, (i + number)//2, (i + number) % 2 + 1 ) layout.addWidget(areaLineEdit, (i + number)//2, (i + number) % 2 + 2 ) - layout.addWidget(editbtn, (i + number) // 2, (i + number) % 2 + 3) + layout.addWidget(order, (i + number)//2, (i + number) % 2 + 3) + layout.addWidget(editbtn, (i + number) // 2, (i + number) % 2 + 4) editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn)) - widgetList.append([layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit]) + widgetList.append([layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit, order]) else: areaLabel = QLabel(varType + str(i + 1) + ": " + channelByte + 'Byte') areaLabel2 = QLabel('0') areaLineEdit = QLineEdit('0') editbtn = QPushButton('强制') - - layout.addWidget(areaLabel, (i + number) // 2, (i + number) % 2 + 3) - layout.addWidget(areaLabel2, (i + number) // 2, (i + number) % 2 + 4) - layout.addWidget(areaLineEdit, (i + number) // 2, (i + number) % 2 + 5) - layout.addWidget(editbtn, (i + number) // 2, (i + number) % 2 + 6) + order = QComboBox() + order.addItems(['不转换', '字节转换', '字转换', '字内转换']) + layout.addWidget(areaLabel, (i + number) // 2, (i + number) % 2 + 4) + layout.addWidget(areaLabel2, (i + number) // 2, (i + number) % 2 + 6) + layout.addWidget(areaLineEdit, (i + number) // 2, (i + number) % 2 + 6) + layout.addWidget(order, (i + number)//2, (i + number) % 2 + 7) + layout.addWidget(editbtn, (i + number) // 2, (i + number) % 2 + 8) editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn)) - widgetList.append([layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit]) + widgetList.append([layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit, order]) if not self.areaDict.get(deviceName): self.areaDict[deviceName] = [widgetList] @@ -236,8 +247,8 @@ class MainWindow(QMainWindow): def delAreaWidget(self, subWindow): subwindow = subWindow - deviceName = sub_window.windowTitle() - areaLayout = sub_window.widget().widget().layout().itemAt(1).widget().layout() + deviceName = subwindow.windowTitle() + areaLayout = subwindow.widget().widget().layout().itemAt(1).widget().layout() if self.nowValue: @@ -307,8 +318,13 @@ class MainWindow(QMainWindow): for widgets in area: if btn in widgets: widgets[4].setText(widgets[5].text()) - forceValue + + order = self.dataTypeTranslate(widgets[6].currentText()) + print(order) + def dataTypeTranslate(self, order): + self.dataTypeDict = {'不转换': 'ABCD', '字节转换': 'DCBA', '字转换': 'CDAB', '字内转换': 'BADC'} + return self.dataTypeDict[order] # for item in self.nowValue: # if btn in item: # item[4].setText(item[5].text()) @@ -353,6 +369,7 @@ class AreaQMdiSubWindow(QMdiSubWindow): + if __name__ == '__main__': app = QApplication(sys.argv) Client.initDB() diff --git a/model/ProjectModel/AreaManage.py b/model/ProjectModel/AreaManage.py index 4a77ab0..0c880f0 100644 --- a/model/ProjectModel/AreaManage.py +++ b/model/ProjectModel/AreaManage.py @@ -154,6 +154,7 @@ class Devices(): "type": type, "nums": nums, "bytes": bytes, + }]) else: jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson) @@ -163,6 +164,7 @@ class Devices(): "type": type, "nums": nums, "bytes": bytes, + }) areaJson = json.dumps(jsonCon) DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute()