|
|
|
@ -28,6 +28,7 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
self.areaLineEditValue = []
|
|
|
|
|
self.qualityEditValueList = []
|
|
|
|
|
self.areaLabel = {}
|
|
|
|
|
self.qualityLabel = {}
|
|
|
|
|
self.areaWidget = areaWidget
|
|
|
|
|
self.devicesManange = self.areaWidget.devicesManange
|
|
|
|
|
self.order = order
|
|
|
|
@ -116,15 +117,15 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
areaLineEdit.setObjectName('areaLineEdit')
|
|
|
|
|
areaLineEdit.setFixedSize(80, 33)
|
|
|
|
|
|
|
|
|
|
qualityLineEdit = SoftKeyBoardEdit('0')
|
|
|
|
|
qualityLineEdit = SoftKeyBoardEdit('80')
|
|
|
|
|
qualityLineEdit.setObjectName('areaLineEdit')
|
|
|
|
|
qualityLineEdit.setFixedSize(80, 33)
|
|
|
|
|
forceBtn = ForceButton(number = number, valueLabel=areaValueLabel, valueEdit=areaLineEdit, qualityValueLabel=qualityLabel, \
|
|
|
|
|
forceBtn = ForceButton(number = number, valueLabel=areaValueLabel, valueEdit=areaLineEdit, qualityValueLabel=qualityValueLabel, \
|
|
|
|
|
qualityLineEdit=qualityLineEdit, btnName = '强制')
|
|
|
|
|
forceBtn.clicked.connect(self.AIAOForceValues)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
qualityBtn = ForceButton(number = number, valueLabel=areaValueLabel, valueEdit=areaLineEdit, qualityValueLabel=qualityLabel, \
|
|
|
|
|
qualityBtn = ForceButton(number = number, valueLabel=areaValueLabel, valueEdit=areaLineEdit, qualityValueLabel=qualityValueLabel, \
|
|
|
|
|
qualityLineEdit=qualityLineEdit, btnName = '故障')
|
|
|
|
|
qualityBtn.clicked.connect(lambda: self.AIAOForceValues(qualityValue = '0'))
|
|
|
|
|
|
|
|
|
@ -135,8 +136,10 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
forceLayout.addWidget(qualityBtn,1,3,1,1)
|
|
|
|
|
else:
|
|
|
|
|
self.areaLabel[number] = areaValueLabel
|
|
|
|
|
self.qualityLabel[number] = qualityValueLabel
|
|
|
|
|
|
|
|
|
|
self.areaLineEditValue.append(0)
|
|
|
|
|
self.qualityEditValueList.append(0)
|
|
|
|
|
|
|
|
|
|
# if self.deviceName[-2:] + self.dataType in ['从站DI','主站DO']:
|
|
|
|
|
# areaMessLabel.setObjectName('wirteDIDOareaMessLabel')
|
|
|
|
@ -157,7 +160,8 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
# forceLayout.setSpacing(10)
|
|
|
|
|
return forceLayout
|
|
|
|
|
|
|
|
|
|
def wirteAreaLineEditValue(self,dataTypeAndModel, number, value, qualityValue, valueLabel, qualityValueLabel):
|
|
|
|
|
def wirteAreaLineEditValue(self,dataTypeAndModel, number, value, qualityValue = None, valueLabel = None, \
|
|
|
|
|
qualityValueLabel = None):
|
|
|
|
|
if self.areaWidget.okBtnValue:
|
|
|
|
|
QMessageBox.warning(self, '提示', '请先保存通道信息')
|
|
|
|
|
return
|
|
|
|
@ -165,15 +169,27 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
if dataTypeAndModel in ['主站AO','从站AI']:
|
|
|
|
|
pattern = re.compile(r'^[+-]?(\d+(\.\d*)?|\.\d+)$')
|
|
|
|
|
match = pattern.match(value)
|
|
|
|
|
match2 = pattern.match(qualityValue)
|
|
|
|
|
if not match or not match2:
|
|
|
|
|
hexPattern = re.compile(r'^(0x)?[0-9A-Fa-f]{1,2}$')
|
|
|
|
|
match2 = hexPattern.match(qualityValue)
|
|
|
|
|
if not match :
|
|
|
|
|
QMessageBox.warning(self, '提示', '请输入数字。')
|
|
|
|
|
return
|
|
|
|
|
return None, None
|
|
|
|
|
if not match2:
|
|
|
|
|
QMessageBox.warning(self, '提示', '请输入0-FF')
|
|
|
|
|
return None, None
|
|
|
|
|
else:
|
|
|
|
|
valueLabel.setText(str(float(value)))
|
|
|
|
|
qualityValueLabel.setText(str(float(qualityValue)))
|
|
|
|
|
self.areaLineEditValue[number] = float(value)
|
|
|
|
|
self.qualityEditValueList[number] = float(qualityValue)
|
|
|
|
|
hexValue = int(match2.group(0), 16)
|
|
|
|
|
# 检查值是否小于等于 255
|
|
|
|
|
if hexValue > 255:
|
|
|
|
|
QMessageBox.warning(self, '提示', '请输入0-FF')
|
|
|
|
|
return None, None
|
|
|
|
|
else:
|
|
|
|
|
valueLabel.setText(str(float(value)))
|
|
|
|
|
qualityValueLabel.setText(str(qualityValue))
|
|
|
|
|
self.areaLineEditValue[number] = float(value)
|
|
|
|
|
# print(self.areaLineEditValue,number, qualityValue )
|
|
|
|
|
self.qualityEditValueList[number] = qualityValue
|
|
|
|
|
|
|
|
|
|
return self.areaLineEditValue , self.qualityEditValueList #返回值和质量位值
|
|
|
|
|
|
|
|
|
|
#判断输入值是否为0和1
|
|
|
|
@ -188,7 +204,8 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
# print(curIndex)
|
|
|
|
|
if not self.force:
|
|
|
|
|
device = self.devicesManange.getDevice(self.deviceName)
|
|
|
|
|
values = device.getAreaValues(curIndex)
|
|
|
|
|
values, qualityValueList = device.getAreaValues(curIndex)
|
|
|
|
|
# print(qualityValueList)
|
|
|
|
|
# print(self.deviceName, curIndex, values)
|
|
|
|
|
if len(values) > len(self.areaLabel):
|
|
|
|
|
return
|
|
|
|
@ -204,6 +221,8 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
self.areaLabel[index].setText(value)
|
|
|
|
|
continue
|
|
|
|
|
self.areaLabel[index].setText(str(value))
|
|
|
|
|
for index, value in enumerate(qualityValueList):
|
|
|
|
|
self.qualityLabel[index].setText(str(value))
|
|
|
|
|
# print(self.areaLabel[index],values)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -218,11 +237,12 @@ class RightAreaWidgets(QWidget):
|
|
|
|
|
qualityValue = '0'
|
|
|
|
|
else:
|
|
|
|
|
qualityValue = sender.qualityLineEdit.text()
|
|
|
|
|
# print(qualityValue)
|
|
|
|
|
dataTypeAndModel = self.deviceName[-2:] + self.dataType
|
|
|
|
|
curIndex = self.areaWidget.areaTabWidget.currentIndex()
|
|
|
|
|
valueList, qualityValueList = self.wirteAreaLineEditValue(dataTypeAndModel=dataTypeAndModel, number=number, value=value, qualityValue=qualityValue, \
|
|
|
|
|
valueLabel=valueLabel, qualityValueLabel=qualityValueLabel )
|
|
|
|
|
# print(valueList, curIndex)
|
|
|
|
|
# print(valueList, qualityValueList,222)
|
|
|
|
|
if valueList is None:
|
|
|
|
|
return
|
|
|
|
|
else:
|
|
|
|
|