|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
import re
|
|
|
|
|
import sys
|
|
|
|
|
import json
|
|
|
|
|
from anyio import value
|
|
|
|
|
import qtawesome
|
|
|
|
|
|
|
|
|
|
from PyQt5.QtWidgets import QApplication, QTabWidget, QWidget, QLabel, QPushButton, \
|
|
|
|
@ -64,7 +65,8 @@ class AreaTabWidget(QTabWidget):
|
|
|
|
|
for area in areas:
|
|
|
|
|
dataType, order = self.tran(area["type"], area["order"])
|
|
|
|
|
channelBytes = area["bytes"]
|
|
|
|
|
settingValue = [dataType, order, channelBytes]
|
|
|
|
|
valueName = area["valueName"]
|
|
|
|
|
settingValue = [dataType, order, channelBytes, valueName]
|
|
|
|
|
self.addAreaTab(settingValue=settingValue)
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
@ -180,7 +182,12 @@ class AreaWidget(QWidget):
|
|
|
|
|
self.byteLineEdit = SoftKeyBoardEdit()
|
|
|
|
|
self.byteLineEdit.setPlaceholderText('字节长度')
|
|
|
|
|
self.byteLineEdit.setObjectName('byteLineEdit')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.valueNamelabel = QLabel('变量名:')
|
|
|
|
|
self.valueNamelabel.setObjectName('byteLineLabel')
|
|
|
|
|
self.valueNameEdit = SoftKeyBoardEdit()
|
|
|
|
|
self.valueNameEdit.setPlaceholderText('变量名')
|
|
|
|
|
self.valueNameEdit.setObjectName('byteLineEdit')
|
|
|
|
|
|
|
|
|
|
self.okBtn = QPushButton('保存')
|
|
|
|
|
self.okBtn.setObjectName('okBtn')
|
|
|
|
@ -210,8 +217,11 @@ class AreaWidget(QWidget):
|
|
|
|
|
self.leftLayout.addWidget(self.orderCombox,4, 1, 2, 1)
|
|
|
|
|
self.leftLayout.addWidget(self.byteLineLabel,5, 0, 2,1)
|
|
|
|
|
self.leftLayout.addWidget(self.byteLineEdit,5, 1, 2, 1)
|
|
|
|
|
self.leftLayout.addWidget(QSplitter(),6, 0, 2, 2)
|
|
|
|
|
self.leftLayout.addLayout(hLayout, 7, 0, 2, 2)
|
|
|
|
|
self.leftLayout.addWidget(self.valueNamelabel, 6, 0, 2, 1)
|
|
|
|
|
self.leftLayout.addWidget(self.valueNameEdit, 6, 1, 2, 1)
|
|
|
|
|
|
|
|
|
|
self.leftLayout.addWidget(QSplitter(),7, 0, 2, 2)
|
|
|
|
|
self.leftLayout.addLayout(hLayout, 8, 0, 2, 2)
|
|
|
|
|
self.leftLayout.setContentsMargins(10, 10, 0, 20)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -283,18 +293,22 @@ class AreaWidget(QWidget):
|
|
|
|
|
dataType = self.dataTypeCombox.currentText()
|
|
|
|
|
order = self.dataTypeTranslate(self.orderCombox.currentText())
|
|
|
|
|
byteLineEdit = self.byteLineEdit.text()
|
|
|
|
|
valueName = self.valueNameEdit.text()
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
dataTypeIndex = self.settingValue[0]
|
|
|
|
|
orderIndex = self.settingValue[1]
|
|
|
|
|
byteLineEditIndex = self.settingValue[2]
|
|
|
|
|
valueNameIndex = self.settingValue[3]
|
|
|
|
|
|
|
|
|
|
self.dataTypeCombox.setCurrentIndex(dataTypeIndex)
|
|
|
|
|
self.orderCombox.setCurrentIndex(orderIndex)
|
|
|
|
|
self.byteLineEdit.setText(byteLineEditIndex)
|
|
|
|
|
self.valueNameEdit.setText(valueNameIndex)
|
|
|
|
|
dataType = self.dataTypeCombox.currentText()
|
|
|
|
|
order = self.dataTypeTranslate(self.orderCombox.currentText())
|
|
|
|
|
byteLineEdit = self.byteLineEdit.text()
|
|
|
|
|
valueName = self.valueNameEdit.text()
|
|
|
|
|
|
|
|
|
|
#判断字节长度的输入是否是数字
|
|
|
|
|
pattern = re.compile(r'^[1-7]$')
|
|
|
|
@ -310,6 +324,7 @@ class AreaWidget(QWidget):
|
|
|
|
|
self.dataTypeCombox.setEnabled(False )
|
|
|
|
|
self.orderCombox.setEnabled(False )
|
|
|
|
|
self.byteLineEdit.setEnabled(False )
|
|
|
|
|
self.valueNameEdit.setEnabled(False )
|
|
|
|
|
self.okBtnValue = False
|
|
|
|
|
if dataType in ['DI','DO']:
|
|
|
|
|
self.okBtn.setEnabled(False)
|
|
|
|
@ -320,6 +335,7 @@ class AreaWidget(QWidget):
|
|
|
|
|
self.okBtn.setIcon(qtawesome.icon('fa.save', color='#1fbb6f'))
|
|
|
|
|
self.orderCombox.setEnabled(True)
|
|
|
|
|
self.byteLineEdit.setEnabled(True)
|
|
|
|
|
self.valueNameEdit.setEnabled(True)
|
|
|
|
|
self.okBtnValue = True
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
@ -333,7 +349,7 @@ class AreaWidget(QWidget):
|
|
|
|
|
widget.deleteLater()
|
|
|
|
|
|
|
|
|
|
#添加按钮布局
|
|
|
|
|
self.rightAreaWidgets = RightAreaWidgets(self, order = order, byteLineEdit = byteLineEdit, dataType = dataType, deviceName = deviceName)
|
|
|
|
|
self.rightAreaWidgets = RightAreaWidgets(self, order = order, byteLineEdit = byteLineEdit, dataType = dataType, deviceName = deviceName, valueName = valueName)
|
|
|
|
|
areaLayout.addWidget(self.rightAreaWidgets)
|
|
|
|
|
|
|
|
|
|
self.state = False
|
|
|
|
@ -341,15 +357,15 @@ class AreaWidget(QWidget):
|
|
|
|
|
|
|
|
|
|
areaId = DevicesManange.getAreaID(deviceName)
|
|
|
|
|
if self.settingValue is not None:
|
|
|
|
|
self.isRead = self.devicesManange.getDevice(deviceName).addArea(type = dataType, bytes = int(byteLineEdit), order = order, nums = 1)
|
|
|
|
|
self.isRead = self.devicesManange.getDevice(deviceName).addArea(type = dataType, bytes = int(byteLineEdit), order = order, valueName = valueName, nums = 1)
|
|
|
|
|
self.devicesManange.recalculateAddress()
|
|
|
|
|
return
|
|
|
|
|
elif areaId is not None and curIndex in areaId:
|
|
|
|
|
DevicesManange.updataAreas(dataType, order, byteLineEdit, deviceName, curIndex)
|
|
|
|
|
DevicesManange.updataAreas(dataType, order, byteLineEdit, deviceName, valueName, curIndex)
|
|
|
|
|
self.isRead = self.devicesManange.getDevice(deviceName).editArea(index = curIndex, type = dataType, order = order, bytes = int(byteLineEdit))
|
|
|
|
|
else:
|
|
|
|
|
DevicesManange.addAreas(dataType, order, byteLineEdit, deviceName)
|
|
|
|
|
self.isRead = self.devicesManange.getDevice(deviceName).addArea(type = dataType, bytes = int(byteLineEdit), order = order, nums = 1)
|
|
|
|
|
DevicesManange.addAreas(dataType, order, byteLineEdit, deviceName, valueName)
|
|
|
|
|
self.isRead = self.devicesManange.getDevice(deviceName).addArea(type = dataType, bytes = int(byteLineEdit), order = order, valueName = valueName, nums = 1)
|
|
|
|
|
self.devicesManange.recalculateAddress()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|