0828update

main
zcwBit 1 year ago
parent d9995cc51d
commit 2a1c28525c

@ -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;
}

Binary file not shown.

Binary file not shown.

@ -176,6 +176,7 @@ class AreaWidget(QWidget):
self.orderCombox = QComboBox() self.orderCombox = QComboBox()
self.orderCombox.addItems(['不转换', '字节转换', '字转换', '字内转换']) self.orderCombox.addItems(['不转换', '字节转换', '字转换', '字内转换'])
self.orderCombox.setObjectName('orderCombox') self.orderCombox.setObjectName('orderCombox')
self.orderCombox.setCurrentIndex(1)
# self.orderCombox.setFixedSize(90, 27) # self.orderCombox.setFixedSize(90, 27)
self.byteLineLabel = QLabel('字节长度:') self.byteLineLabel = QLabel('字节长度:')

@ -3,7 +3,7 @@ import qtawesome
from PyQt5.QtGui import QPixmap, QPainter, QIcon from PyQt5.QtGui import QPixmap, QPainter, QIcon
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QStyledItemDelegate, QStyle, QComboBox, QMessageBox, QPushButton,QStackedWidget, QLineEdit \ 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 utils.DBModels.DeviceParModels import *
from UI.BlockParameterView import ParmView from UI.BlockParameterView import ParmView
from UI.SearchAddressWidget import SearchAddressWidget from UI.SearchAddressWidget import SearchAddressWidget
@ -12,11 +12,12 @@ from utils.DBModels.DeviceParModels import *
from utils import Globals from utils import Globals
from UI.LoadingDataWidget import LoadingDataWidget from UI.LoadingDataWidget import LoadingDataWidget
from UI.EditAddressWidget import EditAddressWidget from UI.EditAddressWidget import EditAddressWidget
from UI.SoftKeyBoardEdit import *
from model.ProjectModel.BlockManage import BlockManage, BlockType, TBType from model.ProjectModel.BlockManage import BlockManage, BlockType, TBType
class ShowImage(QWidget): class ShowImage(QWidget):
def __init__(self, image_path): def __init__(self, image_path):
super().__init__() super().__init__()
@ -49,7 +50,7 @@ class TbCombox(QComboBox):
def initUI(self): def initUI(self):
# 创建ComboBox # 创建ComboBox
self.addItems(["压力转换块", "温度转换块", "物位转换块", "流量转换块", 'WIKA液位计']) self.addItems(["压力转换块", "温度转换块", "物位转换块", "流量转换块", 'WIKA液位计','开封流量计'])
self.setEditable(True) # 设置为可编辑以应用样式表隐藏文本 self.setEditable(True) # 设置为可编辑以应用样式表隐藏文本
self.setObjectName('tbcombox') self.setObjectName('tbcombox')
@ -79,16 +80,19 @@ class DynamicAddBlock(QHBoxLayout):
self.blockViewlist = [] self.blockViewlist = []
self.tbtypeList = TbtypeList #存放转换块的各种类型 self.tbtypeList = TbtypeList #存放转换块的各种类型
# print(self.tbtypeList) # print(self.tbtypeList)
self.tbList = ['PressureTranslationBlock', 'TemperatureTranslationBlock', 'LevelTranslationBlock', 'FlowTranslationBlock', 'WiKaLevelTranslationBlock'] #存放四个转换块 self.tbList = ['PressureTranslationBlock', 'TemperatureTranslationBlock', 'LevelTranslationBlock', 'FlowTranslationBlock', 'WiKaLevelTranslationBlock', 'KaiFengFlowTranslationBlock'] #存放四个转换块
self.enumList = [TBType.pressureTB, TBType.tempTB, TBType.levelTB, TBType.flowTB, TBType.wikaLevelTB] self.enumList = [TBType.pressureTB, TBType.tempTB, TBType.levelTB, TBType.flowTB, TBType.wikaLevelTB, TBType.kfFlowTB]
self.initUI() self.initUI()
def initUI(self): def initUI(self):
self.setContentsMargins(0, 0, 0, 0)
pbNumber = self.blocklist[0] pbNumber = self.blocklist[0]
tbNumber = self.blocklist[1] tbNumber = self.blocklist[1]
fbNumber = self.blocklist[2] fbNumber = self.blocklist[2]
for i in range(pbNumber): for i in range(pbNumber):
pblockBtn = QPushButton('物理块') pblockBtn = QPushButton('物理块')
@ -145,7 +149,7 @@ class DynamicAddBlock(QHBoxLayout):
case None: case None:
tbcombox.setCurrentIndex(4) tbcombox.setCurrentIndex(4)
tblockBtn = QPushButton(tbcombox.currentText() + str(i + 1)) tblockBtn = QPushButton(tbcombox.currentText() + str(i + 1))
print(1)
@ -190,7 +194,7 @@ class DynamicAddBlock(QHBoxLayout):
buttonNumber = button.text()[-1] buttonNumber = button.text()[-1]
button.setText(tbType + str(buttonNumber)) button.setText(tbType + str(buttonNumber))
if button.isChecked(): 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) print(stackIndex)
self.parameStackWidget.setCurrentIndex(stackIndex) self.parameStackWidget.setCurrentIndex(stackIndex)
@ -238,7 +242,7 @@ class BlockParameterManageWidget(QWidget):
self.settingLayout = QHBoxLayout() self.settingLayout = QHBoxLayout()
self.deviceAddressLabel = QLabel('从站地址') self.deviceAddressLabel = QLabel('从站地址')
self.deviceAddressLabel.setObjectName('deviceAddressLabel') self.deviceAddressLabel.setObjectName('deviceAddressLabel')
self.deviceAddressEdit = QLineEdit() self.deviceAddressEdit = SoftKeyBoardEdit()
self.deviceAddressEdit.returnPressed.connect(self.loadBlackData) self.deviceAddressEdit.returnPressed.connect(self.loadBlackData)
self.deviceAddressEdit.setObjectName("deviceAddressEdit") self.deviceAddressEdit.setObjectName("deviceAddressEdit")
@ -272,6 +276,11 @@ class BlockParameterManageWidget(QWidget):
self.settingLayout.addWidget(self.refershDataBtn, 1) self.settingLayout.addWidget(self.refershDataBtn, 1)
# self.settingLayout.addLayout(self.blockLayout) # self.settingLayout.addLayout(self.blockLayout)
# self.settingLayout.setSpacing(5) # self.settingLayout.setSpacing(5)
self.scroArea = QScrollArea()
self.scroArea.setObjectName('scroArea')
self.scroArea.horizontalScrollBar().setObjectName('scroBar')
self.splitter = QSplitter() self.splitter = QSplitter()
self.settingLayout.addWidget(self.splitter, 18) self.settingLayout.addWidget(self.splitter, 18)
@ -288,7 +297,7 @@ class BlockParameterManageWidget(QWidget):
address = self.deviceAddressEdit.text() address = self.deviceAddressEdit.text()
# print(address) # print(address)
if 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) match = pattern.match(address)
else: else:
@ -299,7 +308,7 @@ class BlockParameterManageWidget(QWidget):
return return
if not match: if not match:
QMessageBox.warning(self, '提示', '请输入2 - 127') QMessageBox.warning(self, '提示', '请输入3 - 126')
return return
if self.initUIstat: if self.initUIstat:
@ -319,8 +328,12 @@ class BlockParameterManageWidget(QWidget):
Globals.setValue('blockManage', self.blockManage) Globals.setValue('blockManage', self.blockManage)
blocklist = self.blockManage.getBlockNums() blocklist = self.blockManage.getBlockNums()
self.blockLayout = DynamicAddBlock(blocklist, self.blockManage.TBTypeList) self.blockLayout = DynamicAddBlock(blocklist, self.blockManage.TBTypeList)
self.settingLayout.addLayout(self.blockLayout, 7) self.scroWidget = QWidget()
self.settingLayout.addWidget(self.splitter, 11) 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.mainlayout.addWidget(self.blockLayout.parameStackWidget, 20)
self.initUIstat = False self.initUIstat = False
self.recordAddress = address #记录链接成功的站地址 self.recordAddress = address #记录链接成功的站地址
@ -344,12 +357,16 @@ class BlockParameterManageWidget(QWidget):
self.blockLayout.deleteLater() self.blockLayout.deleteLater()
self.splitter.deleteLater() self.splitter.deleteLater()
self.splitter = QSplitter() self.splitter = QSplitter()
# self.scroArea.deleteLater()
blocklist = self.blockManage.getBlockNums() blocklist = self.blockManage.getBlockNums()
TbtypeList = self.blockManage.TBTypeList TbtypeList = self.blockManage.TBTypeList
self.blockLayout = DynamicAddBlock(blocklist, TbtypeList) self.blockLayout = DynamicAddBlock(blocklist, TbtypeList)
self.settingLayout.addLayout(self.blockLayout, 7) self.scroWidget = QWidget()
self.settingLayout.addWidget(self.splitter, 11) 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.mainlayout.addWidget(self.blockLayout.parameStackWidget, 20)
self.recordAddress = address #记录链接成功的站地址 self.recordAddress = address #记录链接成功的站地址
else: else:
@ -406,6 +423,7 @@ class BlockParameterManageWidget(QWidget):
self.blockLayout.deleteLater() self.blockLayout.deleteLater()
self.splitter.deleteLater() self.splitter.deleteLater()
self.splitter = QSplitter() self.splitter = QSplitter()
self.scroArea.deleteLater()
self.widget = ShowImage('Static/pict.png') self.widget = ShowImage('Static/pict.png')
self.mainlayout.addWidget(self.widget, 20) self.mainlayout.addWidget(self.widget, 20)
self.settingLayout.addWidget(self.splitter,18) self.settingLayout.addWidget(self.splitter,18)

