diff --git a/Static/Main.qss b/Static/Main.qss index a3ae659..8478810 100644 --- a/Static/Main.qss +++ b/Static/Main.qss @@ -530,7 +530,7 @@ QLineEdit#deviceMesEdit{ QLineEdit#deviceAddressEdit, QLineEdit#parameEditline{ - font-size: 16px; + font-size: 25px; border-top: none; diff --git a/Static/PA块信息表 - 副本.xlsx b/Static/PA块信息表 - 副本.xlsx deleted file mode 100644 index f2ecd84..0000000 Binary files a/Static/PA块信息表 - 副本.xlsx and /dev/null differ diff --git a/Static/PA块信息表.xlsx b/Static/PA块信息表.xlsx index 268ca0f..077eaee 100644 Binary files a/Static/PA块信息表.xlsx and b/Static/PA块信息表.xlsx differ diff --git a/Static/PA块信息表1.xlsx b/Static/PA块信息表1.xlsx new file mode 100644 index 0000000..fd4c625 Binary files /dev/null and b/Static/PA块信息表1.xlsx differ diff --git a/UI/BlockParameterManageWidget.py b/UI/BlockParameterManageWidget.py index 235e3b5..19e4147 100644 --- a/UI/BlockParameterManageWidget.py +++ b/UI/BlockParameterManageWidget.py @@ -187,6 +187,7 @@ class BlockParameterManageWidget(QWidget): self.deviceAddressLabel = QLabel('从站地址') self.deviceAddressLabel.setObjectName('deviceAddressLabel') self.deviceAddressEdit = QLineEdit() + self.deviceAddressEdit.returnPressed.connect(self.loadBlackData) self.deviceAddressEdit.setObjectName("deviceAddressEdit") self.confirmBtn = QPushButton('确定') @@ -233,10 +234,10 @@ class BlockParameterManageWidget(QWidget): address = self.deviceAddressEdit.text() # print(address) if address: - pattern = re.compile(r'^(?:[1-9]|[1-9][0-9]|1[0-1][0-9]|12[0-5])$') + pattern = re.compile(r'^(?:[1-9]|[1-9][0-9]|1[0-1][0-9]|12[0-6])$') match = pattern.match(address) if not match: - QMessageBox.warning(self, '提示', '请输入1 - 125。') + QMessageBox.warning(self, '提示', '请输入1 - 126。') return if self.initUIstat: try: @@ -304,18 +305,19 @@ class BlockParameterManageWidget(QWidget): def editAddress(self): - if self.initUIstat: - reply = QMessageBox.question(self.parent(), - '警告', - "请先连接设备", - QMessageBox.Yes) - return + # if self.initUIstat: + # reply = QMessageBox.question(self.parent(), + # '警告', + # "请先连接设备", + # QMessageBox.Yes) + # return - oldAddress = self.blockManage.address + # oldAddress = int(self.blockManage.address) + oldAddress = 106 self.editAddressWidget = EditAddressWidget(oldAddress) if self.editAddressWidget.exec_() == QDialog.Accepted: - newAddress = self.editAddressWidget.editAddressEdit.text() + newAddress = int(self.editAddressWidget.editAddressEdit.text()) self.blockManage.DPV1Master.editDevAddress(oldAddress, newAddress) diff --git a/UI/BlockParameterModel.py b/UI/BlockParameterModel.py index 9366030..58d6189 100644 --- a/UI/BlockParameterModel.py +++ b/UI/BlockParameterModel.py @@ -11,6 +11,7 @@ QComboBox, QStyledItemDelegate, QVBoxLayout, QSplitter from UI.LoadingDataWidget import LoadingDataWidget from UI.ObjectTypeEditlayout import ObjectTypeEditlayout + from utils import Globals class VarTableModel(QAbstractTableModel): @@ -131,7 +132,6 @@ class VarTableModel(QAbstractTableModel): self.table.proxy.invalidate() def updateValue(self, valueList): - print(len(valueList), len(self.datas)) for index, value in enumerate(valueList): self.datas[index][5] = value self.table.proxy.invalidate() @@ -180,18 +180,29 @@ class VarButtonDelegate(QItemDelegate): - + if objectType == 'TARGET_MODE': combox = QComboBox() combox.setObjectName('modeCombox') combox.addItems(["非服务", "手动初始化", "本地超驰", '手动', '自动', '级联', '远程级联', '远程输出']) combox.setCurrentIndex(-1) - combox.currentIndexChanged.connect(lambda index : self.startAction(modelIndex = index)) + combox.currentIndexChanged.connect(lambda index: self.startAction(modelIndex = index)) boxLayout.addWidget(combox, 10) boxLayout.addWidget(refreshButton,1) + combox.index = [index.row(), index.column()] + + elif objectType == 'SENSOR_UNIT': + comboxUnit = QComboBox() + comboxUnit.setObjectName('modeCombox') + comboxUnit.addItems(["kPa", "bar", "psi", 'inHg']) + comboxUnit.setCurrentIndex(-1) + comboxUnit.currentIndexChanged.connect(lambda index, comboxUnit = comboxUnit : self.startAction(modelIndex = index, comboxUnit = comboxUnit)) + boxLayout.addWidget(comboxUnit, 10) + boxLayout.addWidget(refreshButton,1) + comboxUnit.index = [index.row(), index.column()] else: - boxLayout.addLayout(editlineLayout) + boxLayout.addLayout(editlineLayout) startActionBtn.clicked.connect(lambda: self.startAction(objectTypeEditlayout = editlineLayout)) boxLayout.addWidget(startActionBtn) boxLayout.addWidget(refreshButton) @@ -209,49 +220,68 @@ class VarButtonDelegate(QItemDelegate): ) - def startAction(self, objectTypeEditlayout = None, modelIndex = None): + def startAction(self, objectTypeEditlayout = None, modelIndex = None, comboxUnit = None): sender = self.sender() blockView = self.parent() model = blockView.model blockType = blockView.blockType blockIndex = blockView.blcokIndex + parmIndex = model.datas[sender.index[0]][0] blockManage = Globals.getValue('blockManage') - - if modelIndex or str(modelIndex) == '0' : - values = modelIndex - self.refreshData(modelIndex) - - else: - parmIndex = model.datas[sender.index[0]][0] - values = objectTypeEditlayout.getEditlineValue() - # if not values: - # reply = QMessageBox.question(self.parent(), - # '警告', - # "请输入强制值或数字", - # QMessageBox.Yes) - # return - - # for value in values: - # # print(value) - # pattern = re.compile(r'[^0-9\.-]+') - # if not value or re.findall(pattern, str(value)): - # reply = QMessageBox.question(self.parent(), - # '警告', - # "请输入强制值或数字", - # QMessageBox.Yes) - # return - res = blockManage.writeParmValue(blockType, blockIndex, parmIndex, values) - self.refreshData() + values = [] + #修改单位 + if comboxUnit: + match str(modelIndex): + case '0': + values.append('1133') + case '1': + values.append('1137') #kPa(1133),bar(1137).psi(1141),inHg(1155) + case '2': + values.append('1141') + case '3': + values.append('1155') + + #修改操作模式 + else: + if modelIndex or str(modelIndex) == '0' : + + values.append(str(modelIndex)) + #正常修改其他值 + else: + + values = objectTypeEditlayout.getEditlineValue() + dataType = model.datas[sender.index[0]][3] + if not values: + reply = QMessageBox.question(self.parent(), + '警告', + "请输入强制值", + QMessageBox.Yes) + return + match dataType: + case "Float": + for value in values: + pattern = re.compile(r'[^0-9\.-]+') + if not value or re.findall(pattern, str(value)): + reply = QMessageBox.question(self.parent(), + '警告', + "请输入强制值或数字", + QMessageBox.Yes) + return + + res = blockManage.writeParmValue(blockType, blockIndex, parmIndex, values) + self.refreshData() - def refreshData(self, modelIndex = None): + def refreshData(self): sender = self.sender() blockView = self.parent() model = blockView.model parmIndex = model.datas[sender.index[0]][0] + blockType = blockView.blockType blockIndex = blockView.blcokIndex + # print(blockName, blcokIndex, index) blockManage = Globals.getValue('blockManage') value = blockManage.getBlockParmValue(blockType, blockIndex, parmIndex) diff --git a/model/ProjectModel/BlockManage.py b/model/ProjectModel/BlockManage.py index cfb59cd..75a8cd4 100644 --- a/model/ProjectModel/BlockManage.py +++ b/model/ProjectModel/BlockManage.py @@ -52,6 +52,7 @@ class BlockManage(): def __init__(self, address = None): self.address = address if address: + # pass self.initBlocks() @property @@ -140,6 +141,7 @@ class BlockManage(): return block def getBlockNums(self): + # return [1,1,1] return [len(self.blockDict[BlockType.PB]), len(self.blockDict[BlockType.TB]), len(self.blockDict[BlockType.FB])] @classmethod @@ -197,6 +199,19 @@ class Block(): def getTBType(self): return + def getParmIndex(self, blockType, paramName): + match blockType: + case "BlockType.PB": + PhysicalBlock.getIndex(paramName) + + case "BlockType.FB": + AIFunctionBlock.getIndex(paramName) + + case "BlockType.TB": + pass + + + if __name__ == '__main__': b = BlockManage(address = 55) diff --git a/model/ProjectModel/ParmManage.py b/model/ProjectModel/ParmManage.py index 1a4a736..9f6e507 100644 --- a/model/ProjectModel/ParmManage.py +++ b/model/ProjectModel/ParmManage.py @@ -123,7 +123,6 @@ class Parm(): return displayStr def unpackDS32(self, value): - print(value) reserved = self.unpackU8(value[0:1]) blockObject = self.unpackU8(value[1:2]) parentClass = self.unpackU8(value[2:3]) diff --git a/protocol/ModBus/DPV1Master.py b/protocol/ModBus/DPV1Master.py index 9aaf6ac..e9f4a8c 100644 --- a/protocol/ModBus/DPV1Master.py +++ b/protocol/ModBus/DPV1Master.py @@ -130,9 +130,9 @@ class DPV1Master(): return False def editDevAddress(self, oldAddress, newAddress): - oldAddressHex = int(oldAddress).to_bytes(1, byteorder='little') - newAddressHex = int(newAddress).to_bytes(1, byteorder='little') - editAddressStream = b'\x03' + oldAddressHex + newAddressHex + b'\x00' + oldAddressHex = oldAddress.to_bytes(length=1, byteorder='little') + newAddressHex = newAddress.to_bytes(1, byteorder='little') + editAddressStream = b'\x03' + oldAddressHex + b'\x00'+ newAddressHex editAddressDate = struct.unpack('>hh', editAddressStream) self.writeMultipleRegister(1, 750, self.resetData) self.writeMultipleRegister(1, 750, editAddressDate) diff --git a/utils/DBModels/DeviceParModels.py b/utils/DBModels/DeviceParModels.py index 802e50b..a2bd21e 100644 --- a/utils/DBModels/DeviceParModels.py +++ b/utils/DBModels/DeviceParModels.py @@ -43,6 +43,14 @@ class PressureTranslationBlock(BaseModel): except Exception as e: return + @classmethod + def getIndex(cls): + params = cls.get_all() + if params is 'error': + return + + return params.index + def addParame(self, index, paramName, objectType, dataType, saveType, dataSize, accessType, transferType, description): self.index = index self.paramName = paramName @@ -57,6 +65,7 @@ class PressureTranslationBlock(BaseModel): # print(self.createTime) self.save() +