0618更新

main
ZHANGXUXU\95193 4 months ago
parent 4e2dc90d94
commit 750ae65fb9

@ -6,18 +6,10 @@ from matplotlib.backends.qt_compat import QtCore, QtWidgets
from matplotlib.backends.backend_qt5agg import (FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
from matplotlib.figure import Figure
from PyQt5.QtCore import QThread
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
from protocol.Celery.MBTCPMaster import app as MBTCPMApp
from celery.schedules import crontab, timedelta
from celery.result import AsyncResult, GroupResult
from celery.result import AsyncResult
from utils.Queue import Queue
import tkinter as tk
from model.ProjectModel.VarManage import ModbusVarManage
class ActualTrend(QtWidgets.QMainWindow):

@ -262,7 +262,7 @@ class VarButtonDelegate(QItemDelegate):
comboBox.addItem('CDAB', 2)
comboBox.addItem('BADC', 3)
comboBox.addItem('DCBA', 4)
comboBox.setCurrentText(self.parent().model.datas[index.row()][index.column()])
comboBox.setCurrentText(str(self.parent().model.datas[index.row()][index.column()]))
# comboBox.setMinimumWidth(30)
@ -375,21 +375,31 @@ class VarButtonDelegate(QItemDelegate):
fucationDelegate = self.parent().itemDelegate(fucationIndex)
fucationCheckbox = getattr(fucationDelegate, fucationCbRow)
varModelCbRow = str('cb' + str(sender.index[0]) + str(10))
varModelIndex = self.parent().model.index(sender.index[0], 10)
varModelDelegate = self.parent().itemDelegate(varModelIndex)
varModelCheckbox = getattr(varModelDelegate, varModelCbRow)
if sender.isEdit:
sender.setIcon(qtawesome.icon('fa.save', color='#1fbb6f'))
sender.isEdit = False
sender.oldName = model.datas[sender.index[0]][3]
model.editableList.append(sender.index[0])
fucationCheckbox.setEnabled(True)
varModelCheckbox.setEnabled(True)
self.parent().viewport().update()
else:
varMes = model.datas[sender.index[0]]
name, des, varType, slaveID, address, min, max, order = str(varMes[3]), str(varMes[4]), str(varMes[5]), str(varMes[6]), str(varMes[7]), str(varMes[8]), str(varMes[9]), str(varMes[-1])
name, des, varType, slaveID, address, min, max, varModel, order = str(varMes[3]), str(varMes[4]), str(varMes[5]), str(varMes[6]), str(varMes[7]), str(varMes[8]), str(varMes[9]), str(varMes[10]), str(varMes[-1])
# print(name, des, varType, slaveID, address, min, max, order)
if varType == '':
varType = '0'
varType = 0
if varModel == '':
varModel = 0
if not name:
reply = QMessageBox.question(self.parent(),
'警告',
@ -402,14 +412,14 @@ class VarButtonDelegate(QItemDelegate):
if sender.oldName == name or [varMes[3] for varMes in model.datas].count(name) < 2:
ModbusVarManage.editVar(name = sender.oldName, Nname = name, des = des,
varType = varType, slaveID = slaveID, address = address,
min = min, max = max, order = order, modbusType = modbusType)
min = min, max = max, order = order, modbusType = modbusType, varModel= varModel)
else:
QMessageBox.information(self.parent(), '提示', '已有同名变量')
return
else:
res = ModbusVarManage.createVar(varName = name, varType = varType, des = des,
address = address, slaveID = slaveID, min = min,
max = max, order = order, modbusType = modbusType)
max = max, order = order, modbusType = modbusType, varModel= varModel)
if res:
QMessageBox.information(self.parent(), '提示', '已有同名变量')
return
@ -424,6 +434,7 @@ class VarButtonDelegate(QItemDelegate):
sender.isEdit = True
fucationCheckbox.setEnabled(False)
varModelCheckbox.setEnabled(False)
model.editableList.remove(sender.index[0])
self.parent().viewport().update()
@ -500,3 +511,57 @@ class ModbusTypeBox(QItemDelegate):
index += 1
self.parent().model.datas[sender.index[0]][sender.index[1]] = index
class VarModelBox(QItemDelegate):
def __init__(self, parent=None, comBoxColumn = 10):
super(VarModelBox, self).__init__(parent)
self.comBoxColumn = comBoxColumn
def paint(self, painter, option, index):
#本地值、模拟值、远程值 对应 0, 1, 2
if (index.column() == self.comBoxColumn) and index.row() not in self.parent().model.editableList:
data = self.parent().model.datas[index.row()]
comBox = str('cb' + str(index.row()) + str(index.column()))
setattr(self, comBox, QComboBox())
comboBox = getattr(self, comBox)
items = ['本地值', '模拟值', '远程值']
comboBox.addItems(items)
comboxIndex = self.parent().model.datas[index.row()][index.column()]
if comboxIndex in [0, 1, 2]:
comboBox.setCurrentIndex(int(comboxIndex))
else:
comboBox.setCurrentIndex(0)
comboBox.currentIndexChanged.connect( self.indexChange)
comboBox.setObjectName('ModbusTypeBox')
comboBox.setEditable(True)
comboBox.lineEdit().setAlignment(Qt.AlignCenter)
# comboBox.setMinimumWidth(200)
# comboBox.setEnabled(False)
hboxLayout = QHBoxLayout()
hboxLayout.addWidget(comboBox)
hboxLayout.setContentsMargins(0, 0, 0, 0)
# hboxLayout.setAlignment(Qt.AlignCenter)
comboBox.index = [index.row(), index.column()]
row = index.row()
if row % 2 == 0:
comboBox.setStyleSheet("QComboBox { background-color: #EFEFEF; height: 40px; }")
else:
comboBox.setStyleSheet("QComboBox { background-color: #e9e7e3; height: 40px; }")
if str(data[index.column()]):
comboBox.setEnabled(False)
else:
comboBox.setEnabled(True)
widget = QWidget()
widget.setLayout(hboxLayout)
self.parent().setIndexWidget(
index,
widget
)
self.parent().openPersistentEditor(index)
def indexChange(self):
sender = self.sender()
index = sender.currentIndex()
self.parent().model.datas[sender.index[0]][sender.index[1]] = index

