From 5d3797f92833a784cd249cf3bc74d25cd3ff397b Mon Sep 17 00:00:00 2001 From: zhangxuxutm <951937200@qq.com> Date: Sat, 9 Sep 2023 22:28:49 +0800 Subject: [PATCH] 0909 --- UI/AreaTabWidget.py | 230 +++++++++++++++++++++ UI/AreaTableWidget.py | 0 UI/MainWindow.py | 299 +++++----------------------- model/ProjectModel/DeviceManage.py | 45 +++-- model/ProjectModel/ImportProject.py | 2 +- 5 files changed, 307 insertions(+), 269 deletions(-) create mode 100644 UI/AreaTabWidget.py create mode 100644 UI/AreaTableWidget.py diff --git a/UI/AreaTabWidget.py b/UI/AreaTabWidget.py new file mode 100644 index 0000000..204a5ac --- /dev/null +++ b/UI/AreaTabWidget.py @@ -0,0 +1,230 @@ +import sys +from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QVBoxLayout, QLabel, QPushButton, \ + QHBoxLayout, QComboBox, QLineEdit, QSpacerItem, QSizePolicy, QGridLayout, QMessageBox +from PyQt5 import QtCore + +from model.ProjectModel.DeviceManage import DevicesManange, Device + + +class AreaTabWidget(QMainWindow): + def __init__(self): + super().__init__() + self.initUI() + def initUI(self): + # 创建一个 QTabWidget + self.widgetList = [] + self.areaTabWidget = QTabWidget(self) + self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) + self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) + + # 设置主窗口的中心部分为 QTabWidget + self.setCentralWidget(self.areaTabWidget) + + def initAreaTab(self, dataType, order, channelBytes, deviceName = False): + areaTabWidget = QWidget() + tabIndex = self.areaTabWidget.count() + # 将标签页添加到 QTabWidget 中 + self.areaTabWidget.addTab(areaTabWidget, str(tabIndex)) + + self.setCentralWidget(self.areaTabWidget) + widgetList = [] + mainLayout = QVBoxLayout() + topLayout = QHBoxLayout() + areaLayout = QGridLayout() + + dataTypeCombox = QComboBox() + dataTypeCombox.addItems(['AI', 'AO', 'DI', 'DO']) + dataTypeCombox.setCurrentIndex(dataType) + dataTypeCombox.setObjectName('dataTypeCombox') + + orderCombox = QComboBox() + orderCombox.addItems(['不转换', '字节转换', '字转换', '字内转换']) + orderCombox.setCurrentIndex(order) + + byteLineEdit = QLineEdit() + byteLineEdit.setPlaceholderText('字节长度') + byteLineEdit.setObjectName('byteLineEdit') + byteLineEdit.setText(channelBytes) + + + okBtn = QPushButton('确定') + delAreaBtn = QPushButton('删除') + + topLayout.addWidget(dataTypeCombox, 1) + topLayout.addWidget(orderCombox, 1) + # topLayout.addWidget(byteLabel) + topLayout.addWidget(byteLineEdit, 2) + topLayout.addWidget(okBtn, 1) + topLayout.addItem(self.horizontalSpacer) + topLayout.addItem(self.horizontalSpacer) + topLayout.addItem(self.horizontalSpacer) + topLayout.addItem(self.horizontalSpacer) + topLayout.addWidget(delAreaBtn, 1) + + # widget = QWidget() + # areaLayout.addWidget(widget) + mainLayout.addLayout(topLayout, 1) + mainLayout.addLayout(areaLayout, 9) + + + delAreaBtn.clicked.connect(self.removeAreaTab) + + widgetList.extend([dataTypeCombox, orderCombox, byteLineEdit, areaLayout, deviceName]) + self.addAreaWidget(widgetList) + + areaTabWidget.setLayout(mainLayout) + + + def addAreaTab(self, deviceName): + areaTabWidget = QWidget() + + tabIndex = self.areaTabWidget.count() + # 将标签页添加到 QTabWidget 中 + self.areaTabWidget.addTab(areaTabWidget, str(tabIndex)) + self.areaTabWidget.setCurrentIndex(int(tabIndex)) + self.setCentralWidget(self.areaTabWidget) + widgetList = [] + mainLayout = QVBoxLayout() + topLayout = QHBoxLayout() + areaLayout = QGridLayout() + + dataTypeCombox = QComboBox() + dataTypeCombox.addItems(['AI', 'AO', 'DI', 'DO']) + dataTypeCombox.setObjectName('dataTypeCombox') + + orderCombox = QComboBox() + orderCombox.addItems(['不转换', '字节转换', '字转换', '字内转换']) + + byteLineEdit = QLineEdit() + byteLineEdit.setPlaceholderText('字节长度') + byteLineEdit.setObjectName('byteLineEdit') + + + okBtn = QPushButton('确定') + delAreaBtn = QPushButton('删除') + + topLayout.addWidget(dataTypeCombox, 1) + topLayout.addWidget(orderCombox, 1) + # topLayout.addWidget(byteLabel) + topLayout.addWidget(byteLineEdit, 2) + topLayout.addWidget(okBtn, 1) + topLayout.addItem(self.horizontalSpacer) + topLayout.addItem(self.horizontalSpacer) + topLayout.addItem(self.horizontalSpacer) + topLayout.addItem(self.horizontalSpacer) + topLayout.addWidget(delAreaBtn, 1) + + widget = QWidget() + areaLayout.addWidget(widget) + mainLayout.addLayout(topLayout, 1) + mainLayout.addLayout(areaLayout, 9) + + okBtn.clicked.connect(lambda: self.addAreaWidget(widgetList)) + + delAreaBtn.clicked.connect(self.removeAreaTab) + + widgetList.extend([dataTypeCombox, orderCombox, byteLineEdit, areaLayout, deviceName]) + areaTabWidget.setLayout(mainLayout) + + def removeAreaTab(self): + # 获取 QTabWidget 并从中删除标签页 + deviceName = self.areaTabWidget.parent().parent().parent().parent().parent().windowTitle() + index = self.areaTabWidget.currentIndex() + print(index) + if index != -1: + self.areaTabWidget.removeTab(index) + + Device.delAreas(deviceName, index) + + + + def addAreaWidget(self, widgetList): + dataType = widgetList[0].currentText() + order = self.dataTypeTranslate(widgetList[1].currentText()) + byteLineEdit = widgetList[2].text() + areaLayout = widgetList[3] + deviceName = widgetList[4] + + + if len(byteLineEdit) == 0: + QMessageBox.warning(self, '警告', '请输入字节长度。') + else: + for i in range(3): + widgetList[i].setEnabled(False) + + if dataType in ['AI', 'AO']: + if i % 2 == 0: + areaLabel = QLabel(dataType + str(i + 1 ) + ": " + byteLineEdit + 'Byte' ) + areaLabel2 =QLabel('0') + areaLineEdit = QLineEdit('0') + editbtn = QPushButton('强制') + + areaLayout.addWidget(areaLabel, i//2, i % 2) + areaLayout.addWidget(areaLabel2, i//2, i % 2 + 1 ) + areaLayout.addWidget(areaLineEdit, i//2, i % 2 + 2 ) + areaLayout.addWidget(editbtn, i // 2, i % 2 + 3) + areaLayout.addItem(self.horizontalSpacer, 0, 4) + editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn)) + self.widgetList.append([areaLabel2, areaLineEdit, editbtn]) + else: + areaLabel = QLabel(dataType + str(i + 1) + ": " + byteLineEdit + 'Byte') + areaLabel2 = QLabel('0') + areaLineEdit = QLineEdit('0') + editbtn = QPushButton('强制') + + areaLayout.addWidget(areaLabel, i // 2, i % 2 + 4) + areaLayout.addWidget(areaLabel2, i // 2, i % 2 + 6) + areaLayout.addWidget(areaLineEdit, i // 2, i % 2 + 6) + areaLayout.addWidget(editbtn, i // 2, i % 2 + 7) + editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn)) + self.widgetList.append([areaLabel2, areaLineEdit, editbtn]) + else: + channelNumber = int(byteLineEdit) * 8 + for i in range(int(channelNumber)): + if i % 2 == 0: + areaLabel = QLabel(dataType + str(i + 1 ) + ": " + byteLineEdit + 'Byte' ) + areaLabel2 =QLabel('0') + areaLineEdit = QLineEdit('0') + editbtn = QPushButton('强制') + + areaLayout.addWidget(areaLabel, i//2, i % 2) + areaLayout.addWidget(areaLabel2, i//2, i % 2 + 1 ) + areaLayout.addWidget(areaLineEdit, i//2, i % 2 + 2 ) + areaLayout.addWidget(editbtn, i // 2, i % 2 + 3) + editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn)) + self.widgetList.append([areaLabel2, areaLineEdit, editbtn]) + else: + areaLabel = QLabel(dataType + str(i + 1) + ": " + byteLineEdit + 'Byte') + areaLabel2 = QLabel('0') + areaLineEdit = QLineEdit('0') + editbtn = QPushButton('强制') + + areaLayout.addWidget(areaLabel, i // 2, i % 2 + 4) + areaLayout.addWidget(areaLabel2, i // 2, i % 2 + 5) + areaLayout.addWidget(areaLineEdit, i // 2, i % 2 + 6) + areaLayout.addWidget(editbtn, i // 2, i % 2 + 7) + editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn)) + + self.widgetList.append([areaLabel2, areaLineEdit, editbtn]) + areaLayout.addItem(self.verticalSpacer, int(byteLineEdit) * 8 ,0) + if deviceName: + DevicesManange.addAreas(dataType, order, byteLineEdit, deviceName) + + def dataTypeTranslate(self, order): + self.dataTypeDict = {'不转换': 'ABCD', '字节转换': 'DCBA', '字转换': 'CDAB', '字内转换': 'BADC'} + return self.dataTypeDict[order] + + def forceEdit(self, editBtn): + for widget in self.widgetList: + if editBtn in widget: + widget[0].setText(widget[1].text()) + + + + + +if __name__ == '__main__': + app = QApplication(sys.argv) + window = AreaTabWidget() + window.show() + sys.exit(app.exec_()) diff --git a/UI/AreaTableWidget.py b/UI/AreaTableWidget.py new file mode 100644 index 0000000..e69de29 diff --git a/UI/MainWindow.py b/UI/MainWindow.py index 1b1e5cb..360066e 100644 --- a/UI/MainWindow.py +++ b/UI/MainWindow.py @@ -13,6 +13,7 @@ from UI.DelAreaWidget import DelAreaWidget from model.ProjectModel.DeviceManage import DevicesManange, Device from protocol.ModBus.ModBusThread import MyThread from utils.DBModels.BaseModel import * +from UI.AreaTabWidget import AreaTabWidget from utils.DBModels.DeviceModels import DeviceDB from model.ClientModel.Client import Client class CommonHelper: @@ -28,13 +29,7 @@ class CommonHelper: class MainWindow(QMainWindow): def __init__(self): super().__init__() - - self.subWindows = [] #存储设备widget - self.nowValue = [] #储存当前值 - self.areaLabel = [] #存储通道信息文本 - self.areaDict = {} - self.widgetList= [] self.initUI() self.initAreaWidget() self.projectManage = DevicesManange() @@ -62,76 +57,48 @@ class MainWindow(QMainWindow): self.toolbar.addAction(self.startProtocolBtn) self.mdi_area = QMdiArea() - # self.scrollArea = QScrollArea() - # self.scrollArea.setWidget(self.mdi_area) self.setCentralWidget(self.mdi_area) self.setWindowIcon(QIcon('Static/zhjt.ico')) - - # self.mdi_area.setViewMode(QMdiArea.TabbedView) - # self.mdi_area.setTabsClosable(False) - # self.mdi_area.setTabsMovable(True) - - self.setWindowTitle("PROFIBUS") self.setGeometry(1000, 500, 800, 600) def deviceWidget(self, windowTitle): - sub_window = AreaQMdiSubWindow(self)# 创建一个子窗口 - sub_window.setObjectName('sub_window') - areaLayout1 = QGridLayout() - areaLayout2 = QGridLayout() - - horizontalLayout = QHBoxLayout() - horizontalLayout.setObjectName("horizontalLayout") - - # tableWidget = QTableWidget() - - widget = QWidget() - widget.setLayout(areaLayout1) - - widgetArea = QWidget() - widgetArea.setLayout(areaLayout2) - - newbtn = QPushButton('添加通道') - delbth = QPushButton('删除通道') - - self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) - self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding) - - horizontalLayout.addWidget(newbtn) - horizontalLayout.addItem(self.horizontalSpacer) - horizontalLayout.addWidget(delbth) - - newbtn.clicked.connect(lambda: self.newAreaWidget(sub_window)) - delbth.clicked.connect(lambda: self.delAreaWidget(sub_window)) - - areaLayout1.addLayout(horizontalLayout, 0, 0, 1, 1) - areaLayout1.addWidget(widgetArea, 1, 0, 1, 1) - areaLayout1.addItem(self.verticalSpacer) - + subWindow = AreaQMdiSubWindow(self)# 创建一个子窗口 + subWindow.setObjectName('subWindow') + areaTabWidget = AreaTabWidget() + + #新建mainWindows放入subwindows + areaMainWindow = QMainWindow() + areaMainWindow.setCentralWidget(areaTabWidget) + + #mainwindows添加工具栏 + toolbar = QToolBar() + areaMainWindow.addToolBar(toolbar) + addAreaBtn = QAction("添加通道", areaMainWindow) + addAreaBtn.setObjectName("addDiviceBtn") + addAreaBtn.triggered.connect(lambda: areaTabWidget.addAreaTab(windowTitle)) + toolbar.addAction(addAreaBtn) + + #为mainwindow添加右滑动条 scroll_widget = QScrollArea() scroll_widget.setWidgetResizable(True) - scroll_widget.setWidget(widget) - - sub_window.setWindowTitle(windowTitle) - sub_window.setGeometry(0, 0, 600, 500) - sub_window.setWidget(scroll_widget) - sub_window.setWindowIcon(QIcon('Static/zhjt.ico')) - - - self.mdi_area.addSubWindow(sub_window) # 将子窗口添加到MDI区域 - # self.mdi_area.subWindowActivated.connect(self.adjustMdiAreaSize) + scroll_widget.setWidget(areaMainWindow) + #设置subwindow + subWindow.setWindowTitle(windowTitle) + subWindow.setGeometry(0, 0, 600, 500) + subWindow.setWidget(scroll_widget) + subWindow.setWindowIcon(QIcon('Static/zhjt.ico')) + self.mdi_area.addSubWindow(subWindow) # 将子窗口添加到MDI区域 + subWindow.show() - sub_window.show() - self.subWindows.append(sub_window) + self.subWindows.append(subWindow) + return subWindow - - return sub_window def loadProject(self): pass @@ -139,28 +106,15 @@ class MainWindow(QMainWindow): alldevices = DevicesManange.getAllDevice() for devices in alldevices: - layout = self.deviceWidget(devices[0]).widget().widget().layout().itemAt(1).widget().layout() areas = devices[3] - number = 0 - masterSlaveModel = devices[2] - deviceName = devices[0] + areaTabWidget = self.deviceWidget(devices[0]).widget().widget().centralWidget() if areas is not None: areas = json.loads(areas) for area in areas: - varType = area["type"] - channelNums = area["nums"] + dataType, order = self.tran(area["type"], area["order"]) channelBytes = area["bytes"] - areaID = area['id'] - - if masterSlaveModel == '主站': - self.addAreaWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaID) - else: - self.addAreaWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaID) - number = number + int(channelNums) - self.nowValue.append(self.areaDict) - - - + print(dataType, type(dataType)) + areaTabWidget.initAreaTab(dataType, order, channelBytes) def createDeciveWidget(self): dialog = DeviceDialog() @@ -174,164 +128,6 @@ class MainWindow(QMainWindow): self.deviceWidget(windowTitle) - def newAreaWidget(self, sub_window): - - deviceName = sub_window.windowTitle() - - dialog = AreaSettingWidget() - if dialog.exec_() == QDialog.Accepted: - varType, channelNums, channelBytes = dialog.getParameters() - number = DevicesManange.getChannelLength(deviceName) - DevicesManange.addAreas(varType, channelNums, channelBytes, deviceName) - areaId = DevicesManange.getAreaID(deviceName)[-1] - - else: - return - layout = sub_window.widget().widget().layout().itemAt(1).widget().layout() #获取sub_window的widgetArea的areaLayout2 - self.addAreaWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaId) - - number += int(channelNums) - - - - - - def addAreaWidget(self,deviceNames, numbers, channelNums, channelBytes , varTypes, layouts ,ID): - deviceName = deviceNames - number = numbers - channelNum = channelNums - channelByte = channelBytes - varType = varTypes - layout = layouts - ID = ID - widgetList = [] - - for i in range(int(channelNum)): - if (i + number) % 2 == 0: - areaLabel = QLabel(varType + str(i + 1 ) + ": " + channelByte + 'Byte' ) - 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(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, order]) - - else: - areaLabel = QLabel(varType + str(i + 1) + ": " + channelByte + 'Byte') - areaLabel2 = QLabel('0') - areaLineEdit = QLineEdit('0') - editbtn = QPushButton('强制') - 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, order]) - - if not self.areaDict.get(deviceName): - self.areaDict[deviceName] = [widgetList] - else: - self.areaDict[deviceName].append(widgetList) - - - - - def delAreaWidget(self, subWindow): - - subwindow = subWindow - deviceName = subwindow.windowTitle() - areaLayout = subwindow.widget().widget().layout().itemAt(1).widget().layout() - - if self.nowValue: - - deviceName = subwindow.windowTitle() - delAreaWidget = DelAreaWidget(deviceName) - - if delAreaWidget.exec_() == QDialog.Accepted: - rowAndColumn = delAreaWidget.getDelAreaRowAndColunm() - rowAndColumn.reverse() - - if rowAndColumn == []: - return - else: - 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, 7): - 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 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()) - - 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()) def writeValue(self): for deviceNames in self.subWindows: deviceName = deviceNames.windowTitle() @@ -339,18 +135,29 @@ class MainWindow(QMainWindow): for area in areas: pass - def startProtocol(self): + pass - self.writeValue() - for i in range(len(self.nowValue)): - a.append(i) - - for i in a : - for j in self.nowValue: - j[5].setText(str(i)) - print(a) - + def tran(self, dataType, order): + if dataType == 'AI': + dataType = 0 + if dataType == 'AO': + dataType = 1 + if dataType == 'DI': + dataType = 2 + if dataType == 'DO': + dataType = 3 + + if order == 'ABCD': + order = 0 + if order == 'DCBA': + order = 1 + if order == 'CDAB': + order = 2 + if order == 'BADC': + order = 3 + + return dataType, order diff --git a/model/ProjectModel/DeviceManage.py b/model/ProjectModel/DeviceManage.py index 0325743..152a0b6 100644 --- a/model/ProjectModel/DeviceManage.py +++ b/model/ProjectModel/DeviceManage.py @@ -1,7 +1,7 @@ import collections import json from utils.DBModels.DeviceModels import DeviceDB -from model.ProjectModel.AreaManage import Area + class Device(): @@ -14,15 +14,15 @@ class Device(): def __init__(self): pass - def addArea(self, type, nums, bytes): - area = Area() - area.type = type - area.startAddress = 0 if not self.startAddress else: self.endAddress + 1 - area.length = self.getLength(nums, bytes) - area.endAddress = startAddress + length - self.endAddress = area.endAddress - area.addressList = list(range(area.startAddress, area.endAddress + 1, bytes)) - areas.append(area) + # def addArea(self, type, nums, bytes): + # area = Area() + # area.type = type + # area.startAddress = 0 if not self.startAddress else: self.endAddress + 1 + # area.length = self.getLength(nums, bytes) + # area.endAddress = startAddress + length + # self.endAddress = area.endAddress + # area.addressList = list(range(area.startAddress, area.endAddress + 1, bytes)) + # areas.append(area) def delArea(self, index): self.areas.pop(index) @@ -58,10 +58,9 @@ class Device(): pass @classmethod - def delAreas(self, deviceName, ids): + def delAreas(self, deviceName, id): jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson) - for id in ids: - jsonCon.pop(id - 1) + jsonCon.pop(id) if jsonCon == []: areaJson = None @@ -94,6 +93,7 @@ class DevicesManange(): self.paSlaveDevices = collections.OrderedDict() + def addDevice(self, proType, masterSlaveModel, deviceName): device = Device() device.type = proType @@ -125,12 +125,12 @@ class DevicesManange(): del deviceDict[deviceName] self.recalculateAddress() - def recalculateAddress(self, deviceDict): - for devicesDict in [self.paMasterDevices, self.paSlaveDevices, self.dpMasterDevices, self.dpSlaveDevices]: - for index, (deviceName, device) in enumerate(ordered_dict.items()): - device.startAddress = 0 in index = 0 else: device = previousDevice.endAddress + 1 - device.recalculateAddress() - previousDevice = device + # def recalculateAddress(self, deviceDict): + # for devicesDict in [self.paMasterDevices, self.paSlaveDevices, self.dpMasterDevices, self.dpSlaveDevices]: + # for index, (deviceName, device) in enumerate(ordered_dict.items()): + # device.startAddress = 0 in index = 0 else: device = previousDevice.endAddress + 1 + # device.recalculateAddress() + # previousDevice = device def getDevice(self, deviceName): @@ -139,13 +139,14 @@ class DevicesManange(): return devicesDict[deviceName] @classmethod - def addAreas(self, type, nums, bytes, deviceName): + def addAreas(self, type, order, bytes, deviceName): if DeviceDB.getByName(deviceName=deviceName).areaJson is None: jsonCon = ([{ "id": 1, "type": type, - "nums": nums, + "order": order, "bytes": bytes, + }]) else: jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson) @@ -153,7 +154,7 @@ class DevicesManange(): jsonCon.append({ "id": id, "type": type, - "nums": nums, + "order": order, "bytes": bytes, }) areaJson = json.dumps(jsonCon) diff --git a/model/ProjectModel/ImportProject.py b/model/ProjectModel/ImportProject.py index 2049619..88f610b 100644 --- a/model/ProjectModel/ImportProject.py +++ b/model/ProjectModel/ImportProject.py @@ -20,7 +20,7 @@ def importProject(): deviceName = protocolType + slaveIndex if slaveIndex == "0": device.startAddress = 0 - elif +