etherlab/CommonEtherCATFunction.py
changeset 2417 316ee9fff395
parent 2410 4e7ebd6ec248
child 2421 a5994ee1f6a7
equal deleted inserted replaced
2416:1ca207782dde 2417:316ee9fff395
   893         vendor_specific_data = ""
   893         vendor_specific_data = ""
   894         #   vendor_spec_strings : list of vendor specific "strings" for preventing duplicated strings
   894         #   vendor_spec_strings : list of vendor specific "strings" for preventing duplicated strings
   895         vendor_spec_strings = []
   895         vendor_spec_strings = []
   896         for element in device.getType().getcontent():
   896         for element in device.getType().getcontent():
   897             data += element
   897             data += element
   898         if data is not "" and isinstance(data, unicode):
   898         if data != "" and isinstance(data, unicode):
   899             for vendor_spec_string in vendor_spec_strings:
   899             for vendor_spec_string in vendor_spec_strings:
   900                 if data == vendor_spec_string:
   900                 if data == vendor_spec_string:
   901                     self.OrderIdx = vendor_spec_strings.index(data)+1
   901                     self.OrderIdx = vendor_spec_strings.index(data)+1
   902                     typeflag = True
   902                     typeflag = True
   903                     break
   903                     break
   960             for _vendorId, vendor in self.Controler.CTNParent.CTNParent.ModulesLibrary.Library.iteritems():
   960             for _vendorId, vendor in self.Controler.CTNParent.CTNParent.ModulesLibrary.Library.iteritems():
   961                 for group_type, group_etc in vendor["groups"].iteritems():
   961                 for group_type, group_etc in vendor["groups"].iteritems():
   962                     for device_item in group_etc["devices"]:
   962                     for device_item in group_etc["devices"]:
   963                         if device == device_item[1]:
   963                         if device == device_item[1]:
   964                             data = group_etc["name"]
   964                             data = group_etc["name"]
   965         if data is not "" and isinstance(data, unicode):
   965         if data != "" and isinstance(data, unicode):
   966             for vendor_spec_string in vendor_spec_strings:
   966             for vendor_spec_string in vendor_spec_strings:
   967                 if data == vendor_spec_string:
   967                 if data == vendor_spec_string:
   968                     groupnameflag = True
   968                     groupnameflag = True
   969                     break
   969                     break
   970             if groupnameflag is False:
   970             if groupnameflag is False:
   979 
   979 
   980         #  element4; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Name(LcId is "1033" or "1"?)>
   980         #  element4; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Name(LcId is "1033" or "1"?)>
   981         for element in device.getName():
   981         for element in device.getName():
   982             if element.getLcId() == 1 or element.getLcId() == 1033:
   982             if element.getLcId() == 1 or element.getLcId() == 1033:
   983                 data = element.getcontent()
   983                 data = element.getcontent()
   984         if data is not "" and isinstance(data, unicode):
   984         if data != "" and isinstance(data, unicode):
   985             for vendor_spec_string in vendor_spec_strings:
   985             for vendor_spec_string in vendor_spec_strings:
   986                 if data == vendor_spec_string:
   986                 if data == vendor_spec_string:
   987                     self.NameIdx = vendor_spec_strings.index(data)+1
   987                     self.NameIdx = vendor_spec_strings.index(data)+1
   988                     devnameflag = True
   988                     devnameflag = True
   989                     break
   989                     break
  1046         #  <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Dc>-<OpMode>-<Name>
  1046         #  <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Dc>-<OpMode>-<Name>
  1047         dc_related_elements = ""
  1047         dc_related_elements = ""
  1048         if device.getDc() is not None:
  1048         if device.getDc() is not None:
  1049             for element in device.getDc().getOpMode():
  1049             for element in device.getDc().getOpMode():
  1050                 data = element.getName()
  1050                 data = element.getName()
  1051                 if data is not "":
  1051                 if data != "":
  1052                     count += 1
  1052                     count += 1
  1053                     self.Strings.append(data)
  1053                     self.Strings.append(data)
  1054                     dc_related_elements += "{:0>2x}".format(len(data))
  1054                     dc_related_elements += "{:0>2x}".format(len(data))
  1055                     for character in range(len(data)):
  1055                     for character in range(len(data)):
  1056                         dc_related_elements += "{:0>2x}".format(ord(data[character]))
  1056                         dc_related_elements += "{:0>2x}".format(ord(data[character]))
  1064             for name in element.getName():
  1064             for name in element.getName():
  1065                 data = name.getcontent()
  1065                 data = name.getcontent()
  1066             for input in inputs:
  1066             for input in inputs:
  1067                 if data == input:
  1067                 if data == input:
  1068                     data = ""
  1068                     data = ""
  1069             if data is not "":
  1069             if data != "":
  1070                 count += 1
  1070                 count += 1
  1071                 self.Strings.append(data)
  1071                 self.Strings.append(data)
  1072                 inputs.append(data)
  1072                 inputs.append(data)
  1073                 input_elements += "{:0>2x}".format(len(data))
  1073                 input_elements += "{:0>2x}".format(len(data))
  1074                 for character in range(len(data)):
  1074                 for character in range(len(data)):
  1078                 for name in entry.getName():
  1078                 for name in entry.getName():
  1079                     data = name.getcontent()
  1079                     data = name.getcontent()
  1080                 for input in inputs:
  1080                 for input in inputs:
  1081                     if data == input:
  1081                     if data == input:
  1082                         data = ""
  1082                         data = ""
  1083                 if data is not "":
  1083                 if data != "":
  1084                     count += 1
  1084                     count += 1
  1085                     self.Strings.append(data)
  1085                     self.Strings.append(data)
  1086                     inputs.append(data)
  1086                     inputs.append(data)
  1087                     input_elements += "{:0>2x}".format(len(data))
  1087                     input_elements += "{:0>2x}".format(len(data))
  1088                     for character in range(len(data)):
  1088                     for character in range(len(data)):
  1097             for name in element.getName():
  1097             for name in element.getName():
  1098                 data = name.getcontent()
  1098                 data = name.getcontent()
  1099             for output in outputs:
  1099             for output in outputs:
  1100                 if data == output:
  1100                 if data == output:
  1101                     data = ""
  1101                     data = ""
  1102             if data is not "":
  1102             if data != "":
  1103                 count += 1
  1103                 count += 1
  1104                 self.Strings.append(data)
  1104                 self.Strings.append(data)
  1105                 outputs.append(data)
  1105                 outputs.append(data)
  1106                 output_elements += "{:0>2x}".format(len(data))
  1106                 output_elements += "{:0>2x}".format(len(data))
  1107                 for character in range(len(data)):
  1107                 for character in range(len(data)):
  1111                 for name in entry.getName():
  1111                 for name in entry.getName():
  1112                     data = name.getcontent()
  1112                     data = name.getcontent()
  1113                 for output in outputs:
  1113                 for output in outputs:
  1114                     if data == output:
  1114                     if data == output:
  1115                         data = ""
  1115                         data = ""
  1116                 if data is not "":
  1116                 if data != "":
  1117                     count += 1
  1117                     count += 1
  1118                     self.Strings.append(data)
  1118                     self.Strings.append(data)
  1119                     outputs.append(data)
  1119                     outputs.append(data)
  1120                     output_elements += "{:0>2x}".format(len(data))
  1120                     output_elements += "{:0>2x}".format(len(data))
  1121                     for character in range(len(data)):
  1121                     for character in range(len(data)):
  1277                 data += "02"
  1277                 data += "02"
  1278             if fmmu.getcontent() == "MBoxState":
  1278             if fmmu.getcontent() == "MBoxState":
  1279                 data += "03"
  1279                 data += "03"
  1280 
  1280 
  1281         # construct of EEPROM data
  1281         # construct of EEPROM data
  1282         if data is not "":
  1282         if data != "":
  1283             #  category header
  1283             #  category header
  1284             eeprom.append("28")
  1284             eeprom.append("28")
  1285             eeprom.append("00")
  1285             eeprom.append("00")
  1286             #  category length
  1286             #  category length
  1287             if count % 2 == 1:
  1287             if count % 2 == 1:
  1326                 data += "01"
  1326                 data += "01"
  1327             else:
  1327             else:
  1328                 data += "00"
  1328                 data += "00"
  1329             data += number[sm.getcontent()]
  1329             data += number[sm.getcontent()]
  1330 
  1330 
  1331         if data is not "":
  1331         if data != "":
  1332             #  category header
  1332             #  category header
  1333             eeprom.append("29")
  1333             eeprom.append("29")
  1334             eeprom.append("00")
  1334             eeprom.append("00")
  1335             #  category length
  1335             #  category length
  1336             eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
  1336             eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
  1429                 en_fixed = False
  1429                 en_fixed = False
  1430                 if entry.getFixed() is True or entry.getFixed() == 1:
  1430                 if entry.getFixed() is True or entry.getFixed() == 1:
  1431                     en_fixed = True
  1431                     en_fixed = True
  1432                 data += str(int(en_fixed)) + "000"
  1432                 data += str(int(en_fixed)) + "000"
  1433 
  1433 
  1434         if data is not "":
  1434         if data != "":
  1435             #  category header
  1435             #  category header
  1436             if pdotype == "TxPdo":
  1436             if pdotype == "TxPdo":
  1437                 eeprom.append("32")
  1437                 eeprom.append("32")
  1438             elif pdotype == "RxPdo":
  1438             elif pdotype == "RxPdo":
  1439                 eeprom.append("33")
  1439                 eeprom.append("33")
  1508                 data += "00"
  1508                 data += "00"
  1509                 #  assume that word 11-12 are 0x0000
  1509                 #  assume that word 11-12 are 0x0000
  1510                 data += "0000"
  1510                 data += "0000"
  1511                 data += "0000"
  1511                 data += "0000"
  1512 
  1512 
  1513         if data is not "":
  1513         if data != "":
  1514             #  category header
  1514             #  category header
  1515             eeprom.append("3c")
  1515             eeprom.append("3c")
  1516             eeprom.append("00")
  1516             eeprom.append("00")
  1517             #  category length
  1517             #  category length
  1518             eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
  1518             eeprom.append("{:0>4x}".format(len(data)/4)[2:4])