plcopen/plcopen.py
changeset 1309 85ce56758900
parent 1307 26e8b99bc2c3
child 1310 3d7fa2257b24
equal deleted inserted replaced
1308:ad61268dbdb6 1309:85ce56758900
    25 from xmlclass import *
    25 from xmlclass import *
    26 from structures import *
    26 from structures import *
    27 from types import *
    27 from types import *
    28 import os, re
    28 import os, re
    29 from lxml import etree
    29 from lxml import etree
    30 from collections import OrderedDict
       
    31 """
    30 """
    32 Dictionary that makes the relation between var names in plcopen and displayed values
    31 Dictionary that makes the relation between var names in plcopen and displayed values
    33 """
    32 """
    34 VarTypes = {"Local" : "localVars", "Temp" : "tempVars", "Input" : "inputVars",
    33 VarTypes = {"Local" : "localVars", "Temp" : "tempVars", "Input" : "inputVars",
    35             "Output" : "outputVars", "InOut" : "inOutVars", "External" : "externalVars",
    34             "Output" : "outputVars", "InOut" : "inOutVars", "External" : "externalVars",
   267         }
   266         }
   268     setattr(cls, "getfileHeader", getfileHeader)
   267     setattr(cls, "getfileHeader", getfileHeader)
   269     
   268     
   270     def setfileHeader(self, fileheader):
   269     def setfileHeader(self, fileheader):
   271         fileheader_obj = self.fileHeader
   270         fileheader_obj = self.fileHeader
   272         for attr, value in fileheader.iteritems():
   271         for attr in ["companyName", "companyURL", "productName",
   273             setattr(fileheader_obj, attr, value)
   272                      "productVersion", "productRelease", "creationDateTime",
       
   273                      "contentDescription"]:
       
   274             value = fileheader.get(attr)
       
   275             if value is not None:
       
   276                 setattr(fileheader_obj, attr, value)
   274     setattr(cls, "setfileHeader", setfileHeader)
   277     setattr(cls, "setfileHeader", setfileHeader)
   275     
   278     
   276     def getcontentHeader(self):
   279     def getcontentHeader(self):
   277         contentheader_obj = self.contentHeader
   280         contentheader_obj = self.contentHeader
   278         contentheader = {
   281         contentheader = {
   295         for attr, value in contentheader.iteritems():
   298         for attr, value in contentheader.iteritems():
   296             if attr == "projectName":
   299             if attr == "projectName":
   297                 contentheader_obj.setname(value)
   300                 contentheader_obj.setname(value)
   298             elif attr == "projectVersion":
   301             elif attr == "projectVersion":
   299                 contentheader_obj.setversion(value)
   302                 contentheader_obj.setversion(value)
       
   303             elif attr == "authorName":
       
   304                 contentheader_obj.setauthor(value)
   300             elif attr == "pageSize":
   305             elif attr == "pageSize":
   301                 contentheader_obj.setpageSize(*contentheader["pageSize"])
   306                 contentheader_obj.setpageSize(*contentheader["pageSize"])
   302             elif attr == "scaling":
   307             elif attr == "scaling":
   303                 contentheader_obj.setscaling(contentheader["scaling"])
   308                 contentheader_obj.setscaling(contentheader["scaling"])
   304             else:
   309             elif attr in ["modificationDateTime", "organization", "language"]:
   305                 setattr(contentheader_obj, attr, value)
   310                 setattr(contentheader_obj, attr, value)
   306     setattr(cls, "setcontentHeader", setcontentHeader)
   311     setattr(cls, "setcontentHeader", setcontentHeader)
   307     
   312     
   308     def gettypeElementFunc(element_type):
   313     def gettypeElementFunc(element_type):
   309         elements_xpath = PLCOpen_XPath(
   314         elements_xpath = PLCOpen_XPath(
   601         if len(globalvars) == 0:
   606         if len(globalvars) == 0:
   602             globalvars.append(PLCOpenParser.CreateElement("varList"))
   607             globalvars.append(PLCOpenParser.CreateElement("varList"))
   603         var = PLCOpenParser.CreateElement("variable", "varListPlain")
   608         var = PLCOpenParser.CreateElement("variable", "varListPlain")
   604         var.setname(name)
   609         var.setname(name)
   605         var_type_obj = PLCOpenParser.CreateElement("dataType")
   610         var_type_obj = PLCOpenParser.CreateElement("dataType")
   606         if var_type in [x for x,y in TypeHierarchy_list if not x.startswith("ANY")]:
   611         if not var_type.startswith("ANY") and TypeHierarchy.get(var_type):
   607             var_type_obj.setcontent(PLCOpenParser.CreateElement(
   612             var_type_obj.setcontent(PLCOpenParser.CreateElement(
   608                 var_type.lower() if var_type in ["STRING", "WSTRING"]
   613                 var_type.lower() if var_type in ["STRING", "WSTRING"]
   609                 else vartype, "dataType"))
   614                 else vartype, "dataType"))
   610         else:
   615         else:
   611             derived_type = PLCOpenParser.CreateElement("derived", "dataType")
   616             derived_type = PLCOpenParser.CreateElement("derived", "dataType")
  1160                 varlist = PLCOpenParser.CreateElement(var_class, "interface")
  1165                 varlist = PLCOpenParser.CreateElement(var_class, "interface")
  1161                 content[-1].addnext(varlist)
  1166                 content[-1].addnext(varlist)
  1162         var = PLCOpenParser.CreateElement("variable", "varListPlain")
  1167         var = PLCOpenParser.CreateElement("variable", "varListPlain")
  1163         var.setname(name)
  1168         var.setname(name)
  1164         var_type_obj = PLCOpenParser.CreateElement("type", "variable")
  1169         var_type_obj = PLCOpenParser.CreateElement("type", "variable")
  1165         if var_type in [x for x,y in TypeHierarchy_list if not x.startswith("ANY")]:
  1170         if not var_type.startswith("ANY") and TypeHierarchy.get(var_type):
  1166             var_type_obj.setcontent(PLCOpenParser.CreateElement(
  1171             var_type_obj.setcontent(PLCOpenParser.CreateElement(
  1167                 var_type.lower() if var_type in ["STRING", "WSTRING"]
  1172                 var_type.lower() if var_type in ["STRING", "WSTRING"]
  1168                 else var_type, "dataType"))
  1173                 else var_type, "dataType"))
  1169         else:
  1174         else:
  1170             derived_type = PLCOpenParser.CreateElement("derived", "dataType")
  1175             derived_type = PLCOpenParser.CreateElement("derived", "dataType")