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