|
|
|
@ -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()
|
|
|
|
|