diff --git a/Static/Main.qss b/Static/Main.qss index c245a13..beb134f 100644 --- a/Static/Main.qss +++ b/Static/Main.qss @@ -474,6 +474,38 @@ QWidget#deviceWidget{ } +QWidget#scroWidget{ + + background-color: white; + + hight: 25px; + +} + +QScrollArea#scroArea{ + + border: none; + + + +} + +QScrollBar#scroBar{ + + background: white; + + height: 5px; + +} + +QScrollBar#scroBar::handle{ + + background: gray; + + height: 5px; + +} + diff --git a/Static/PA块信息表.xlsx b/Static/PA块信息表.xlsx index da87d2c..a08466b 100644 Binary files a/Static/PA块信息表.xlsx and b/Static/PA块信息表.xlsx differ diff --git a/Static/PA块信息表all.xlsx b/Static/PA块信息表all.xlsx index 1bad873..850489b 100644 Binary files a/Static/PA块信息表all.xlsx and b/Static/PA块信息表all.xlsx differ diff --git a/UI/AreaTabWidget.py b/UI/AreaTabWidget.py index 66773b1..aa3f267 100644 --- a/UI/AreaTabWidget.py +++ b/UI/AreaTabWidget.py @@ -176,6 +176,7 @@ class AreaWidget(QWidget): self.orderCombox = QComboBox() self.orderCombox.addItems(['不转换', '字节转换', '字转换', '字内转换']) self.orderCombox.setObjectName('orderCombox') + self.orderCombox.setCurrentIndex(1) # self.orderCombox.setFixedSize(90, 27) self.byteLineLabel = QLabel('字节长度:') diff --git a/UI/BlockParameterManageWidget.py b/UI/BlockParameterManageWidget.py index 5c8fc75..7739846 100644 --- a/UI/BlockParameterManageWidget.py +++ b/UI/BlockParameterManageWidget.py @@ -3,7 +3,7 @@ import qtawesome from PyQt5.QtGui import QPixmap, QPainter, QIcon from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QStyledItemDelegate, QStyle, QComboBox, QMessageBox, QPushButton,QStackedWidget, QLineEdit \ -, QVBoxLayout, QHBoxLayout, QWidget, QLabel, QSplitter, QButtonGroup, QDialog, QRadioButton +, QVBoxLayout, QHBoxLayout, QWidget, QLabel, QSplitter, QScrollArea, QButtonGroup, QDialog, QRadioButton from utils.DBModels.DeviceParModels import * from UI.BlockParameterView import ParmView from UI.SearchAddressWidget import SearchAddressWidget @@ -12,11 +12,12 @@ from utils.DBModels.DeviceParModels import * from utils import Globals from UI.LoadingDataWidget import LoadingDataWidget from UI.EditAddressWidget import EditAddressWidget - +from UI.SoftKeyBoardEdit import * from model.ProjectModel.BlockManage import BlockManage, BlockType, TBType + class ShowImage(QWidget): def __init__(self, image_path): super().__init__() @@ -49,7 +50,7 @@ class TbCombox(QComboBox): def initUI(self): # 创建ComboBox - self.addItems(["压力转换块", "温度转换块", "物位转换块", "流量转换块", 'WIKA液位计']) + self.addItems(["压力转换块", "温度转换块", "物位转换块", "流量转换块", 'WIKA液位计','开封流量计']) self.setEditable(True) # 设置为可编辑以应用样式表隐藏文本 self.setObjectName('tbcombox') @@ -79,16 +80,19 @@ class DynamicAddBlock(QHBoxLayout): self.blockViewlist = [] self.tbtypeList = TbtypeList #存放转换块的各种类型 # print(self.tbtypeList) - self.tbList = ['PressureTranslationBlock', 'TemperatureTranslationBlock', 'LevelTranslationBlock', 'FlowTranslationBlock', 'WiKaLevelTranslationBlock'] #存放四个转换块 - self.enumList = [TBType.pressureTB, TBType.tempTB, TBType.levelTB, TBType.flowTB, TBType.wikaLevelTB] + self.tbList = ['PressureTranslationBlock', 'TemperatureTranslationBlock', 'LevelTranslationBlock', 'FlowTranslationBlock', 'WiKaLevelTranslationBlock', 'KaiFengFlowTranslationBlock'] #存放四个转换块 + self.enumList = [TBType.pressureTB, TBType.tempTB, TBType.levelTB, TBType.flowTB, TBType.wikaLevelTB, TBType.kfFlowTB] self.initUI() def initUI(self): + self.setContentsMargins(0, 0, 0, 0) + pbNumber = self.blocklist[0] tbNumber = self.blocklist[1] fbNumber = self.blocklist[2] + for i in range(pbNumber): pblockBtn = QPushButton('物理块') @@ -145,7 +149,7 @@ class DynamicAddBlock(QHBoxLayout): case None: tbcombox.setCurrentIndex(4) tblockBtn = QPushButton(tbcombox.currentText() + str(i + 1)) - print(1) + @@ -190,7 +194,7 @@ class DynamicAddBlock(QHBoxLayout): buttonNumber = button.text()[-1] button.setText(tbType + str(buttonNumber)) if button.isChecked(): - stackIndex = (int(self.blocklist[0]) + int(self.blocklist[2]) + index) + (int(buttonNumber) - 1) * 5 + stackIndex = (int(self.blocklist[0]) + int(self.blocklist[2]) + index) + (int(buttonNumber) - 1) * 6 print(stackIndex) self.parameStackWidget.setCurrentIndex(stackIndex) @@ -238,7 +242,7 @@ class BlockParameterManageWidget(QWidget): self.settingLayout = QHBoxLayout() self.deviceAddressLabel = QLabel('从站地址') self.deviceAddressLabel.setObjectName('deviceAddressLabel') - self.deviceAddressEdit = QLineEdit() + self.deviceAddressEdit = SoftKeyBoardEdit() self.deviceAddressEdit.returnPressed.connect(self.loadBlackData) self.deviceAddressEdit.setObjectName("deviceAddressEdit") @@ -272,6 +276,11 @@ class BlockParameterManageWidget(QWidget): self.settingLayout.addWidget(self.refershDataBtn, 1) # self.settingLayout.addLayout(self.blockLayout) # self.settingLayout.setSpacing(5) + self.scroArea = QScrollArea() + self.scroArea.setObjectName('scroArea') + self.scroArea.horizontalScrollBar().setObjectName('scroBar') + + self.splitter = QSplitter() self.settingLayout.addWidget(self.splitter, 18) @@ -288,7 +297,7 @@ 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-7])$') + pattern = re.compile(r'^(?:[3-9]|[1-9][0-9]|1[0-1][0-9]|12[0-6])$') match = pattern.match(address) else: @@ -299,7 +308,7 @@ class BlockParameterManageWidget(QWidget): return if not match: - QMessageBox.warning(self, '提示', '请输入2 - 127。') + QMessageBox.warning(self, '提示', '请输入3 - 126。') return if self.initUIstat: @@ -319,8 +328,12 @@ class BlockParameterManageWidget(QWidget): Globals.setValue('blockManage', self.blockManage) blocklist = self.blockManage.getBlockNums() self.blockLayout = DynamicAddBlock(blocklist, self.blockManage.TBTypeList) - self.settingLayout.addLayout(self.blockLayout, 7) - self.settingLayout.addWidget(self.splitter, 11) + self.scroWidget = QWidget() + self.scroWidget.setObjectName('scroWidget') + self.scroWidget.setLayout(self.blockLayout) + self.scroArea.setWidget(self.scroWidget) + self.settingLayout.addWidget(self.scroArea, 18) + # self.settingLayout.addWidget(self.splitter, 11) self.mainlayout.addWidget(self.blockLayout.parameStackWidget, 20) self.initUIstat = False self.recordAddress = address #记录链接成功的站地址 @@ -344,12 +357,16 @@ class BlockParameterManageWidget(QWidget): self.blockLayout.deleteLater() self.splitter.deleteLater() self.splitter = QSplitter() + # self.scroArea.deleteLater() blocklist = self.blockManage.getBlockNums() TbtypeList = self.blockManage.TBTypeList self.blockLayout = DynamicAddBlock(blocklist, TbtypeList) - self.settingLayout.addLayout(self.blockLayout, 7) - self.settingLayout.addWidget(self.splitter, 11) + self.scroWidget = QWidget() + self.scroWidget.setObjectName('scroWidget') + self.scroWidget.setLayout(self.blockLayout) + self.scroArea.setWidget(self.scroWidget) + self.settingLayout.addWidget(self.scroArea, 18) self.mainlayout.addWidget(self.blockLayout.parameStackWidget, 20) self.recordAddress = address #记录链接成功的站地址 else: @@ -406,6 +423,7 @@ class BlockParameterManageWidget(QWidget): self.blockLayout.deleteLater() self.splitter.deleteLater() self.splitter = QSplitter() + self.scroArea.deleteLater() self.widget = ShowImage('Static/pict.png') self.mainlayout.addWidget(self.widget, 20) self.settingLayout.addWidget(self.splitter,18) diff --git a/UI/BlockParameterModel.py b/UI/BlockParameterModel.py index 7c35fef..ce4e582 100644 --- a/UI/BlockParameterModel.py +++ b/UI/BlockParameterModel.py @@ -51,7 +51,8 @@ class VarTableModel(QAbstractTableModel): print("列索引超出范围") return # for row in range(self.rowCount()): - if self.datas[row][2] in ['SENSOR_UNIT']: + + if 'unit' in self.datas[row][2].lower() or 'unt' in self.datas[row][2].lower(): unit = UnitTable.getUnitSymbolByUnitValue(value) value = unit if unit else value self.datas[row][6] = value @@ -77,7 +78,7 @@ class VarTableModel(QAbstractTableModel): if role == Qt.TextAlignmentRole: return Qt.AlignCenter if not QModelIndex.isValid(): - print("行或者列有问题") + return QVariant() if role == Qt.TextColorRole: @@ -139,6 +140,9 @@ class VarTableModel(QAbstractTableModel): def updateValue(self, valueList): for index, value in enumerate(valueList): + if 'unit' in self.datas[index][2].lower() or 'unt' in self.datas[index][2].lower(): + unit = UnitTable.getUnitSymbolByUnitValue(value) + value = unit if unit else value self.datas[index][6] = value self.table.proxy.invalidate() @@ -198,7 +202,7 @@ class VarButtonDelegate(QItemDelegate): boxLayout.addWidget(refreshButton,1) combox.index = [index.row(), index.column()] - elif objectType == 'SENSOR_UNIT': + elif 'unit' in objectType.lower() or 'unt' in objectType.lower(): comboxUnit = QComboBox() comboxUnit.setObjectName('modeCombox') comboxUnit.addItem('下拉选择') @@ -265,11 +269,10 @@ class VarButtonDelegate(QItemDelegate): "请输入强制值", QMessageBox.Yes) return - match dataType: - case "Float": + if dataType in ['Float', 'DS-36', 'Unsigned16', 'Unsigned8']: + pattern = re.compile(r'^[+-]?(\d+(\.\d*)?|\.\d+)$') for value in values: - pattern = re.compile(r'[^0-9\.-]+') - if not value or re.findall(pattern, str(value)): + if not value or not re.findall(pattern, str(value)): reply = QMessageBox.question(self.parent(), '警告', "请输入强制值或数字", diff --git a/UI/DeviceDialogWidget.py b/UI/DeviceDialogWidget.py index 26bfe7b..fb28834 100644 --- a/UI/DeviceDialogWidget.py +++ b/UI/DeviceDialogWidget.py @@ -7,7 +7,7 @@ from PyQt5.QtCore import QSize, Qt from PyQt5.Qt import * from PyQt5.QtGui import QPixmap, QIcon from PyQt5.QtWidgets import QHBoxLayout, QAbstractItemView, QVBoxLayout, QSplitter, \ - QApplication, QLabel, QGridLayout, QLineEdit, QComboBox, QTextEdit, QCheckBox,QVBoxLayout,QListView, QMainWindow, QStackedWidget, QMessageBox + QApplication, QLabel, QGridLayout, QComboBox, QTextEdit, QCheckBox,QVBoxLayout,QListView, QMainWindow, QStackedWidget, QMessageBox from PyQt5.QtWidgets import QSizePolicy, QWidget from ctypes import POINTER, cast @@ -21,7 +21,7 @@ from win32.lib import win32con from windoweffect.window_effect import WindowEffect from windoweffect.c_structures import MINMAXINFO, NCCALCSIZE_PARAMS from utils.DBModels.DeviceModels import DeviceDB - +from UI.SoftKeyBoardEdit import * class DeviceDialog(QDialog): @@ -36,22 +36,22 @@ class DeviceDialog(QDialog): self.resize(306, 451) self.setObjectName('deviceDialog') - self.deviceNameEdit = QLineEdit() + self.deviceNameEdit = SoftKeyBoardEdit() self.deviceNameEdit.setPlaceholderText("设备名称") self.deviceNameEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.deviceNameEdit.setObjectName('deviceMesEdit') - self.pvUpperEdit = QLineEdit() + self.pvUpperEdit = SoftKeyBoardEdit() self.pvUpperEdit.setPlaceholderText("量程上限") self.pvUpperEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.pvUpperEdit.setObjectName('deviceMesEdit') - self.pvLowerEdit = QLineEdit() + self.pvLowerEdit = SoftKeyBoardEdit() self.pvLowerEdit.setPlaceholderText("量程下限") self.pvLowerEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.pvLowerEdit.setObjectName('deviceMesEdit') - self.pvUnitEdit = QLineEdit() + self.pvUnitEdit = SoftKeyBoardEdit() self.pvUnitEdit.setPlaceholderText("单位") self.pvUnitEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.pvUnitEdit.setObjectName('deviceMesEdit') diff --git a/UI/EditAddressWidget.py b/UI/EditAddressWidget.py index b780fde..e4de89e 100644 --- a/UI/EditAddressWidget.py +++ b/UI/EditAddressWidget.py @@ -23,7 +23,7 @@ from windoweffect.c_structures import MINMAXINFO, NCCALCSIZE_PARAMS from utils.DBModels.DeviceModels import DeviceDB from model.ConfigModel.GSDManage import GsdParser - +from UI.SoftKeyBoardEdit import * from protocol.ModBus.DPV1Master import DPV1Master class EditAddressWidget(QDialog): @@ -37,12 +37,12 @@ class EditAddressWidget(QDialog): self.resize(306, 350) self.setObjectName('deviceDialog') - self.newAddressEdit = QLineEdit() + self.newAddressEdit = SoftKeyBoardEdit() self.newAddressEdit.setPlaceholderText("请输入目标站地址") self.newAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.newAddressEdit.setObjectName('deviceMesEdit') - self.oldAddressEdit = QLineEdit() + self.oldAddressEdit = SoftKeyBoardEdit() self.oldAddressEdit.setPlaceholderText("请输入原站地址") self.oldAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.oldAddressEdit.setObjectName('deviceMesEdit') diff --git a/UI/MainWindow.py b/UI/MainWindow.py index 82455ad..3eb0e66 100644 --- a/UI/MainWindow.py +++ b/UI/MainWindow.py @@ -119,6 +119,7 @@ class MainWindow(QWidget): self.valueBtn.setIcon(qtawesome.icon('fa.pencil', color='#1fbb6f')) self.valueBtn.setIconSize(QSize(25, 25)) self.valueBtn.setCheckable(True) + self.valueBtn.clicked.connect(self.switchDeviceValueManageWidget) self.deviceParameterManageBtn = QPushButton('设备参数管理') @@ -211,7 +212,7 @@ class MainWindow(QWidget): self.stackWidget.addWidget(self.upperWidget) self.stackWidget.addWidget(QWidget()) self.stackWidget.addWidget(self.blockParameterManageWidget) - self.valueBtn.clicked.connect(lambda : self.stackWidget.setCurrentIndex(0)) + self.mainLayout = QVBoxLayout(self) self.mainLayout.addLayout(toolbarLayout, 1) @@ -310,13 +311,23 @@ class MainWindow(QWidget): startupInfo.wShowWindow = 2 self.process = subprocess.Popen("D:\\EnTalk PROFIBUS Manager\\DP.exe",startupinfo=startupInfo) QTimer.singleShot(500, lambda:self.showLowerWidget(self.process)) - self.showMaximized() + # self.showFullScreen() # self.switchBtn.setIcon(QIcon(':/static/varMagH.png')) + def switchDeviceValueManageWidget(self): + self.stackWidget.setCurrentIndex(0) + try: + self.stackWidget.widget(3).clearFocus() + except Exception as e: + pass def switchDeviceParManageWidget(self): # if self.deviceParameterManageBtn.isChecked(): self.stackWidget.setCurrentIndex(2) + try: + self.stackWidget.widget(3).clearFocus() + except Exception as e: + pass # self.deviceParameterManageBtn.setText('变量读写') self.deviceParameterManageBtn.setIcon(qtawesome.icon('fa.pencil-square-o', color='#1fbb6f')) @@ -336,14 +347,14 @@ class MainWindow(QWidget): widget = QWidget.createWindowContainer(QWindow.fromWinId(hwnd)) # print(type(widget)) widget.hwnd = hwnd # 窗口句柄 - widget.phwnd = 0 # 父窗口句柄 + widget.phwnd = int(self.winId()) # 父窗口句柄 widget.style = style # 窗口样式 widget.exstyle = exstyle # 窗口额外样式 widget.wrect = wrect # 窗口位置 self.stackWidget.addWidget(widget) - widget.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint | Qt.WindowFullScreen) + widget.setWindowFlags(Qt.FramelessWindowHint) win32gui.SetParent(hwnd, int(self.winId())) diff --git a/UI/ObjectTypeEditlayout.py b/UI/ObjectTypeEditlayout.py index 54d59fd..462583d 100644 --- a/UI/ObjectTypeEditlayout.py +++ b/UI/ObjectTypeEditlayout.py @@ -1,6 +1,6 @@ from PyQt5.QtWidgets import QLineEdit, QVBoxLayout - +from UI.SoftKeyBoardEdit import * class ObjectTypeEditlayout(QVBoxLayout): def __init__(self, objectType, dataType): super().__init__() @@ -11,10 +11,10 @@ class ObjectTypeEditlayout(QVBoxLayout): def initUI(self): - self.editline1 = QLineEdit() - self.editline2 = QLineEdit() - self.editline3 = QLineEdit() - self.editline4 = QLineEdit() + self.editline1 = SoftKeyBoardEdit() + self.editline2 = SoftKeyBoardEdit() + self.editline3 = SoftKeyBoardEdit() + self.editline4 = SoftKeyBoardEdit() self.editline1.setObjectName('parameEditline') self.editline2.setObjectName('parameEditline') self.editline3.setObjectName('parameEditline') @@ -68,7 +68,6 @@ class ObjectTypeEditlayout(QVBoxLayout): def getEditlineValue(self): valueList = [] - print(self.editlineList,6777) for editline in self.editlineList: value = editline.text() valueList.append(value) diff --git a/UI/SoftKeyBoardEdit.py b/UI/SoftKeyBoardEdit.py index e8b50c8..0807b7c 100644 --- a/UI/SoftKeyBoardEdit.py +++ b/UI/SoftKeyBoardEdit.py @@ -45,7 +45,7 @@ class SoftKeyBoardEdit(QLineEdit): def mousePressEvent(self, event): - print(Globals.getValue('_touchMode')) + # print(Globals.getValue('_touchMode')) if Globals.getValue('_touchMode'): self.toggleTabtip() event.accept() \ No newline at end of file diff --git a/bin.py b/bin.py index d2a692a..8b95d93 100644 --- a/bin.py +++ b/bin.py @@ -39,6 +39,7 @@ if __name__ == '__main__': Client.initDB() window = MainWindow() window.showFullScreen() + # window.showMaximized() Globals.setValue('MainWindow', window) # window.show() sys.exit(app.exec_()) \ No newline at end of file diff --git a/model/ClientModel/Client.py b/model/ClientModel/Client.py index 8f5abf0..2486b51 100644 --- a/model/ClientModel/Client.py +++ b/model/ClientModel/Client.py @@ -18,6 +18,6 @@ class Client(object): else: self.deviceDB = SqliteDatabase(dbPath) client_proxy.initialize(self.deviceDB) - modelsArr = [DeviceDB, PressureTranslationBlock, PhysicalBlock, AIFunctionBlock, TemperatureTranslationBlock, LevelTranslationBlock, FlowTranslationBlock, WiKaLevelTranslationBlock, UnitTable] + modelsArr = [DeviceDB, PressureTranslationBlock, PhysicalBlock, AIFunctionBlock, TemperatureTranslationBlock, LevelTranslationBlock, FlowTranslationBlock, WiKaLevelTranslationBlock, KaiFengFlowTranslationBlock, UnitTable] self.deviceDB.connect() self.deviceDB.create_tables(modelsArr, safe = True) diff --git a/model/ProjectModel/BlockManage.py b/model/ProjectModel/BlockManage.py index 5f4f5d4..ec6aa99 100644 --- a/model/ProjectModel/BlockManage.py +++ b/model/ProjectModel/BlockManage.py @@ -40,6 +40,7 @@ class TBType(Enum): levelTB = -3 # 物位转换块 pressureTB = -4 wikaLevelTB = -5 + kfFlowTB = -6 class BlockManage(): _instance = None @@ -53,7 +54,7 @@ class BlockManage(): # return cls._instance def __init__(self, _isPa, address = None): - print(_isPa) + # print(_isPa) self._isPa = _isPa self.address = address self.TBTypeList = [] @@ -74,7 +75,7 @@ class BlockManage(): def initBlocks(self): # print(self._isPa,5555) if not self.DPV1Master.judgeSlave(self.address): - print(self.address) + # print(self.address) raise RuntimeError(f"连接从站{self.address}失败.") self.blockDict = { BlockType.PB : [], @@ -111,16 +112,18 @@ class BlockManage(): else: dirMesDic[blockIndex] = blockNums # print(dirMesDic) - entryTuples = [] + # entryTuples = [] for key, value in dirMesDic.items(): # print(key, value) if key == 1: - data = self.DPV1Master.readParm(address = self.address, slot = 1, index = key, length = dirLength + 4 * value) + entryTuples = [] + data = self.DPV1Master.readParm(address = self.address, slot = 1, index = 1, length = dirLength + 4 * value) else: data = self.DPV1Master.readParm(address = self.address, slot = 1, index = key, length = 4 * value) # print(data, int(len(data)/2)) # print(data) data = struct.unpack('>{}h'.format(int(len(data)/2)), data) + # print(data) tuples = [(data[i], data[i+1]) for i in range(0, len(data), 2)] entryTuples += tuples # print(entryTuples) @@ -130,11 +133,12 @@ class BlockManage(): blkDirMesByte = struct.pack('>h', entryTuples[typeIndex][0]) blkIndex = int(blkDirMesByte[0]) # 目录对象编号 blkoffect = int(blkDirMesByte[1]) # 块从第几个Dir_Entry开始 + # print(blkoffect) numBlk = entryTuples[typeIndex][1] # 块数量 # print(blkIndex, blkoffect, numBlk) for i in range(numBlk): blkEntryListIndex = blkoffect - 1 + i - # print(blkEntryListIndex, entryTuples) + print(blkEntryListIndex, entryTuples) blkPointerByte = struct.pack('>h', entryTuples[blkEntryListIndex][0]) numBlkParms = entryTuples[blkEntryListIndex][1] blkSlot = int(blkPointerByte[0]) @@ -215,7 +219,8 @@ class Block(): TBType.pressureTB: PressureTranslationBlock.getallParame, TBType.tempTB: TemperatureTranslationBlock.getallParame, TBType.levelTB: LevelTranslationBlock.getallParame, - TBType.wikaLevelTB: WiKaLevelTranslationBlock.getallParame + TBType.wikaLevelTB: WiKaLevelTranslationBlock.getallParame, + TBType.kfFlowTB: KaiFengFlowTranslationBlock.getallParame }.get(self.blockType, lambda: []) parmsData = getParmsFunc() diff --git a/model/ProjectModel/ParmManage.py b/model/ProjectModel/ParmManage.py index 0da9f88..6d377f7 100644 --- a/model/ProjectModel/ParmManage.py +++ b/model/ProjectModel/ParmManage.py @@ -120,7 +120,7 @@ class Parm(): valueByte, statusByte = value[:4], value[4].to_bytes(1, byteorder='little') value = self.unpackFloat(valueByte) status = self.unpackU8(statusByte) - displayStr = '值:{}\r\n状态:{}'.format(value, status) + displayStr = '值:{}状态:{}'.format(value, status) return displayStr def unpackDS32(self, value): @@ -142,7 +142,7 @@ class Parm(): def unpackDS36(self, value): - print(len(value)) + # print(len(value)) EU100Byte, EU0Byte, unitByte, decPointByte = value[:4], value[4:8], value[8:10], value[10].to_bytes(1, byteorder='little') EU100 = self.unpackFloat(EU100Byte) EU0 = self.unpackFloat(EU0Byte) diff --git a/protocol/ModBus/DPV1Master.py b/protocol/ModBus/DPV1Master.py index 0c5af61..7765bfa 100644 --- a/protocol/ModBus/DPV1Master.py +++ b/protocol/ModBus/DPV1Master.py @@ -150,7 +150,7 @@ class DPV1Master(): closeProtocolHex = b'\x05\x00' closeProtocolData = struct.unpack('>h', closeProtocolHex) self.writeMultipleRegister(1, 750, closeProtocolData) - time.sleep(1) + time.sleep(1.5) # print(identNumer) idHighHex = int(identNumer[:2], 16).to_bytes(1, byteorder='little') idLowHex = int(identNumer[2:], 16).to_bytes(1, byteorder='little') @@ -159,7 +159,7 @@ class DPV1Master(): editAddressDate = struct.unpack('>hhhh', editAddressStream) # print(editAddressDate) self.writeMultipleRegister(1, 750, self.resetData) - time.sleep(0.2) + time.sleep(0.7) self.writeMultipleRegister(1, 750, editAddressDate) time.sleep(0.4) value = self.readHoldingRegisters(1, 750, 2) diff --git a/utils/DBModels/DeviceParModels.py b/utils/DBModels/DeviceParModels.py index 7462cf1..ba7cbe8 100644 --- a/utils/DBModels/DeviceParModels.py +++ b/utils/DBModels/DeviceParModels.py @@ -154,6 +154,18 @@ class WiKaLevelTranslationBlock(PressureTranslationBlock): description = CharField() createTime = CharField() +class KaiFengFlowTranslationBlock(PressureTranslationBlock): + index = CharField() + paramName = CharField() + objectType = CharField() + dataType = CharField() + saveType = CharField() + dataSize = CharField() + accessType = CharField() + transferType = CharField() + description = CharField() + createTime = CharField() + class UnitTable(BaseModel): unitValue = CharField()