27 import cPickle |
27 import cPickle |
28 import os,sys,re |
28 import os,sys,re |
29 import datetime |
29 import datetime |
30 from time import localtime |
30 from time import localtime |
31 |
31 |
32 from plcopen import PLCOpenParser, LoadProject, SaveProject |
32 from plcopen import PLCOpenParser, LoadProject, SaveProject, QualifierList, rect |
33 from plcopen.structures import * |
33 from plcopen.structures import * |
34 from graphics.GraphicCommons import * |
34 from graphics.GraphicCommons import * |
35 from PLCGenerator import * |
35 from PLCGenerator import * |
36 |
36 |
37 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?") |
37 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?") |
213 self.TotalTypesDict = StdBlckDct.copy() |
213 self.TotalTypesDict = StdBlckDct.copy() |
214 self.TotalTypes = StdBlckLst[:] |
214 self.TotalTypes = StdBlckLst[:] |
215 self.ProgramFilePath = "" |
215 self.ProgramFilePath = "" |
216 |
216 |
217 def GetQualifierTypes(self): |
217 def GetQualifierTypes(self): |
218 return plcopen.QualifierList |
218 return QualifierList |
219 |
219 |
220 def GetProject(self, debug = False): |
220 def GetProject(self, debug = False): |
221 if debug and self.CurrentCompiledProject is not None: |
221 if debug and self.CurrentCompiledProject is not None: |
222 return self.CurrentCompiledProject |
222 return self.CurrentCompiledProject |
223 else: |
223 else: |
1193 if isinstance(var["Type"], TupleType): |
1193 if isinstance(var["Type"], TupleType): |
1194 if var["Type"][0] == "array": |
1194 if var["Type"][0] == "array": |
1195 array_type, base_type_name, dimensions = var["Type"] |
1195 array_type, base_type_name, dimensions = var["Type"] |
1196 array = PLCOpenParser.CreateElement("array", "dataType") |
1196 array = PLCOpenParser.CreateElement("array", "dataType") |
1197 for i, dimension in enumerate(dimensions): |
1197 for i, dimension in enumerate(dimensions): |
1198 dimension_range = plcopen.rangeSigned() |
1198 dimension_range = PLCOpenParser.CreateElement("range", "dimension") |
1199 dimension_range.setlower(dimension[0]) |
|
1200 dimension_range.setupper(dimension[1]) |
|
1201 if i == 0: |
1199 if i == 0: |
1202 array.setdimension([dimension_range]) |
1200 array.setdimension([dimension_range]) |
1203 else: |
1201 else: |
1204 array.appenddimension(dimension_range) |
1202 array.appenddimension(dimension_range) |
|
1203 dimension_range.setlower(dimension[0]) |
|
1204 dimension_range.setupper(dimension[1]) |
1205 if base_type_name in self.GetBaseTypes(): |
1205 if base_type_name in self.GetBaseTypes(): |
1206 array.baseType.setcontent(PLCOpenParser.CreateElement( |
1206 array.baseType.setcontent(PLCOpenParser.CreateElement( |
1207 base_type_name.lower() |
1207 base_type_name.lower() |
1208 if base_type_name in ["STRING", "WSTRING"] |
1208 if base_type_name in ["STRING", "WSTRING"] |
1209 else base_type_name, "dataType")) |
1209 else base_type_name, "dataType")) |