main
zcwBit 2 years ago
parent c3224fc904
commit f88125f49d

@ -15,10 +15,14 @@ class DelAreaWidget(QDialog):
self.deviceName = deviceName self.deviceName = deviceName
self.delAreaRowAndColunm = [] self.delAreaRowAndColunm = []
self.initUI() self.initUI()
self.intType = 0
self.foloatType = 1
def initUI(self): def initUI(self):
vorlayout = QVBoxLayout() #主布局 vorlayout = QVBoxLayout() #主布局
# layout = QGridLayout() # layout = QGridLayout()
jsonCons = Device().getAreaJson(self.deviceName) jsonCons = Device().getAreaJson(self.deviceName)
row = 1 row = 1
if jsonCons is None: if jsonCons is None:
return return
@ -35,21 +39,6 @@ class DelAreaWidget(QDialog):
row += 1 row += 1
# for i in self.areaLabel:
# if self.deviceName in i:
# widget = i[2]
# row = i[3]
# text = widget.text()
# column = i[4]
# checkbox = QCheckBox(text)
#
# if column > 0:
# vorlayout.addWidget(checkbox)
#
# else:
# vorlayout.addWidget(checkbox)
# self.checkbox_data[checkbox] = [row, column]
button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
ok_button = button_box.button(QDialogButtonBox.Ok) ok_button = button_box.button(QDialogButtonBox.Ok)
ok_button.setText("确定") # 设置Ok按钮的文本 ok_button.setText("确定") # 设置Ok按钮的文本

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

@ -40,24 +40,20 @@ class Device():
def writeAreas(self): def writeAreas(self):
pass pass
def delAreas(self, deviceNames, ids): def delAreas(self, deviceName, ids):
for id in ids:
deviceName = deviceNames
jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson) jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson)
print(jsonCon[id - 1]) for id in ids:
jsonCon.pop(id - 1)
jsonCon.remove(jsonCon[id - 1])
if jsonCon == []: if jsonCon == []:
areaJson = None areaJson = None
DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute() DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute()
else: else:
i = 1 for index, areajsonId in enumerate(jsonCon):
for areajsonId in jsonCon: areajsonId["id"] = index + 1
areajsonId["id"] = i
i += 1
areaJson = json.dumps(jsonCon) areaJson = json.dumps(jsonCon)
DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute() DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute()
@ -121,7 +117,7 @@ class DevicesManange():
byte = (bytes + 1) // 2 byte = (bytes + 1) // 2
salveByteLong += int(numbers) * (byte) salveByteLong += int(numbers) * (byte)
self.slaveDevices[devices] = salveByteLong self.slaveDevices[devices] = salveByteLong
print(self.masterDevices,self.slaveDevices,'分别返回PA和DP度')
def addDevice(self, deviceName,channelNums, channelBytes): def addDevice(self, deviceName,channelNums, channelBytes):
channelBytes = int(channelBytes) channelBytes = int(channelBytes)
@ -138,7 +134,6 @@ class DevicesManange():
elif '从站' in deviceName: elif '从站' in deviceName:
self.slaveDevices[deviceName] = int(channelNums) * int(channelBytes) self.slaveDevices[deviceName] = int(channelNums) * int(channelBytes)
# print(self.masterDevices,self.slaveDevices,'分别返回PA和DP每个主站寄存器地址的总长度')
return self.masterDevices, self.slaveDevices #分别返回PA和DP每个设备的字节的总长度 return self.masterDevices, self.slaveDevices #分别返回PA和DP每个设备的字节的总长度
@classmethod @classmethod
@ -163,7 +158,7 @@ class DevicesManange():
for key in self.masterDevices: for key in self.masterDevices:
masterAddressList[key] = int(masterAddress) masterAddressList[key] = int(masterAddress)
masterAddress = int(self.masterDevices[key]) + masterAddress masterAddress = int(self.masterDevices[key]) + masterAddress
print(self.masterDevices[key],'dddd')
for key in self.slaveDevices: for key in self.slaveDevices:
slaveAddressList[key] = int(slaveAddress) slaveAddressList[key] = int(slaveAddress)
slaveAddress = int(self.slaveDevices[key]) + slaveAddress slaveAddress = int(self.slaveDevices[key]) + slaveAddress

Loading…
Cancel
Save