|
|
@ -22,28 +22,34 @@ 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 model.ConfigModel.GSDManage import GsdParser
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from protocol.ModBus.DPV1Master import DPV1Master
|
|
|
|
|
|
|
|
|
|
|
|
class EditAddressWidget(QDialog):
|
|
|
|
class EditAddressWidget(QDialog):
|
|
|
|
BORDER_WIDTH = 5 #设圆角
|
|
|
|
BORDER_WIDTH = 5 #设圆角
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, address):
|
|
|
|
def __init__(self):
|
|
|
|
super().__init__()
|
|
|
|
super().__init__()
|
|
|
|
self.address = address
|
|
|
|
|
|
|
|
self.initUI()
|
|
|
|
self.initUI()
|
|
|
|
|
|
|
|
|
|
|
|
def initUI(self):
|
|
|
|
def initUI(self):
|
|
|
|
self.resize(306, 350)
|
|
|
|
self.resize(306, 350)
|
|
|
|
|
|
|
|
|
|
|
|
self.setObjectName('deviceDialog')
|
|
|
|
self.setObjectName('deviceDialog')
|
|
|
|
self.editAddressEdit = QLineEdit()
|
|
|
|
self.newAddressEdit = QLineEdit()
|
|
|
|
self.editAddressEdit.setPlaceholderText("请输入站地址")
|
|
|
|
self.newAddressEdit.setPlaceholderText("请输入目标站地址")
|
|
|
|
self.editAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
|
|
|
self.newAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
|
|
|
self.editAddressEdit.setObjectName('deviceMesEdit')
|
|
|
|
self.newAddressEdit.setObjectName('deviceMesEdit')
|
|
|
|
|
|
|
|
|
|
|
|
self.oldAddressLabel = QLabel(' 当前站地址: ' + str(self.address))
|
|
|
|
self.oldAddressEdit = QLineEdit()
|
|
|
|
self.oldAddressLabel.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
|
|
|
self.oldAddressEdit.setPlaceholderText("请输入原站地址")
|
|
|
|
self.oldAddressLabel.setObjectName('oldAddressLabel')
|
|
|
|
self.oldAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
|
|
|
|
|
|
|
self.oldAddressEdit.setObjectName('deviceMesEdit')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# self.oldAddressLabel = QLabel(' 请输入原站地址: ' + str(self.address))
|
|
|
|
|
|
|
|
# self.oldAddressLabel.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
|
|
|
|
|
|
|
# self.oldAddressLabel.setObjectName('oldAddressLabel')
|
|
|
|
|
|
|
|
|
|
|
|
# self.pvLowerEdit = QLineEdit()
|
|
|
|
# self.pvLowerEdit = QLineEdit()
|
|
|
|
# self.pvLowerEdit.setPlaceholderText("量程下限")
|
|
|
|
# self.pvLowerEdit.setPlaceholderText("量程下限")
|
|
|
@ -63,6 +69,11 @@ class EditAddressWidget(QDialog):
|
|
|
|
enterShortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return), self)
|
|
|
|
enterShortcut = QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return), self)
|
|
|
|
enterShortcut.activated.connect(self.confirmButton.click)
|
|
|
|
enterShortcut.activated.connect(self.confirmButton.click)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.deviceTypeCombox = QComboBox()
|
|
|
|
|
|
|
|
self.deviceTypeCombox.setObjectName('deviceTypeCombox')
|
|
|
|
|
|
|
|
# self.deviceTypeCombox.addItems(['1', '2'])
|
|
|
|
|
|
|
|
self.addCheckItem()
|
|
|
|
|
|
|
|
self.deviceTypeCombox.currentIndexChanged.connect(lambda index: self.changeDeviceType(index = index))
|
|
|
|
|
|
|
|
|
|
|
|
self.exitButton = QPushButton('取消')
|
|
|
|
self.exitButton = QPushButton('取消')
|
|
|
|
self.exitButton.clicked.connect(self.close)
|
|
|
|
self.exitButton.clicked.connect(self.close)
|
|
|
@ -78,8 +89,9 @@ class EditAddressWidget(QDialog):
|
|
|
|
|
|
|
|
|
|
|
|
self.conVerLayout = QVBoxLayout()
|
|
|
|
self.conVerLayout = QVBoxLayout()
|
|
|
|
self.conVerLayout.addWidget(QSplitter(), 1)
|
|
|
|
self.conVerLayout.addWidget(QSplitter(), 1)
|
|
|
|
self.conVerLayout.addWidget(self.oldAddressLabel, 2)
|
|
|
|
self.conVerLayout.addWidget(self.oldAddressEdit, 2)
|
|
|
|
self.conVerLayout.addWidget(self.editAddressEdit, 2)
|
|
|
|
self.conVerLayout.addWidget(self.newAddressEdit, 2)
|
|
|
|
|
|
|
|
self.conVerLayout.addWidget(self.deviceTypeCombox, 2)
|
|
|
|
|
|
|
|
|
|
|
|
# self.conVerLayout.addWidget(self.pvLowerEdit, 1)
|
|
|
|
# self.conVerLayout.addWidget(self.pvLowerEdit, 1)
|
|
|
|
# self.conVerLayout.addWidget(self.pvUnitEdit, 1)
|
|
|
|
# self.conVerLayout.addWidget(self.pvUnitEdit, 1)
|
|
|
@ -95,6 +107,7 @@ class EditAddressWidget(QDialog):
|
|
|
|
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
|
|
|
|
|
|
|
|
self.setLayout(self.verticalLayout)
|
|
|
|
self.setLayout(self.verticalLayout)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 设置模态窗口
|
|
|
|
# 设置模态窗口
|
|
|
|
self.setWindowFlags(self.windowFlags() | Qt.Window)
|
|
|
|
self.setWindowFlags(self.windowFlags() | Qt.Window)
|
|
|
@ -125,22 +138,56 @@ class EditAddressWidget(QDialog):
|
|
|
|
self.setWindowOpacity(0.995) # 设置窗口透明度
|
|
|
|
self.setWindowOpacity(0.995) # 设置窗口透明度
|
|
|
|
self.setWindowFlag(Qt.FramelessWindowHint)
|
|
|
|
self.setWindowFlag(Qt.FramelessWindowHint)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.DPV1Master = DPV1Master('192.168.3.10', 502)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.exec_()
|
|
|
|
|
|
|
|
# def changeDeviceType(self, index):
|
|
|
|
|
|
|
|
# print(index)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def addCheckItem(self):
|
|
|
|
|
|
|
|
self.GSDData = GsdParser.parseGsdFiles('C:\\Users\\zcw\\Desktop\\海南profibus\\现场仪表GSD')
|
|
|
|
|
|
|
|
# deviceTypeCombox
|
|
|
|
|
|
|
|
for GSDDict in self.GSDData:
|
|
|
|
|
|
|
|
self.deviceTypeCombox.addItem(GSDDict['modelName'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def checkInput(self):
|
|
|
|
def checkInput(self):
|
|
|
|
|
|
|
|
|
|
|
|
newaddress = self.editAddressEdit.text()
|
|
|
|
oldAddress = self.oldAddressEdit.text()
|
|
|
|
|
|
|
|
newAddress = self.newAddressEdit.text()
|
|
|
|
if not newaddress:
|
|
|
|
if newAddress and oldAddress:
|
|
|
|
|
|
|
|
pattern = re.compile(r'^(?:[1-9]|[1-9][0-9]|1[0-1][0-9]|12[0-6])$')
|
|
|
|
|
|
|
|
oldmatch = pattern.match(oldAddress)
|
|
|
|
|
|
|
|
newmatch = pattern.match(newAddress)
|
|
|
|
|
|
|
|
if not oldmatch:
|
|
|
|
|
|
|
|
QMessageBox.warning(self, '提示', '请输入2 - 126。')
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
if not newmatch:
|
|
|
|
|
|
|
|
QMessageBox.warning(self, '提示', '请输入2 - 126。')
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
if oldAddress == newAddress:
|
|
|
|
reply = QMessageBox.question(self.parent(),
|
|
|
|
reply = QMessageBox.question(self.parent(),
|
|
|
|
'警告',
|
|
|
|
'警告',
|
|
|
|
"请先连接设备",
|
|
|
|
"站地址重复",
|
|
|
|
QMessageBox.Yes)
|
|
|
|
QMessageBox.Yes)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self.accept() # 所有输入都是数字且不为空时接受对话框
|
|
|
|
reply = QMessageBox.question(self.parent(),
|
|
|
|
|
|
|
|
'警告',
|
|
|
|
|
|
|
|
"请输入从站地址",
|
|
|
|
|
|
|
|
QMessageBox.Yes)
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
identNumber = self.GSDData[self.deviceTypeCombox.currentIndex()]['identNumber']
|
|
|
|
|
|
|
|
oldAddress = int(oldAddress)
|
|
|
|
|
|
|
|
newAddress = int(newAddress)
|
|
|
|
|
|
|
|
result = self.DPV1Master.editDevAddress(oldAddress, newAddress, identNumber)
|
|
|
|
|
|
|
|
reply = QMessageBox.question(self.parent(),
|
|
|
|
|
|
|
|
'提示',
|
|
|
|
|
|
|
|
result,
|
|
|
|
|
|
|
|
QMessageBox.Yes)
|
|
|
|
|
|
|
|
self.accept()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def enum(self,**enums):
|
|
|
|
def enum(self,**enums):
|
|
|
|