main
zhangxuxutm 2 years ago
parent 1cf2f45e46
commit 4be3551c4c

@ -5,36 +5,50 @@ from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QIcon from PyQt5.QtGui import QPixmap, QIcon
import sys import sys
from model.ProjectModel.DeviceManage import Device
class DelAreaWidget(QDialog): class DelAreaWidget(QDialog):
def __init__(self, areaLabel, deviceName): def __init__(self, deviceName):
super().__init__() super().__init__()
self.checkbox_data ={} self.checkbox_data ={}
self.areaLabel = areaLabel
self.deviceName = deviceName self.deviceName = deviceName
self.delAreaRowAndColunm = [] self.delAreaRowAndColunm = []
self.initUI() self.initUI()
def initUI(self): def initUI(self):
vorlayout = QVBoxLayout() #主布局 vorlayout = QVBoxLayout() #主布局
layout = QGridLayout() # layout = QGridLayout()
jsonCons = Device().getAreaJson(self.deviceName)
for i in self.areaLabel: row = 1
if self.deviceName in i: if jsonCons is None:
widget = i[2] return
row = i[3] else:
text = widget.text() for jsoncon in jsonCons:
column = i[4] varType = jsoncon["type"]
channelNums = jsoncon["nums"]
channelBytes = jsoncon["bytes"]
text = varType + ": " + channelBytes + 'Byte' + '数量:'+ channelNums
checkbox = QCheckBox(text) checkbox = QCheckBox(text)
vorlayout.addWidget(checkbox)
checkbox.stateChanged.connect(self.checkbox_state_changed) checkbox.stateChanged.connect(self.checkbox_state_changed)
if column > 0: self.checkbox_data[checkbox] = row
layout.addWidget(checkbox, row, 1) row += 1
self.checkbox_data[checkbox] = [row, 1]
else:
layout.addWidget(checkbox, row, column) # for i in self.areaLabel:
self.checkbox_data[checkbox] = [row, column] # if self.deviceName in i:
# widget = i[2]
# row = i[3]
# text = widget.text()
# column = i[4]
# checkbox = QCheckBox(text)
#
# if column > 0:
# vorlayout.addWidget(checkbox)
#
# else:
# vorlayout.addWidget(checkbox)
# self.checkbox_data[checkbox] = [row, column]
button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
ok_button = button_box.button(QDialogButtonBox.Ok) ok_button = button_box.button(QDialogButtonBox.Ok)
@ -44,14 +58,13 @@ class DelAreaWidget(QDialog):
button_box.accepted.connect(self.getDelAreaRowAndColunm) button_box.accepted.connect(self.getDelAreaRowAndColunm)
button_box.rejected.connect(self.reject) button_box.rejected.connect(self.reject)
vorlayout.addLayout(layout)
vorlayout.addWidget(button_box) vorlayout.addWidget(button_box)
self.setWindowIcon(QIcon('Static/zhjt.ico')) self.setWindowIcon(QIcon('Static/zhjt.ico'))
self.setWindowTitle("删除通道") self.setWindowTitle("删除通道")
self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)#去掉标题栏的问号 self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)#去掉标题栏的问号
self.setLayout(vorlayout) self.setLayout(vorlayout)
self.exec_()
def checkbox_state_changed(self, state): def checkbox_state_changed(self, state):
sender = self.sender() # 获取触发信号的对象 sender = self.sender() # 获取触发信号的对象
@ -63,7 +76,7 @@ class DelAreaWidget(QDialog):
self.delAreaRowAndColunm.remove(self.checkbox_data[sender]) self.delAreaRowAndColunm.remove(self.checkbox_data[sender])
def getDelAreaRowAndColunm(self): def getDelAreaRowAndColunm(self):
self.close() self.accept()
return self.delAreaRowAndColunm return self.delAreaRowAndColunm

