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.
86 lines
3.8 KiB
Python
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
|
||
|
|