@ -51,7 +51,8 @@ class VarTableModel(QAbstractTableModel):
print("列索引超出范围") print("列索引超出范围")
return return
# for row in range(self.rowCount()): # 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) unit = UnitTable.getUnitSymbolByUnitValue(value)
value = unit if unit else value value = unit if unit else value
self.datas[row][6] = value self.datas[row][6] = value
@ -77,7 +78,7 @@ class VarTableModel(QAbstractTableModel):
if role == Qt.TextAlignmentRole: if role == Qt.TextAlignmentRole:
return Qt.AlignCenter return Qt.AlignCenter
if not QModelIndex.isValid(): if not QModelIndex.isValid():
print("行或者列有问题")
return QVariant() return QVariant()
if role == Qt.TextColorRole: if role == Qt.TextColorRole:
@ -139,6 +140,9 @@ class VarTableModel(QAbstractTableModel):
def updateValue(self, valueList): def updateValue(self, valueList):
for index, value in enumerate(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.datas[index][6] = value
self.table.proxy.invalidate() self.table.proxy.invalidate()
@ -198,7 +202,7 @@ class VarButtonDelegate(QItemDelegate):
boxLayout.addWidget(refreshButton,1) boxLayout.addWidget(refreshButton,1)
combox.index = [index.row(), index.column()] combox.index = [index.row(), index.column()]
elif objectType == 'SENSOR_UNIT': elif 'unit' in objectType.lower() or 'unt' in objectType.lower():
comboxUnit = QComboBox() comboxUnit = QComboBox()
comboxUnit.setObjectName('modeCombox') comboxUnit.setObjectName('modeCombox')
comboxUnit.addItem('下拉选择') comboxUnit.addItem('下拉选择')
@ -265,11 +269,10 @@ class VarButtonDelegate(QItemDelegate):
"请输入强制值", "请输入强制值",
QMessageBox.Yes) QMessageBox.Yes)
return return
match dataType: if dataType in ['Float', 'DS-36', 'Unsigned16', 'Unsigned8']:
case "Float": pattern = re.compile(r'^[+-]?(\d+(\.\d*)?|\.\d+)$')
for value in values: for value in values:
pattern = re.compile(r'[^0-9\.-]+') if not value or not re.findall(pattern, str(value)):
if not value or re.findall(pattern, str(value)):
reply = QMessageBox.question(self.parent(), reply = QMessageBox.question(self.parent(),
'警告', '警告',
"请输入强制值或数字", "请输入强制值或数字",

@ -7,7 +7,7 @@ from PyQt5.QtCore import QSize, Qt
from PyQt5.Qt import * from PyQt5.Qt import *
from PyQt5.QtGui import QPixmap, QIcon from PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtWidgets import QHBoxLayout, QAbstractItemView, QVBoxLayout, QSplitter, \ 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 PyQt5.QtWidgets import QSizePolicy, QWidget
from ctypes import POINTER, cast from ctypes import POINTER, cast
@ -21,7 +21,7 @@ from win32.lib import win32con
from windoweffect.window_effect import WindowEffect from windoweffect.window_effect import WindowEffect
from windoweffect.c_structures import MINMAXINFO, NCCALCSIZE_PARAMS from windoweffect.c_structures import MINMAXINFO, NCCALCSIZE_PARAMS
from utils.DBModels.DeviceModels import DeviceDB from utils.DBModels.DeviceModels import DeviceDB
from UI.SoftKeyBoardEdit import *
class DeviceDialog(QDialog): class DeviceDialog(QDialog):
@ -36,22 +36,22 @@ class DeviceDialog(QDialog):
self.resize(306, 451) self.resize(306, 451)
self.setObjectName('deviceDialog') self.setObjectName('deviceDialog')
self.deviceNameEdit = QLineEdit() self.deviceNameEdit = SoftKeyBoardEdit()
self.deviceNameEdit.setPlaceholderText("设备名称") self.deviceNameEdit.setPlaceholderText("设备名称")
self.deviceNameEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.deviceNameEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
self.deviceNameEdit.setObjectName('deviceMesEdit') self.deviceNameEdit.setObjectName('deviceMesEdit')
self.pvUpperEdit = QLineEdit() self.pvUpperEdit = SoftKeyBoardEdit()
self.pvUpperEdit.setPlaceholderText("量程上限") self.pvUpperEdit.setPlaceholderText("量程上限")
self.pvUpperEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.pvUpperEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
self.pvUpperEdit.setObjectName('deviceMesEdit') self.pvUpperEdit.setObjectName('deviceMesEdit')
self.pvLowerEdit = QLineEdit() self.pvLowerEdit = SoftKeyBoardEdit()
self.pvLowerEdit.setPlaceholderText("量程下限") self.pvLowerEdit.setPlaceholderText("量程下限")
self.pvLowerEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.pvLowerEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
self.pvLowerEdit.setObjectName('deviceMesEdit') self.pvLowerEdit.setObjectName('deviceMesEdit')
self.pvUnitEdit = QLineEdit() self.pvUnitEdit = SoftKeyBoardEdit()
self.pvUnitEdit.setPlaceholderText("单位") self.pvUnitEdit.setPlaceholderText("单位")
self.pvUnitEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.pvUnitEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
self.pvUnitEdit.setObjectName('deviceMesEdit') self.pvUnitEdit.setObjectName('deviceMesEdit')

@ -23,7 +23,7 @@ from windoweffect.c_structures import MINMAXINFO, NCCALCSIZE_PARAMS
from utils.DBModels.DeviceModels import DeviceDB from utils.DBModels.DeviceModels import DeviceDB
from model.ConfigModel.GSDManage import GsdParser from model.ConfigModel.GSDManage import GsdParser
from UI.SoftKeyBoardEdit import *
from protocol.ModBus.DPV1Master import DPV1Master from protocol.ModBus.DPV1Master import DPV1Master
class EditAddressWidget(QDialog): class EditAddressWidget(QDialog):
@ -37,12 +37,12 @@ class EditAddressWidget(QDialog):
self.resize(306, 350) self.resize(306, 350)
self.setObjectName('deviceDialog') self.setObjectName('deviceDialog')
self.newAddressEdit = QLineEdit() self.newAddressEdit = SoftKeyBoardEdit()
self.newAddressEdit.setPlaceholderText("请输入目标站地址") self.newAddressEdit.setPlaceholderText("请输入目标站地址")
self.newAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.newAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
self.newAddressEdit.setObjectName('deviceMesEdit') self.newAddressEdit.setObjectName('deviceMesEdit')
self.oldAddressEdit = QLineEdit() self.oldAddressEdit = SoftKeyBoardEdit()
self.oldAddressEdit.setPlaceholderText("请输入原站地址") self.oldAddressEdit.setPlaceholderText("请输入原站地址")
self.oldAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.oldAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
self.oldAddressEdit.setObjectName('deviceMesEdit') self.oldAddressEdit.setObjectName('deviceMesEdit')

@ -119,6 +119,7 @@ class MainWindow(QWidget):
self.valueBtn.setIcon(qtawesome.icon('fa.pencil', color='#1fbb6f')) self.valueBtn.setIcon(qtawesome.icon('fa.pencil', color='#1fbb6f'))
self.valueBtn.setIconSize(QSize(25, 25)) self.valueBtn.setIconSize(QSize(25, 25))
self.valueBtn.setCheckable(True) self.valueBtn.setCheckable(True)
self.valueBtn.clicked.connect(self.switchDeviceValueManageWidget)
self.deviceParameterManageBtn = QPushButton('设备参数管理') self.deviceParameterManageBtn = QPushButton('设备参数管理')
@ -211,7 +212,7 @@ class MainWindow(QWidget):
self.stackWidget.addWidget(self.upperWidget) self.stackWidget.addWidget(self.upperWidget)
self.stackWidget.addWidget(QWidget()) self.stackWidget.addWidget(QWidget())
self.stackWidget.addWidget(self.blockParameterManageWidget) self.stackWidget.addWidget(self.blockParameterManageWidget)
self.valueBtn.clicked.connect(lambda : self.stackWidget.setCurrentIndex(0))
self.mainLayout = QVBoxLayout(self) self.mainLayout = QVBoxLayout(self)
self.mainLayout.addLayout(toolbarLayout, 1) self.mainLayout.addLayout(toolbarLayout, 1)
@ -310,13 +311,23 @@ class MainWindow(QWidget):
startupInfo.wShowWindow = 2 startupInfo.wShowWindow = 2
self.process = subprocess.Popen("D:\\EnTalk PROFIBUS Manager\\DP.exe",startupinfo=startupInfo) self.process = subprocess.Popen("D:\\EnTalk PROFIBUS Manager\\DP.exe",startupinfo=startupInfo)
QTimer.singleShot(500, lambda:self.showLowerWidget(self.process)) QTimer.singleShot(500, lambda:self.showLowerWidget(self.process))
self.showMaximized() # self.showFullScreen()
# self.switchBtn.setIcon(QIcon(':/static/varMagH.png')) # 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): def switchDeviceParManageWidget(self):
# if self.deviceParameterManageBtn.isChecked(): # if self.deviceParameterManageBtn.isChecked():
self.stackWidget.setCurrentIndex(2) self.stackWidget.setCurrentIndex(2)
try:
self.stackWidget.widget(3).clearFocus()
except Exception as e:
pass
# self.deviceParameterManageBtn.setText('变量读写') # self.deviceParameterManageBtn.setText('变量读写')
self.deviceParameterManageBtn.setIcon(qtawesome.icon('fa.pencil-square-o', color='#1fbb6f')) self.deviceParameterManageBtn.setIcon(qtawesome.icon('fa.pencil-square-o', color='#1fbb6f'))
@ -336,14 +347,14 @@ class MainWindow(QWidget):
widget = QWidget.createWindowContainer(QWindow.fromWinId(hwnd)) widget = QWidget.createWindowContainer(QWindow.fromWinId(hwnd))
# print(type(widget)) # print(type(widget))
widget.hwnd = hwnd # 窗口句柄 widget.hwnd = hwnd # 窗口句柄
widget.phwnd = 0 # 父窗口句柄 widget.phwnd = int(self.winId()) # 父窗口句柄
widget.style = style # 窗口样式 widget.style = style # 窗口样式
widget.exstyle = exstyle # 窗口额外样式 widget.exstyle = exstyle # 窗口额外样式
widget.wrect = wrect # 窗口位置 widget.wrect = wrect # 窗口位置
self.stackWidget.addWidget(widget) self.stackWidget.addWidget(widget)
widget.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint | Qt.WindowFullScreen) widget.setWindowFlags(Qt.FramelessWindowHint)
win32gui.SetParent(hwnd, int(self.winId())) win32gui.SetParent(hwnd, int(self.winId()))

@ -1,6 +1,6 @@
from PyQt5.QtWidgets import QLineEdit, QVBoxLayout from PyQt5.QtWidgets import QLineEdit, QVBoxLayout
from UI.SoftKeyBoardEdit import *
class ObjectTypeEditlayout(QVBoxLayout): class ObjectTypeEditlayout(QVBoxLayout):
def __init__(self, objectType, dataType): def __init__(self, objectType, dataType):
super().__init__() super().__init__()
@ -11,10 +11,10 @@ class ObjectTypeEditlayout(QVBoxLayout):
def initUI(self): def initUI(self):
self.editline1 = QLineEdit() self.editline1 = SoftKeyBoardEdit()
self.editline2 = QLineEdit() self.editline2 = SoftKeyBoardEdit()
self.editline3 = QLineEdit() self.editline3 = SoftKeyBoardEdit()
self.editline4 = QLineEdit() self.editline4 = SoftKeyBoardEdit()
self.editline1.setObjectName('parameEditline') self.editline1.setObjectName('parameEditline')
self.editline2.setObjectName('parameEditline') self.editline2.setObjectName('parameEditline')
self.editline3.setObjectName('parameEditline') self.editline3.setObjectName('parameEditline')
@ -68,7 +68,6 @@ class ObjectTypeEditlayout(QVBoxLayout):
def getEditlineValue(self): def getEditlineValue(self):
valueList = [] valueList = []
print(self.editlineList,6777)
for editline in self.editlineList: for editline in self.editlineList:
value = editline.text() value = editline.text()
valueList.append(value) valueList.append(value)

@ -45,7 +45,7 @@ class SoftKeyBoardEdit(QLineEdit):
def mousePressEvent(self, event): def mousePressEvent(self, event):
print(Globals.getValue('_touchMode')) # print(Globals.getValue('_touchMode'))
if Globals.getValue('_touchMode'): if Globals.getValue('_touchMode'):
self.toggleTabtip() self.toggleTabtip()
event.accept() event.accept()

@ -39,6 +39,7 @@ if __name__ == '__main__':
Client.initDB() Client.initDB()
window = MainWindow() window = MainWindow()
window.showFullScreen() window.showFullScreen()
# window.showMaximized()
Globals.setValue('MainWindow', window) Globals.setValue('MainWindow', window)
# window.show() # window.show()
sys.exit(app.exec_()) sys.exit(app.exec_())

@ -18,6 +18,6 @@ class Client(object):
else: else:
self.deviceDB = SqliteDatabase(dbPath) self.deviceDB = SqliteDatabase(dbPath)
client_proxy.initialize(self.deviceDB) 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.connect()
self.deviceDB.create_tables(modelsArr, safe = True) self.deviceDB.create_tables(modelsArr, safe = True)

@ -40,6 +40,7 @@ class TBType(Enum):
levelTB = -3 # 物位转换块 levelTB = -3 # 物位转换块
pressureTB = -4 pressureTB = -4
wikaLevelTB = -5 wikaLevelTB = -5
kfFlowTB = -6
class BlockManage(): class BlockManage():
_instance = None _instance = None
@ -53,7 +54,7 @@ class BlockManage():
# return cls._instance # return cls._instance
def __init__(self, _isPa, address = None): def __init__(self, _isPa, address = None):
print(_isPa) # print(_isPa)
self._isPa = _isPa self._isPa = _isPa
self.address = address self.address = address
self.TBTypeList = [] self.TBTypeList = []
@ -74,7 +75,7 @@ class BlockManage():
def initBlocks(self): def initBlocks(self):
# print(self._isPa,5555) # print(self._isPa,5555)
if not self.DPV1Master.judgeSlave(self.address): if not self.DPV1Master.judgeSlave(self.address):
print(self.address) # print(self.address)
raise RuntimeError(f"连接从站{self.address}失败.") raise RuntimeError(f"连接从站{self.address}失败.")
self.blockDict = { self.blockDict = {
BlockType.PB : [], BlockType.PB : [],
@ -111,16 +112,18 @@ class BlockManage():
else: else:
dirMesDic[blockIndex] = blockNums dirMesDic[blockIndex] = blockNums
# print(dirMesDic) # print(dirMesDic)
entryTuples = [] # entryTuples = []
for key, value in dirMesDic.items(): for key, value in dirMesDic.items():
# print(key, value) # print(key, value)
if key == 1: 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: else:
data = self.DPV1Master.readParm(address = self.address, slot = 1, index = key, length = 4 * value) data = self.DPV1Master.readParm(address = self.address, slot = 1, index = key, length = 4 * value)
# print(data, int(len(data)/2)) # print(data, int(len(data)/2))
# print(data) # print(data)
data = struct.unpack('>{}h'.format(int(len(data)/2)), 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)] tuples = [(data[i], data[i+1]) for i in range(0, len(data), 2)]
entryTuples += tuples entryTuples += tuples
# print(entryTuples) # print(entryTuples)
@ -130,11 +133,12 @@ class BlockManage():
blkDirMesByte = struct.pack('>h', entryTuples[typeIndex][0]) blkDirMesByte = struct.pack('>h', entryTuples[typeIndex][0])
blkIndex = int(blkDirMesByte[0]) # 目录对象编号 blkIndex = int(blkDirMesByte[0]) # 目录对象编号
blkoffect = int(blkDirMesByte[1]) # 块从第几个Dir_Entry开始 blkoffect = int(blkDirMesByte[1]) # 块从第几个Dir_Entry开始
# print(blkoffect)
numBlk = entryTuples[typeIndex][1] # 块数量 numBlk = entryTuples[typeIndex][1] # 块数量
# print(blkIndex, blkoffect, numBlk) # print(blkIndex, blkoffect, numBlk)
for i in range(numBlk): for i in range(numBlk):
blkEntryListIndex = blkoffect - 1 + i blkEntryListIndex = blkoffect - 1 + i
# print(blkEntryListIndex, entryTuples) print(blkEntryListIndex, entryTuples)
blkPointerByte = struct.pack('>h', entryTuples[blkEntryListIndex][0]) blkPointerByte = struct.pack('>h', entryTuples[blkEntryListIndex][0])
numBlkParms = entryTuples[blkEntryListIndex][1] numBlkParms = entryTuples[blkEntryListIndex][1]
blkSlot = int(blkPointerByte[0]) blkSlot = int(blkPointerByte[0])
@ -215,7 +219,8 @@ class Block():
TBType.pressureTB: PressureTranslationBlock.getallParame, TBType.pressureTB: PressureTranslationBlock.getallParame,
TBType.tempTB: TemperatureTranslationBlock.getallParame, TBType.tempTB: TemperatureTranslationBlock.getallParame,
TBType.levelTB: LevelTranslationBlock.getallParame, TBType.levelTB: LevelTranslationBlock.getallParame,
TBType.wikaLevelTB: WiKaLevelTranslationBlock.getallParame TBType.wikaLevelTB: WiKaLevelTranslationBlock.getallParame,
TBType.kfFlowTB: KaiFengFlowTranslationBlock.getallParame
}.get(self.blockType, lambda: []) }.get(self.blockType, lambda: [])
parmsData = getParmsFunc() parmsData = getParmsFunc()