@ -78,10 +78,11 @@ class VarTableView(QTableView):
self.setupUi()
def setHeader(self):
self.setItemDelegateForColumn(10, VarButtonDelegate(self))
self.setItemDelegateForColumn(11, VarButtonDelegate(self))
self.setItemDelegateForColumn(5, ModbusTypeBox(self))
self.setItemDelegateForColumn(10, VarModelBox(self, 10))
self.model = VarTableModel(['ID', '强制值', '当前值', '变量名', '变量描述', '变量类型',
'从站地址', '寄存器地址', '工程量下限', '工程量上限', '操作'],
'从站地址', '寄存器地址', '工程量下限', '工程量上限', '值类型', '操作'],
[], modbusType = self.modbusType, table = self)
def setupUi(self):

@ -207,7 +207,7 @@ class VarWidgets(QtWidgets.QWidget):
action.text(), action.isChecked()) for action in self.menuValues.actions()]))
def createVar(self):
self.varView.model.append_data(['', '', '', '', '', '', '', '', '', '', '','int'])
self.varView.model.append_data(['', '', '', '', '', '', '', '', '', '', '','','int'])
def forceVar(self):
check = [i for i,x in enumerate(self.varView.model.checkList) if x == 'Checked']

@ -1,9 +1,7 @@
import openpyxl
from utils.DBModels.ProtocolModel import ModbusTcpMasterVar, ModbusRtuMasterVar, ModbusRtuSlaveVar,\
ModbusTcpSlaveVar, HartVar, TcRtdVar, AnalogVar, FFSimulateVar, HartSimulateVar
from utils import Globals
# ID 从站地址 变量名 变量描述 功能码 寄存器地址 工程量下限 工程量上限
@ -110,7 +108,7 @@ class ModbusVarManage(object):
@classmethod
def createVar(self, varName, varType, des, address, slaveID, min, max, order, modbusType):
def createVar(self, varName, varType, des, address, slaveID, min, max, order, modbusType, varModel):
# 创建变量
name = str(varName)
des = str(des)
@ -120,12 +118,14 @@ class ModbusVarManage(object):
min = str(min)
max = str(max)
order = order
varModel = str(varModel)
if self.getVarClass(modbusType).getByName(name):
return 1
else:
varModel =self.getVarClass(modbusType)()
varModel.createVar(varName = varName, varType = varType, des = des, address = address, slaveID = slaveID, min = min, max = max, order = order)
modbusVarType =self.getVarClass(modbusType)()
modbusVarType.createVar(varName = varName, varType = varType, des = des, address = address,
slaveID = slaveID, min = min, max = max, order = order, varModel = varModel)
@classmethod
@ -137,7 +137,7 @@ class ModbusVarManage(object):
@classmethod
def editVar(self, name, Nname, des, varType, slaveID, address, min, max, order, modbusType):
def editVar(self, name, Nname, des, varType, slaveID, address, min, max, order, modbusType, varModel):
# 修改变量信息
name = str(name)
@ -148,8 +148,10 @@ class ModbusVarManage(object):
address = str(address)
min = str(min)
max = str(max)
varModel = str(varModel)
if Nname == name:
self.getVarClass(modbusType).update(varName = Nname, description = des, varType = varType, address = address, slaveID = slaveID, min = min, max = max, order = order).where(self.getVarClass(modbusType).varName == name).execute()
self.getVarClass(modbusType).update(varName = Nname, description = des, varType = varType, address = address, slaveID = slaveID,
min = min, max = max, order = order, varModel = varModel).where(self.getVarClass(modbusType).varName == name).execute()
elif self.getVarClass(modbusType).getByName(Nname):
print('已有同名变量')
return
@ -157,7 +159,8 @@ class ModbusVarManage(object):
print('不存在的变量')
return
else:
self.getVarClass(modbusType).update(varName = Nname, description = des, varType = varType, address = address, slaveID = slaveID, min = min, max = max, order = order).where(self.getVarClass(modbusType).varName == name).execute()
self.getVarClass(modbusType).update(varName = Nname, description = des, varType = varType, address = address, slaveID = slaveID,
min = min, max = max, order = order, varModel = varModel).where(self.getVarClass(modbusType).varName == name).execute()
@classmethod
def editOrder(self, name, order, modbusType):
@ -174,7 +177,7 @@ class ModbusVarManage(object):
return
l = []
for var in vars:
l.append([var.id, var.varName, var.description, var.varType, var.slaveID, var.address, var.min, var.max, var.order])
l.append([var.id, var.varName, var.description, var.varType, var.slaveID, var.address, var.min, var.max, var.varModel, var.order])
return l
@classmethod
@ -182,7 +185,7 @@ class ModbusVarManage(object):
# 查询指定变量信息
var = self.getVarClass(modbusType).getByName(name)
if var:
return [var.id, var.varName, var.description, var.varType, var.slaveID, var.address, var.min, var.max]
return [var.id, var.varName, var.description, var.varType, var.slaveID, var.address, var.min, var.max, var.varModel]
else:
return False

@ -72,6 +72,7 @@ class ModBusVar(BaseModel):
min = CharField()
max = CharField()
order = CharField()
varModel = IntegerField()
# 查询变量是否存在
@ -89,7 +90,7 @@ class ModBusVar(BaseModel):
query.execute()
# 创建变量
def createVar(self, varName, varType, des, address, slaveID, min, max, order):
def createVar(self, varName, varType, des, address, slaveID, min, max, order, varModel):
self.varName = varName
self.varType = varType
self.description = des
@ -99,6 +100,7 @@ class ModBusVar(BaseModel):
self.min = min
self.max = max
self.order = order
self.varModel = varModel
# print(self.createTime)
self.save()

Loading…
Cancel
Save