You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PROFIBUS/UI/AreaValueManage.py

86 lines
3.8 KiB
Python

2 years ago
import collections
class AreaValueManage():
def __init__(self):
self.wirteAllValueDict = collections.OrderedDict()
self.readAllValueDict = collections.OrderedDict()
self.wirteValueDict = collections.OrderedDict()
self.readValueDict = collections.OrderedDict()
self.initCurindex = 0
self.readValueWidgets = []
def initAreaValue(self, deviceName, curIndex, valueList, dataTypeAndModel):
if dataTypeAndModel in ['主站AO','从站AI', '主站DO','从站DI']:
self.wirteValueDict[self.initCurindex] = valueList
self.wirteAllValueDict[deviceName] = self.wirteValueDict
self.initCurindex += 1
else:
self.readValueDict[self.initCurindex] = valueList
self.readAllValueDict[deviceName] = self.readValueDict
self.initCurindex += 1
print(self.readAllValueDict,999)
def delArea(self, deviceName, curIndex):
if deviceName in self.wirteAllValueDict.keys():
areaDict = self.wirteAllValueDict[deviceName]
if curIndex in self.wirteAllValueDict[deviceName].keys():
areaDict.pop(curIndex)
for key, value in areaDict.items():
if key > curIndex:
areaDict[key - 1] = value
areaDict.pop(key)
elif deviceName in self.readAllValueDict.keys():
areaDict = self.readAllValueDict[deviceName]
if curIndex in self.readAllValueDict[deviceName].keys():
areaDict.pop(curIndex)
for key, value in areaDict.items():
if key > curIndex:
areaDict[key - 1] = value
areaDict.pop(key)
def delDevice(self,deviceName):
if deviceName in self.wirteAllValueDict.keys():
self.wirteAllValueDict.pop(deviceName)
elif deviceName in self.readAllValueDict.keys():
self.readAllValueDict.pop(deviceName)
def updataAreaValue(self, deviceName, curIndex, valueList, dataTypeAndModel):
if dataTypeAndModel in ['主站AO','从站AI', '主站DO','从站DI']:
if deviceName not in self.wirteAllValueDict.keys():
self.wirteValueDict[self.initCurindex] = valueList
self.wirteAllValueDict[deviceName] = self.wirteValueDict
else:
areaDict = self.wirteAllValueDict[deviceName]
areaDict[curIndex] = valueList
else:
if deviceName not in self.readAllValueDict.keys():
self.readValueDict[self.initCurindex] = valueList
self.readAllValueDict[deviceName] = self.readValueDict
else:
areaDict = self.readAllValueDict[deviceName]
areaDict[curIndex] = valueList
def getAreaValueList(self, deviceName, dataTypeAndModel):
writeValueLists = []
readWidgetList = []
if dataTypeAndModel in ['主站AO','从站AI', '主站DO','从站DI']:
if deviceName in self.wirteAllValueDict.keys():
writeValueDict = self.wirteAllValueDict[deviceName]
if writeValueDict:
for valueList in writeValueDict.values():
for value in valueList:
writeValueLists.append(value)
return writeValueLists
elif deviceName in self.readAllValueDict.keys():
readValueDict = self.readAllValueDict[deviceName]
if readValueDict:
for widgetsList in writeValueDict.values():
for widget in widgetsList:
readWidgetList.append(widget)
return readWidgetList