|
|
|
@ -33,9 +33,8 @@ class MainWindow(QMainWindow):
|
|
|
|
|
self.sub_windows = [] #存储设备widget
|
|
|
|
|
self.nowValue = [] #储存当前值
|
|
|
|
|
self.areaLabel = [] #存储通道信息文本
|
|
|
|
|
self.arealist = {}
|
|
|
|
|
self.areaDict = {}
|
|
|
|
|
self.widgetList= []
|
|
|
|
|
self.arealists = []
|
|
|
|
|
self.initUI()
|
|
|
|
|
self.initAreaWidget()
|
|
|
|
|
|
|
|
|
@ -143,14 +142,14 @@ class MainWindow(QMainWindow):
|
|
|
|
|
channelNums = area["nums"]
|
|
|
|
|
channelBytes = area["bytes"]
|
|
|
|
|
areaID = area['id']
|
|
|
|
|
print(masterSlaveModel)
|
|
|
|
|
if masterSlaveModel == '主站':
|
|
|
|
|
self.addChannelWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaID)
|
|
|
|
|
self.addAreaWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaID)
|
|
|
|
|
else:
|
|
|
|
|
self.addChannelWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaID)
|
|
|
|
|
self.addAreaWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaID)
|
|
|
|
|
number = number + int(channelNums)
|
|
|
|
|
self.nowValue.append(self.arealist)
|
|
|
|
|
print(self.nowValue, 'aaaaaa')
|
|
|
|
|
self.nowValue.append(self.areaDict)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def createDeciveWidget(self):
|
|
|
|
@ -175,22 +174,19 @@ class MainWindow(QMainWindow):
|
|
|
|
|
number = DevicesManange.getChannelLength(deviceName)
|
|
|
|
|
Device().addAreas(varType, channelNums, channelBytes, deviceName)
|
|
|
|
|
areaId = Device().getAreaID(deviceName)[-1]
|
|
|
|
|
# Device().addDevice(deviceName, channelNums, channelBytes)
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
return
|
|
|
|
|
layout = sub_window.widget().widget().layout().itemAt(1).widget().layout() #获取sub_window的widgetArea的areaLayout2
|
|
|
|
|
self.addChannelWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaId)
|
|
|
|
|
self.addAreaWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaId)
|
|
|
|
|
|
|
|
|
|
number += int(channelNums)
|
|
|
|
|
|
|
|
|
|
# self.nowValue.append(self.arealist)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def addChannelWidget(self,deviceNames, numbers, channelNums, channelBytes , varTypes, layouts ,ID):
|
|
|
|
|
def addAreaWidget(self,deviceNames, numbers, channelNums, channelBytes , varTypes, layouts ,ID):
|
|
|
|
|
deviceName = deviceNames
|
|
|
|
|
number = numbers
|
|
|
|
|
channelNum = channelNums
|
|
|
|
@ -200,7 +196,6 @@ class MainWindow(QMainWindow):
|
|
|
|
|
ID = ID
|
|
|
|
|
widgetList = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for i in range(int(channelNum)):
|
|
|
|
|
if (i + number) % 2 == 0:
|
|
|
|
|
areaLabel = QLabel(varType + str(i + 1 ) + ": " + channelByte + 'Byte' )
|
|
|
|
@ -216,11 +211,6 @@ class MainWindow(QMainWindow):
|
|
|
|
|
editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn))
|
|
|
|
|
widgetList.append([layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# self.nowValue.append([deviceName, layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit, (i + number)//2, (i + number) % 2 + 1])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
areaLabel = QLabel(varType + str(i + 1) + ": " + channelByte + 'Byte')
|
|
|
|
|
areaLabel2 = QLabel('0')
|
|
|
|
@ -235,100 +225,104 @@ class MainWindow(QMainWindow):
|
|
|
|
|
editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn))
|
|
|
|
|
widgetList.append([layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit])
|
|
|
|
|
|
|
|
|
|
self.arealists.append(widgetList)
|
|
|
|
|
self.arealist[deviceName] = self.arealists
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# self.nowValue.append([deviceName, layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit, (i + number) // 2, (i + number) % 2 + 4])
|
|
|
|
|
|
|
|
|
|
if not self.areaDict.get(deviceName):
|
|
|
|
|
self.areaDict[deviceName] = [widgetList]
|
|
|
|
|
else:
|
|
|
|
|
self.areaDict[deviceName].append(widgetList)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def delAreaWidget(self, subWindow):
|
|
|
|
|
|
|
|
|
|
def forceEdit(self, btn):
|
|
|
|
|
pass
|
|
|
|
|
# for item in self.nowValue:
|
|
|
|
|
# if btn in item:
|
|
|
|
|
# item[4].setText(item[5].text())
|
|
|
|
|
subwindow = subWindow
|
|
|
|
|
deviceName = sub_window.windowTitle()
|
|
|
|
|
areaLayout = sub_window.widget().widget().layout().itemAt(1).widget().layout()
|
|
|
|
|
|
|
|
|
|
def delAreaWidget(self, sub_window):
|
|
|
|
|
subwindow = sub_window
|
|
|
|
|
if self.nowValue:
|
|
|
|
|
self.deviceName = subwindow.windowTitle()
|
|
|
|
|
delAreaWidget = DelAreaWidget(self.deviceName)
|
|
|
|
|
|
|
|
|
|
deviceName = subwindow.windowTitle()
|
|
|
|
|
delAreaWidget = DelAreaWidget(deviceName)
|
|
|
|
|
|
|
|
|
|
if delAreaWidget.exec_() == QDialog.Accepted:
|
|
|
|
|
rowAndColumn = delAreaWidget.getDelAreaRowAndColunm()
|
|
|
|
|
rowAndColumn.reverse()
|
|
|
|
|
|
|
|
|
|
if rowAndColumn == []:
|
|
|
|
|
return
|
|
|
|
|
else:
|
|
|
|
|
self.getAreaWidget(rowAndColumn, subwindow)
|
|
|
|
|
Device().delAreas(self.deviceName,rowAndColumn)
|
|
|
|
|
for areaId in rowAndColumn:
|
|
|
|
|
for devicelist in self.nowValue:
|
|
|
|
|
areas = devicelist[deviceName][:]
|
|
|
|
|
area = areas[areaId - 1]
|
|
|
|
|
for are in area:
|
|
|
|
|
for widget in range(2, 6):
|
|
|
|
|
areaLayout.removeWidget(are[widget])
|
|
|
|
|
are[widget].deleteLater()
|
|
|
|
|
devicelist[deviceName].remove(area)
|
|
|
|
|
|
|
|
|
|
Device().delAreas(deviceName,rowAndColumn)
|
|
|
|
|
# self.updateLayout(areaLayout)
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
return
|
|
|
|
|
else:
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
def updateLayout(self, areaLayout):
|
|
|
|
|
|
|
|
|
|
for devicelist in self.nowValue:
|
|
|
|
|
for key in devicelist:
|
|
|
|
|
areas = devicelist[key]
|
|
|
|
|
print(areas,'vvvvvv')
|
|
|
|
|
for area in areas:
|
|
|
|
|
for widgets in area:
|
|
|
|
|
for widget in range(2, 6):
|
|
|
|
|
|
|
|
|
|
areaLayout.removeWidget(widgets[widget])
|
|
|
|
|
widgets[widget].deleteLater()
|
|
|
|
|
|
|
|
|
|
for devicelist in self.nowValue:
|
|
|
|
|
for key in devicelist:
|
|
|
|
|
areas = devicelist[key]
|
|
|
|
|
i = 0
|
|
|
|
|
for area in areas:
|
|
|
|
|
if i // 2 == 0:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getAreaWidget(self, rowAndColumn, sub_window):
|
|
|
|
|
subwindow = sub_window
|
|
|
|
|
areaLayout = subwindow.widget().widget().layout().itemAt(1).widget().layout()
|
|
|
|
|
deviceName = subwindow.windowTitle()
|
|
|
|
|
print(self.nowValue,'old')
|
|
|
|
|
for areaId in rowAndColumn:
|
|
|
|
|
for devicelist in self.nowValue:
|
|
|
|
|
areas = devicelist[deviceName]
|
|
|
|
|
area = areas[areaId - 1]
|
|
|
|
|
for are in area:
|
|
|
|
|
for widget in range(2, 6):
|
|
|
|
|
areaLayout.removeWidget(are[widget])
|
|
|
|
|
are[widget].deleteLater()
|
|
|
|
|
areas.remove(area)
|
|
|
|
|
print(self.nowValue, 'now')
|
|
|
|
|
|
|
|
|
|
# for area in areas:
|
|
|
|
|
# for widget in range(2, 6):
|
|
|
|
|
# print(widget)
|
|
|
|
|
# print(area[widget])
|
|
|
|
|
# area[widget].deleteLater()
|
|
|
|
|
# areaLayout.removeWidget(area[widget])
|
|
|
|
|
# self.nowValue.remove(areaS)
|
|
|
|
|
# # print(self.nowValue)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# print(rowAndColumn,'sssss')
|
|
|
|
|
# for areaId in rowAndColumn:
|
|
|
|
|
# for nowWidget in self.nowValue:
|
|
|
|
|
# if nowWidget[0] == deviceName and nowWidget[2] == areaId:
|
|
|
|
|
# for widget in range(3, 7):
|
|
|
|
|
#
|
|
|
|
|
# areaLayout.removeWidget(nowWidget[widget])
|
|
|
|
|
# nowWidget[widget].deleteLater()
|
|
|
|
|
# delAreaWidgetList.append(nowWidget)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# for widget in delAreaWidgetList: #从列表中删除已删除的部件
|
|
|
|
|
# self.nowValue.remove(widget)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#重置area的id
|
|
|
|
|
# i = 1
|
|
|
|
|
# j = 1
|
|
|
|
|
# for nowWidget in self.nowValue:
|
|
|
|
|
# if nowWidget[0] == deviceName:
|
|
|
|
|
# if nowWidget[2] == j:
|
|
|
|
|
# index = nowWidget.index(nowWidget[2])
|
|
|
|
|
# nowWidget[index] = i
|
|
|
|
|
# else:
|
|
|
|
|
# j = nowWidget[2]
|
|
|
|
|
# i += 1
|
|
|
|
|
# index = nowWidget.index(nowWidget[2])
|
|
|
|
|
# nowWidget[index] = i
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def forceEdit(self, btn):
|
|
|
|
|
forceValue = []
|
|
|
|
|
for devicelist in self.nowValue:
|
|
|
|
|
for key in devicelist:
|
|
|
|
|
areas = devicelist[key]
|
|
|
|
|
print(areas,'vvvvvv')
|
|
|
|
|
for area in areas:
|
|
|
|
|
for widgets in area:
|
|
|
|
|
if btn in widgets:
|
|
|
|
|
widgets[4].setText(widgets[5].text())
|
|
|
|
|
forceValue
|
|
|
|
|
|
|
|
|
|
# for item in self.nowValue:
|
|
|
|
|
# if btn in item:
|
|
|
|
|
# item[4].setText(item[5].text())
|
|
|
|
|
def writeValue(self):
|
|
|
|
|
for deviceNames in self.sub_windows:
|
|
|
|
|
deviceName = deviceNames.windowTitle()
|
|
|
|
|
areas = [[1,2,3,4,5],[2,3,4,5]]
|
|
|
|
|
for area in areas:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def startProtocol(self):
|
|
|
|
|
a = []
|
|
|
|
|
|
|
|
|
|
self.writeValue()
|
|
|
|
|
for i in range(len(self.nowValue)):
|
|
|
|
|
a.append(i)
|
|
|
|
|
|
|
|
|
|