@ -120,7 +120,7 @@ class Parm():
valueByte, statusByte = value[:4], value[4].to_bytes(1, byteorder='little') valueByte, statusByte = value[:4], value[4].to_bytes(1, byteorder='little')
value = self.unpackFloat(valueByte) value = self.unpackFloat(valueByte)
status = self.unpackU8(statusByte) status = self.unpackU8(statusByte)
displayStr = '值:{}\r\n状态:{}'.format(value, status) displayStr = '值:{}状态:{}'.format(value, status)
return displayStr return displayStr
def unpackDS32(self, value): def unpackDS32(self, value):
@ -142,7 +142,7 @@ class Parm():
def unpackDS36(self, value): 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') EU100Byte, EU0Byte, unitByte, decPointByte = value[:4], value[4:8], value[8:10], value[10].to_bytes(1, byteorder='little')
EU100 = self.unpackFloat(EU100Byte) EU100 = self.unpackFloat(EU100Byte)
EU0 = self.unpackFloat(EU0Byte) EU0 = self.unpackFloat(EU0Byte)

@ -150,7 +150,7 @@ class DPV1Master():
closeProtocolHex = b'\x05\x00' closeProtocolHex = b'\x05\x00'
closeProtocolData = struct.unpack('>h', closeProtocolHex) closeProtocolData = struct.unpack('>h', closeProtocolHex)
self.writeMultipleRegister(1, 750, closeProtocolData) self.writeMultipleRegister(1, 750, closeProtocolData)
time.sleep(1) time.sleep(1.5)
# print(identNumer) # print(identNumer)
idHighHex = int(identNumer[:2], 16).to_bytes(1, byteorder='little') idHighHex = int(identNumer[:2], 16).to_bytes(1, byteorder='little')
idLowHex = 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) editAddressDate = struct.unpack('>hhhh', editAddressStream)
# print(editAddressDate) # print(editAddressDate)
self.writeMultipleRegister(1, 750, self.resetData) self.writeMultipleRegister(1, 750, self.resetData)
time.sleep(0.2) time.sleep(0.7)
self.writeMultipleRegister(1, 750, editAddressDate) self.writeMultipleRegister(1, 750, editAddressDate)
time.sleep(0.4) time.sleep(0.4)
value = self.readHoldingRegisters(1, 750, 2) value = self.readHoldingRegisters(1, 750, 2)

@ -154,6 +154,18 @@ class WiKaLevelTranslationBlock(PressureTranslationBlock):
description = CharField() description = CharField()
createTime = 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): class UnitTable(BaseModel):
unitValue = CharField() unitValue = CharField()

Loading…
Cancel
Save