@ -10,11 +10,11 @@ from PyQt5.QtGui import QPixmap, QIcon
from UI.DeviceWidget import DeviceDialog from UI.DeviceWidget import DeviceDialog
from UI.AreaSettingWidget import AreaSettingWidget from UI.AreaSettingWidget import AreaSettingWidget
from UI.DelAreaWidget import DelAreaWidget from UI.DelAreaWidget import DelAreaWidget
# from model.ProjectModel.AreaManage import Devices, DevicesManange, Area from model.ProjectModel.DeviceManage import DevicesManange, Device
from protocol.ModBus.ModBusThread import MyThread from protocol.ModBus.ModBusThread import MyThread
from utils.DBModels.BaseModel import * from utils.DBModels.BaseModel import *
# from utils.DBModels.ClientModels import DeviceDB from utils.DBModels.DeviceModels import DeviceDB
# from model.ClientModel.Client import Client from model.ClientModel.Client import Client
class CommonHelper: class CommonHelper:
def __init__(self): def __init__(self):
pass pass
@ -33,10 +33,12 @@ class MainWindow(QMainWindow):
self.sub_windows = [] #存储设备widget self.sub_windows = [] #存储设备widget
self.nowValue = [] #储存当前值 self.nowValue = [] #储存当前值
self.areaLabel = [] #存储通道信息文本 self.areaLabel = [] #存储通道信息文本
# self.initAreaWidget() self.arealist = {}
self.widgetList= []
self.number = 0
self.initUI() self.initUI()
self.initAreaWidget()
def initUI(self): def initUI(self):
self.toolbar = QToolBar() self.toolbar = QToolBar()
@ -68,46 +70,6 @@ class MainWindow(QMainWindow):
self.setWindowTitle("PROFIBUS") self.setWindowTitle("PROFIBUS")
self.setGeometry(1000, 500, 800, 600) self.setGeometry(1000, 500, 800, 600)
# def initAreaWidget(self):
# alldevices = Devices().getAllDevice()
#
# for devices in alldevices:
# layout = self.deviceWidget(devices[0]).widget().widget().layout().itemAt(1).widget().layout()
# areas = devices[3]
# number = 0
# masterSlaveModel = devices[2]
# if areas is not None:
# areas = json.loads(areas)
# for area in areas:
# varType = area["type"]
# channelNums = area["nums"]
# channelBytes = area["bytes"]
# for i in range(int(channelNums)):
# if masterSlaveModel == '主站':
# if (i + number) % 2 == 0:
# layout.addWidget(QLabel(varType + str(i + 1) + ": " + channelBytes + 'Byte'), (i + number) // 2,
# (i + number) % 2)
# layout.addWidget(QLabel('0'), (i + number) // 2, (i + number) % 2 + 1)
# layout.addWidget(QLineEdit('0'), (i + number) // 2, (i + number) % 2 + 2)
#
# else:
# layout.addWidget(QLabel(varType + str(i + 1) + ": " + channelBytes + 'Byte'), (i + number) // 2,
# (i + number) % 2 + 3)
# layout.addWidget(QLabel('0'), (i + number) // 2, (i + number) % 2 + 4)
# layout.addWidget(QLineEdit('0'), (i + number) // 2, (i + number) % 2 + 5)
# else:
# if (i + number) % 2 == 0:
# layout.addWidget(QLabel(varType + str(i + 1) + ": " + channelBytes + 'Byte'), (i + number) // 2,
# (i + number) % 2)
# layout.addWidget(QLabel('0'), (i + number) // 2, (i + number) % 2 + 1)
# layout.addWidget(QLineEdit('0'), (i + number) // 2, (i + number) % 2 + 2)
# else:
# layout.addWidget(QLabel(varType + str(i + 1) + ": " + channelBytes + 'Byte'), (i + number) // 2,
# (i + number) % 2 + 3)
# layout.addWidget(QLabel('0'), (i + number) // 2, (i + number) % 2 + 4)
# layout.addWidget(QLineEdit('0'), (i + number) // 2, (i + number) % 2 + 5)
#
# number = number + int(channelNums)
def deviceWidget(self, windowTitle): def deviceWidget(self, windowTitle):
@ -164,13 +126,37 @@ class MainWindow(QMainWindow):
return sub_window return sub_window
def initAreaWidget(self):
alldevices = DevicesManange().getAllDevice()
for devices in alldevices:
layout = self.deviceWidget(devices[0]).widget().widget().layout().itemAt(1).widget().layout()
areas = devices[3]
number = 0
masterSlaveModel = devices[2]
deviceName = devices[0]
if areas is not None:
areas = json.loads(areas)
for area in areas:
varType = area["type"]
channelNums = area["nums"]
channelBytes = area["bytes"]
areaID = area['id']
if masterSlaveModel == '主站':
self.addChannelWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaID)
else:
self.addChannelWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaID)
number = number + int(channelNums)
def createDeciveWidget(self): def createDeciveWidget(self):
dialog = DeviceDialog() dialog = DeviceDialog()
if dialog.exec_() == QDialog.Accepted: if dialog.exec_() == QDialog.Accepted:
deviceName, proType, masterSlaveModel, pvUpperLimit, pvLowerLimit, pvUnit = dialog.getParameters() deviceName, proType, masterSlaveModel, pvUpperLimit, pvLowerLimit, pvUnit = dialog.getParameters()
windowTitle = deviceName + ' ' + proType + masterSlaveModel + ' ' + pvLowerLimit + '-' + pvUpperLimit + pvUnit windowTitle = deviceName + ' ' + proType + masterSlaveModel + ' ' + pvLowerLimit + '-' + pvUpperLimit + pvUnit
# DeviceDB().createDevice(deviceName = windowTitle, proType = proType, masterSlaveModel = masterSlaveModel, pvUpperLimit=pvUpperLimit, pvLowerLimit=pvLowerLimit, pvUnit=pvUnit) DeviceDB().addDevice(deviceName = windowTitle, proType = proType, masterSlaveModel = masterSlaveModel, pvUpperLimit=pvUpperLimit, pvLowerLimit=pvLowerLimit, pvUnit=pvUnit)
else: else:
return return
@ -184,18 +170,35 @@ class MainWindow(QMainWindow):
dialog = AreaSettingWidget() dialog = AreaSettingWidget()
if dialog.exec_() == QDialog.Accepted: if dialog.exec_() == QDialog.Accepted:
varType, channelNums, channelBytes = dialog.getParameters() varType, channelNums, channelBytes = dialog.getParameters()
# devices = Devices() number = DevicesManange.getChannelLength(deviceName)
# number = devices.getValueLength(deviceName) Device().addAreas(varType, channelNums, channelBytes, deviceName)
# devices.addAreas(varType, channelNums, channelBytes, deviceName) areaId = Device().getAreaID(deviceName)[-1]
# self.devicesmanage.addDevice(deviceName, channelNums, channelBytes) # Device().addDevice(deviceName, channelNums, channelBytes)
else: else:
return return
layout = sub_window.widget().widget().layout().itemAt(1).widget().layout() #获取sub_window的widgetArea的areaLayout2 layout = sub_window.widget().widget().layout().itemAt(1).widget().layout() #获取sub_window的widgetArea的areaLayout2
number = self.number #待从数据库获取具体的数据 self.addChannelWidget(deviceName, number, channelNums, channelBytes, varType, layout, areaId)
for i in range(int(channelNums)): number += int(channelNums)
def addChannelWidget(self,deviceNames, numbers, channelNums, channelBytes , varTypes, layouts ,ID):
deviceName = deviceNames
number = numbers
channelNum = channelNums
channelByte = channelBytes
varType = varTypes
layout = layouts
ID = ID
widgetList = []
arealists = []
for i in range(int(channelNum)):
if (i + number) % 2 == 0: if (i + number) % 2 == 0:
areaLabel = QLabel(varType + str(i + 1 ) + ": " + channelBytes + 'Byte' ) areaLabel = QLabel(varType + str(i + 1 ) + ": " + channelByte + 'Byte' )
areaLabel2 =QLabel('0') areaLabel2 =QLabel('0')
areaLineEdit = QLineEdit('0') areaLineEdit = QLineEdit('0')
editbtn = QPushButton('强制') editbtn = QPushButton('强制')
@ -206,12 +209,15 @@ class MainWindow(QMainWindow):
layout.addWidget(editbtn, (i + number) // 2, (i + number) % 2 + 3) layout.addWidget(editbtn, (i + number) // 2, (i + number) % 2 + 3)
editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn)) editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn))
widgetList.append([layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit])
# self.nowValue.append([deviceName, layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit, (i + number)//2, (i + number) % 2 + 1])
self.nowValue.append([deviceName, layout, i+1, editbtn, areaLabel2, areaLineEdit, (i + number)//2, (i + number) % 2 + 1])
self.areaLabel.append([deviceName, i+1, areaLabel, (i + number)//2, (i + number) % 2])
else: else:
areaLabel = QLabel(varType + str(i + 1) + ": " + channelBytes + 'Byte') areaLabel = QLabel(varType + str(i + 1) + ": " + channelByte + 'Byte')
areaLabel2 = QLabel('0') areaLabel2 = QLabel('0')
areaLineEdit = QLineEdit('0') areaLineEdit = QLineEdit('0')
editbtn = QPushButton('强制') editbtn = QPushButton('强制')
@ -222,70 +228,105 @@ class MainWindow(QMainWindow):
layout.addWidget(editbtn, (i + number) // 2, (i + number) % 2 + 6) layout.addWidget(editbtn, (i + number) // 2, (i + number) % 2 + 6)
editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn)) editbtn.clicked.connect(lambda checked, btn=editbtn: self.forceEdit(btn))
self.nowValue.append([deviceName, layout, i + 1, editbtn, areaLabel2, areaLineEdit, (i + number) // 2, (i + number) % 2 + 4]) widgetList.append([layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit])
self.areaLabel.append([deviceName, i + 1, areaLabel, (i + number) // 2, (i + number) % 2 + 3]) arealists.append(widgetList)
self.number += int(channelNums) self.arealist[deviceName] = arealists
def forceEdit(self, btn):
for item in self.nowValue: # self.nowValue.append([deviceName, layout, ID, editbtn, areaLabel, areaLabel2, areaLineEdit, (i + number) // 2, (i + number) % 2 + 4])
if btn in item:
item[4].setText(item[5].text()) self.nowValue.append(self.arealist)
print(self.nowValue,'aaaaaa')
def forceEdit(self, btn):
pass
# for item in self.nowValue:
# if btn in item:
# item[4].setText(item[5].text())
def delAreaWidget(self, sub_window): def delAreaWidget(self, sub_window):
subwindow = sub_window subwindow = sub_window
if self.areaLabel: if self.nowValue:
self.deviceName = subwindow.windowTitle() self.deviceName = subwindow.windowTitle()
delAreaWidget = DelAreaWidget(self.areaLabel, self.deviceName) delAreaWidget = DelAreaWidget(self.deviceName)
if delAreaWidget.exec_() == QDialog.Accepted:
rowAndColumn = delAreaWidget.getDelAreaRowAndColunm() rowAndColumn = delAreaWidget.getDelAreaRowAndColunm()
if rowAndColumn == []:
return
else:
self.getAreaWidget(rowAndColumn, subwindow) self.getAreaWidget(rowAndColumn, subwindow)
Device().delAreas(self.deviceName,rowAndColumn)
else:
return
else: else:
return return
def getAreaWidget(self, rowAndColumn, sub_window): def getAreaWidget(self, rowAndColumn, sub_window):
rowAndColumns = rowAndColumn
subwindow = sub_window subwindow = sub_window
areaLayout = subwindow.widget().widget().layout().itemAt(1).widget().layout() areaLayout = subwindow.widget().widget().layout().itemAt(1).widget().layout()
deviceName = subwindow.windowTitle()
for areaId in rowAndColumn:
for devicelist in self.nowValue:
areas = devicelist[deviceName]
print(areas,'sssss')
area = areas[areaId - 1]
index = areas.index(area)
print(index,'index')
print(area,'ssss')
# for area in areas:
# for widget in range(2, 6):
# print(widget)
# print(area[widget])
# area[widget].deleteLater()
# areaLayout.removeWidget(area[widget])
# self.nowValue.remove(areaS)
# # print(self.nowValue)
for rowAndColumn in rowAndColumns:
print(rowAndColumn)
row = rowAndColumn[0]
column = rowAndColumn[1]
if column == 0:
for i in range(4):
widget = areaLayout.itemAtPosition(row, i).widget()
areaLayout.removeWidget(widget)
widget.deleteLater()
#删除self.areaLabel列表中的对象
for label in self.areaLabel:
if widget in label:
self.areaLabel.remove(label)
else:
for i in range(4,8):
widget = areaLayout.itemAtPosition(row, i).widget()
areaLayout.removeWidget(widget)
widget.deleteLater()
# 删除self.areaLabel列表中的对象
for label in self.areaLabel:
if widget in label:
self.areaLabel.remove(label)
# print(rowAndColumn,'sssss')
# for areaId in rowAndColumn:
# for nowWidget in self.nowValue:
# if nowWidget[0] == deviceName and nowWidget[2] == areaId:
# for widget in range(3, 7):
#
# areaLayout.removeWidget(nowWidget[widget])
# nowWidget[widget].deleteLater()
# delAreaWidgetList.append(nowWidget)
# for widget in delAreaWidgetList: #从列表中删除已删除的部件
# self.nowValue.remove(widget)
#重置area的id
# i = 1
# j = 1
# for nowWidget in self.nowValue:
# if nowWidget[0] == deviceName:
# if nowWidget[2] == j:
# index = nowWidget.index(nowWidget[2])
# nowWidget[index] = i
# else:
# j = nowWidget[2]
# i += 1
# index = nowWidget.index(nowWidget[2])
# nowWidget[index] = i
def startProtocol(self): def startProtocol(self):
if self.areaLabel: a = []
print(1) for i in range(len(self.nowValue)):
else: a.append(i)
print(2)
return for i in a :
for j in self.nowValue:
j[5].setText(str(i))
print(a)
def closeEvent(self, event): def closeEvent(self, event):
@ -302,8 +343,7 @@ class AreaQMdiSubWindow(QMdiSubWindow):
super().__init__() super().__init__()
self.number = 0 self.number = 0
def closeEvent(self, event): def closeEvent(self, event):
pass DeviceDB.deleteDevice(deviceName = self.windowTitle())
# self.devicedb.deleteDevice(deviceName = self.windowTitle())
@ -312,7 +352,7 @@ class AreaQMdiSubWindow(QMdiSubWindow):
if __name__ == '__main__': if __name__ == '__main__':
app = QApplication(sys.argv) app = QApplication(sys.argv)
# Client.initDB() Client.initDB()
window = MainWindow() window = MainWindow()
window.show() window.show()

@ -1,6 +1,6 @@
from PyQt5.QtWidgets import QApplication, QStyleFactory from PyQt5.QtWidgets import QApplication, QStyleFactory
from UI.MainWindow import MainWindow, CommonHelper from UI.MainWindow import MainWindow, CommonHelper
# from model.ClientModel.Client import Client from model.ClientModel.Client import Client
import time import time
import sys import sys
@ -10,7 +10,7 @@ if __name__ == '__main__':
app = QApplication(sys.argv) app = QApplication(sys.argv)
# app.setStyle(QStyleFactory.create('Fusion')) # app.setStyle(QStyleFactory.create('Fusion'))
app.setStyleSheet(CommonHelper.readQss('static/main.qss')) app.setStyleSheet(CommonHelper.readQss('static/main.qss'))
# Client.initDB() Client.initDB()
window = MainWindow() window = MainWindow()
window.show() window.show()
sys.exit(app.exec_()) sys.exit(app.exec_())

@ -2,10 +2,10 @@ import os
import sys import sys
from peewee import * from peewee import *
from utils.DBModels.BaseModel import * from utils.DBModels.BaseModel import *
from utils.DBModels.ClientModels import * from utils.DBModels.DeviceModels import *
class Client(object): class Client(object):
def __init__(self): def __init__(self):
super(Device, self).__init__() super(Client, self).__init__()
@classmethod @classmethod
def initDB(self): def initDB(self):

@ -8,6 +8,8 @@ from PyQt5.QtWidgets import QApplication, QMainWindow, QToolBar, QMdiArea, QActi
from model.ProjectModel.DeviceManage import DevicesManange from model.ProjectModel.DeviceManage import DevicesManange
from protocol.ModBus.TCPMaster import TcpMaster from protocol.ModBus.TCPMaster import TcpMaster
from utils.DBModels.DeviceModels import DeviceDB
# from utils.DBModels.ClientModels import DeviceDB # from utils.DBModels.ClientModels import DeviceDB
jsonCon = json.dumps([{ jsonCon = json.dumps([{
@ -165,15 +167,11 @@ class Devices():
areaJson = json.dumps(jsonCon) areaJson = json.dumps(jsonCon)
DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute() DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute()
def getValueLength(self, deviceName):
number = 0
if DeviceDB.getByName(deviceName=deviceName).areaJson is None:
return number
else:
numbers = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson)
for i in numbers:
number += int(i['nums'])
return number
def getAllDevice(self): def getAllDevice(self):
# 查询所有设备 # 查询所有设备

@ -1,4 +1,8 @@
import collections import collections
import json
from utils.DBModels.DeviceModels import DeviceDB
class Device(): class Device():
areas = [] areas = []
startAddress = None startAddress = None
@ -8,8 +12,25 @@ class Device():
def __init__(self): def __init__(self):
pass pass
def addAreas(self): def addAreas(self, type, nums, bytes, deviceName):
areas.append(Area()) if DeviceDB.getByName(deviceName=deviceName).areaJson is None:
jsonCon = ([{
"id": 1,
"type": type,
"nums": nums,
"bytes": bytes,
}])
else:
jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson)
id = jsonCon[-1]["id"] + 1
jsonCon.append({
"id": id,
"type": type,
"nums": nums,
"bytes": bytes,
})
areaJson = json.dumps(jsonCon)
DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute()
def getValueLength(self): def getValueLength(self):
@ -19,6 +40,48 @@ class Device():
def writeAreas(self): def writeAreas(self):
pass pass
def delAreas(self, deviceNames, ids):
for id in ids:
deviceName = deviceNames
jsonCon = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson)
print(jsonCon[id - 1])
jsonCon.remove(jsonCon[id - 1])
if jsonCon == []:
areaJson = None
DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute()
else:
i = 1
for areajsonId in jsonCon:
areajsonId["id"] = i
i += 1
areaJson = json.dumps(jsonCon)
DeviceDB.update(areaJson=areaJson).where(DeviceDB.deviceName == deviceName).execute()
def getAreaID(self, deviceNames):
deviceName = deviceNames
jsonConsStr = DeviceDB.getByName(deviceName=deviceName).areaJson
if jsonConsStr is None:
return
else:
jsonCons = json.loads(jsonConsStr)
id = []
for jsonCon in jsonCons:
id.append(jsonCon["id"])
return id
def getAreaJson(self, deviceNames):
deviceName = deviceNames
jsonConsStr = DeviceDB.getByName(deviceName=deviceName).areaJson
if jsonConsStr is None:
return
else:
jsonCons = json.loads(jsonConsStr)
return jsonCons
class DevicesManange(): class DevicesManange():
def __init__(self): def __init__(self):
self.masterDevices = collections.OrderedDict() self.masterDevices = collections.OrderedDict()
@ -78,7 +141,16 @@ class DevicesManange():
# print(self.masterDevices,self.slaveDevices,'分别返回PA和DP每个主站寄存器地址的总长度') # print(self.masterDevices,self.slaveDevices,'分别返回PA和DP每个主站寄存器地址的总长度')
return self.masterDevices, self.slaveDevices #分别返回PA和DP每个设备的字节的总长度 return self.masterDevices, self.slaveDevices #分别返回PA和DP每个设备的字节的总长度
@classmethod
def getChannelLength(self, deviceName):
number = 0
if DeviceDB.getByName(deviceName=deviceName).areaJson is None:
return number
else:
numbers = json.loads(DeviceDB.getByName(deviceName=deviceName).areaJson)
for i in numbers:
number += int(i['nums'])
return number
def editDevies(self): def editDevies(self):
pass pass
@ -97,3 +169,13 @@ class DevicesManange():
slaveAddress = int(self.slaveDevices[key]) + slaveAddress slaveAddress = int(self.slaveDevices[key]) + slaveAddress
print(masterAddressList, '主站', slaveAddressList, '从站') print(masterAddressList, '主站', slaveAddressList, '从站')
return masterAddressList, slaveAddressList #返回PA和DP每个字节长度的起始值 return masterAddressList, slaveAddressList #返回PA和DP每个字节长度的起始值
def getAllDevice(self):
# 查询所有设备
devices = DeviceDB.get_all()
if devices is 'error':
return
l = []
for x in devices:
l.append([x.deviceName, x.proType, x.masterSlaveModel, x.areaJson])
return l

@ -9,6 +9,13 @@ from utils.DBModels.BaseModel import BaseModel
sys.path.append('../') sys.path.append('../')
sys.path.append('../../../') sys.path.append('../../../')
class JSONField(TextField):
def db_value(self, value):
return json.dumps(value)
def python_value(self, value):
if value is not None:
return json.loads(value)
@ -16,7 +23,7 @@ class DeviceDB(BaseModel):
deviceName = CharField() deviceName = CharField()
proType = CharField() proType = CharField()
masterSlaveModel = CharField() masterSlaveModel = CharField()
areaJson = CharField() areaJson = JSONField()
pvUpperLimit = CharField() pvUpperLimit = CharField()
pvLowerLimit = CharField() pvLowerLimit = CharField()
pvUnit = CharField() pvUnit = CharField()
@ -42,6 +49,7 @@ class DeviceDB(BaseModel):
return e return e
# 添加设备 # 添加设备
def addDevice(self, deviceName, proType, masterSlaveModel=masterSlaveModel, areaJson=None, pvLowerLimit=pvLowerLimit, pvUpperLimit=pvUpperLimit, pvUnit=pvUnit): def addDevice(self, deviceName, proType, masterSlaveModel=masterSlaveModel, areaJson=None, pvLowerLimit=pvLowerLimit, pvUpperLimit=pvUpperLimit, pvUnit=pvUnit):
self.deviceName = deviceName self.deviceName = deviceName
self.proType = proType self.proType = proType
@ -54,6 +62,7 @@ class DeviceDB(BaseModel):
# print(self.createTime) # print(self.createTime)
self.save() self.save()
def initDevice(self, deviceName, proType, masterSlaveModel, areaJson, pvLowerLimit, pvUpperLimit, pvUnit): def initDevice(self, deviceName, proType, masterSlaveModel, areaJson, pvLowerLimit, pvUpperLimit, pvUnit):
self.deviceName = deviceName self.deviceName = deviceName
self.proType = proType self.proType = proType

Loading…
Cancel
Save