main
zhangxuxutm 2 years ago
parent 575f840969
commit 5d3797f928

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

@ -13,6 +13,7 @@ from UI.DelAreaWidget import DelAreaWidget
from model.ProjectModel.DeviceManage import DevicesManange, Device from model.ProjectModel.DeviceManage import DevicesManange, Device
from protocol.ModBus.ModBusThread import MyThread from protocol.ModBus.ModBusThread import MyThread
from utils.DBModels.BaseModel import * from utils.DBModels.BaseModel import *
from UI.AreaTabWidget import AreaTabWidget
from utils.DBModels.DeviceModels import DeviceDB from utils.DBModels.DeviceModels import DeviceDB
from model.ClientModel.Client import Client from model.ClientModel.Client import Client
class CommonHelper: class CommonHelper:
@ -28,13 +29,7 @@ class CommonHelper:
class MainWindow(QMainWindow): class MainWindow(QMainWindow):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.subWindows = [] #存储设备widget self.subWindows = [] #存储设备widget
self.nowValue = [] #储存当前值
self.areaLabel = [] #存储通道信息文本
self.areaDict = {}
self.widgetList= []
self.initUI() self.initUI()
self.initAreaWidget() self.initAreaWidget()
self.projectManage = DevicesManange() self.projectManage = DevicesManange()
@ -62,76 +57,48 @@ class MainWindow(QMainWindow):
self.toolbar.addAction(self.startProtocolBtn) self.toolbar.addAction(self.startProtocolBtn)
self.mdi_area = QMdiArea() self.mdi_area = QMdiArea()
# self.scrollArea = QScrollArea()
# self.scrollArea.setWidget(self.mdi_area)
self.setCentralWidget(self.mdi_area) self.setCentralWidget(self.mdi_area)
self.setWindowIcon(QIcon('Static/zhjt.ico')) 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.setWindowTitle("PROFIBUS")
self.setGeometry(1000, 500, 800, 600) self.setGeometry(1000, 500, 800, 600)
def deviceWidget(self, windowTitle): def deviceWidget(self, windowTitle):
sub_window = AreaQMdiSubWindow(self)# 创建一个子窗口 subWindow = AreaQMdiSubWindow(self)# 创建一个子窗口
sub_window.setObjectName('sub_window') subWindow.setObjectName('subWindow')
areaLayout1 = QGridLayout() areaTabWidget = AreaTabWidget()
areaLayout2 = QGridLayout()
#新建mainWindows放入subwindows
horizontalLayout = QHBoxLayout() areaMainWindow = QMainWindow()
horizontalLayout.setObjectName("horizontalLayout") areaMainWindow.setCentralWidget(areaTabWidget)
# tableWidget = QTableWidget() #mainwindows添加工具栏
toolbar = QToolBar()
widget = QWidget() areaMainWindow.addToolBar(toolbar)
widget.setLayout(areaLayout1) addAreaBtn = QAction("添加通道", areaMainWindow)
addAreaBtn.setObjectName("addDiviceBtn")
widgetArea = QWidget() addAreaBtn.triggered.connect(lambda: areaTabWidget.addAreaTab(windowTitle))
widgetArea.setLayout(areaLayout2) toolbar.addAction(addAreaBtn)
newbtn = QPushButton('添加通道') #为mainwindow添加右滑动条
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)
scroll_widget = QScrollArea() scroll_widget = QScrollArea()
scroll_widget.setWidgetResizable(True) scroll_widget.setWidgetResizable(True)
scroll_widget.setWidget(widget) scroll_widget.setWidget(areaMainWindow)
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)
#设置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(subWindow)
self.subWindows.append(sub_window) return subWindow
return sub_window
def loadProject(self): def loadProject(self):
pass pass
@ -139,28 +106,15 @@ class MainWindow(QMainWindow):
alldevices = DevicesManange.getAllDevice() alldevices = DevicesManange.getAllDevice()
for devices in alldevices: for devices in alldevices:
layout = self.deviceWidget(devices[0]).widget().widget().layout().itemAt(1).widget().layout()
areas = devices[3] areas = devices[3]
number = 0 areaTabWidget = self.deviceWidget(devices[0]).widget().widget().centralWidget()
masterSlaveModel = devices[2]
deviceName = devices[0]
if areas is not None: if areas is not None:
areas = json.loads(areas) areas = json.loads(areas)
for area in areas: for area in areas:
varType = area["type"] dataType, order = self.tran(area["type"], area["order"])
channelNums = area["nums"]
channelBytes = area["bytes"] channelBytes = area["bytes"]
areaID = area['id'] print(dataType, type(dataType))
areaTabWidget.initAreaTab(dataType, order, channelBytes)
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)
def createDeciveWidget(self): def createDeciveWidget(self):
dialog = DeviceDialog() dialog = DeviceDialog()
@ -174,164 +128,6 @@ class MainWindow(QMainWindow):
self.deviceWidget(windowTitle) 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): def writeValue(self):
for deviceNames in self.subWindows: for deviceNames in self.subWindows:
deviceName = deviceNames.windowTitle() deviceName = deviceNames.windowTitle()
@ -339,18 +135,29 @@ class MainWindow(QMainWindow):
for area in areas: for area in areas:
pass pass
def startProtocol(self): def startProtocol(self):
pass
self.writeValue() def tran(self, dataType, order):
for i in range(len(self.nowValue)): if dataType == 'AI':
a.append(i) dataType = 0
if dataType == 'AO':
for i in a : dataType = 1
for j in self.nowValue: if dataType == 'DI':
j[5].setText(str(i)) dataType = 2
print(a) 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

@ -1,7 +1,7 @@
import collections import collections
import json import json
from utils.DBModels.DeviceModels import DeviceDB from utils.DBModels.DeviceModels import DeviceDB
from model.ProjectModel.AreaManage import Area
class Device(): class Device():
@ -14,15 +14,15 @@ class Device():
def __init__(self): def __init__(self):
pass pass
def addArea(self, type, nums, bytes): # def addArea(self, type, nums, bytes):
area = Area() # area = Area()
area.type = type # area.type = type
area.startAddress = 0 if not self.startAddress else: self.endAddress + 1 # area.startAddress = 0 if not self.startAddress else: self.endAddress + 1
area.length = self.getLength(nums, bytes) # area.length = self.getLength(nums, bytes)
area.endAddress = startAddress + length # area.endAddress = startAddress + length
self.endAddress = area.endAddress # self.endAddress = area.endAddress
area.addressList = list(range(area.startAddress, area.endAddress + 1, bytes)) # area.addressList = list(range(area.startAddress, area.endAddress + 1, bytes))
areas.append(area) # areas.append(area)
def delArea(self, index): def delArea(self, index):
self.areas.pop(index) self.areas.pop(index)
@ -58,10 +58,9 @@ class Device():
pass pass
@classmethod @classmethod
def delAreas(self, deviceName, ids): def delAreas(self, deviceName, id):
jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson) jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson)
for id in ids: jsonCon.pop(id)
jsonCon.pop(id - 1)
if jsonCon == []: if jsonCon == []:
areaJson = None areaJson = None
@ -94,6 +93,7 @@ class DevicesManange():
self.paSlaveDevices = collections.OrderedDict() self.paSlaveDevices = collections.OrderedDict()
def addDevice(self, proType, masterSlaveModel, deviceName): def addDevice(self, proType, masterSlaveModel, deviceName):
device = Device() device = Device()
device.type = proType device.type = proType
@ -125,12 +125,12 @@ class DevicesManange():
del deviceDict[deviceName] del deviceDict[deviceName]
self.recalculateAddress() self.recalculateAddress()
def recalculateAddress(self, deviceDict): # def recalculateAddress(self, deviceDict):
for devicesDict in [self.paMasterDevices, self.paSlaveDevices, self.dpMasterDevices, self.dpSlaveDevices]: # for devicesDict in [self.paMasterDevices, self.paSlaveDevices, self.dpMasterDevices, self.dpSlaveDevices]:
for index, (deviceName, device) in enumerate(ordered_dict.items()): # for index, (deviceName, device) in enumerate(ordered_dict.items()):
device.startAddress = 0 in index = 0 else: device = previousDevice.endAddress + 1 # device.startAddress = 0 in index = 0 else: device = previousDevice.endAddress + 1
device.recalculateAddress() # device.recalculateAddress()
previousDevice = device # previousDevice = device
def getDevice(self, deviceName): def getDevice(self, deviceName):
@ -139,13 +139,14 @@ class DevicesManange():
return devicesDict[deviceName] return devicesDict[deviceName]
@classmethod @classmethod
def addAreas(self, type, nums, bytes, deviceName): def addAreas(self, type, order, bytes, deviceName):
if DeviceDB.getByName(deviceName=deviceName).areaJson is None: if DeviceDB.getByName(deviceName=deviceName).areaJson is None:
jsonCon = ([{ jsonCon = ([{
"id": 1, "id": 1,
"type": type, "type": type,
"nums": nums, "order": order,
"bytes": bytes, "bytes": bytes,
}]) }])
else: else:
jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson) jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson)
@ -153,7 +154,7 @@ class DevicesManange():
jsonCon.append({ jsonCon.append({
"id": id, "id": id,
"type": type, "type": type,
"nums": nums, "order": order,
"bytes": bytes, "bytes": bytes,
}) })
areaJson = json.dumps(jsonCon) areaJson = json.dumps(jsonCon)

@ -20,7 +20,7 @@ def importProject():
deviceName = protocolType + slaveIndex deviceName = protocolType + slaveIndex
if slaveIndex == "0": if slaveIndex == "0":
device.startAddress = 0 device.startAddress = 0
elif

Loading…
Cancel
Save