etherlab/EtherCATManagementEditor.py
changeset 2369 24db1e592e20
parent 2368 642ae95218b6
child 2373 73d35ba8f982
equal deleted inserted replaced
2368:642ae95218b6 2369:24db1e592e20
  1049         """
  1049         """
  1050         Set data based on slave EEPROM.
  1050         Set data based on slave EEPROM.
  1051         """
  1051         """
  1052         # sii_dict = { Parameter : (WordAddress, WordSize) }
  1052         # sii_dict = { Parameter : (WordAddress, WordSize) }
  1053         sii_dict = {
  1053         sii_dict = {
  1054             'PDIControl' :                          ( '0', 1),
  1054             'PDIControl' :                          ('0', 1),
  1055             'PDIConfiguration' :                    ( '1', 1),
  1055             'PDIConfiguration' :                    ('1', 1),
  1056             'PulseLengthOfSYNCSignals' :            ( '2', 1),
  1056             'PulseLengthOfSYNCSignals' :            ('2', 1),
  1057             'ExtendedPDIConfiguration' :            ( '3', 1),
  1057             'ExtendedPDIConfiguration' :            ('3', 1),
  1058             'ConfiguredStationAlias' :              ( '4', 1),
  1058             'ConfiguredStationAlias' :              ('4', 1),
  1059             'Checksum' :                            ( '7', 1),
  1059             'Checksum' :                            ('7', 1),
  1060             'VendorID' :                            ( '8', 2),
  1060             'VendorID' :                            ('8', 2),
  1061             'ProductCode' :                         ( 'a', 2),
  1061             'ProductCode' :                         ('a', 2),
  1062             'RevisionNumber' :                      ( 'c', 2),
  1062             'RevisionNumber' :                      ('c', 2),
  1063             'SerialNumber' :                        ( 'e', 2),
  1063             'SerialNumber' :                        ('e', 2),
  1064             'Execution Delay' :                     ('10', 1),
  1064             'Execution Delay' :                     ('10', 1),
  1065             'Port0Delay' :                          ('11', 1),
  1065             'Port0Delay' :                          ('11', 1),
  1066             'Port1Delay' :                          ('12', 1),
  1066             'Port1Delay' :                          ('12', 1),
  1067             'BootstrapReceiveMailboxOffset' :       ('14', 1),
  1067             'BootstrapReceiveMailboxOffset' :       ('14', 1),
  1068             'BootstrapReceiveMailboxSize' :         ('15', 1),
  1068             'BootstrapReceiveMailboxSize' :         ('15', 1),
  1080             'Category Data' :                       ('42', 1),
  1080             'Category Data' :                       ('42', 1),
  1081         }
  1081         }
  1082 
  1082 
  1083         # Config Data: EEPROM Size, PDI Type, Device Emulation
  1083         # Config Data: EEPROM Size, PDI Type, Device Emulation
  1084         # EEPROM's data in address '0x003f' is Size of EEPROM in KBit-1
  1084         # EEPROM's data in address '0x003f' is Size of EEPROM in KBit-1
  1085         eeprom_size = str((int(self.GetWordAddressData( sii_dict.get('Size'), 10))+1)/8*1024)
  1085         eeprom_size = str((int(self.GetWordAddressData(sii_dict.get('Size'), 10))+1)/8*1024)
  1086         # Find PDI Type in pdiType dictionary
  1086         # Find PDI Type in pdiType dictionary
  1087         cnt_pdi_type = int(self.GetWordAddressData( sii_dict.get('PDIControl'), 16).split('x')[1][2:4], 16)
  1087         cnt_pdi_type = int(self.GetWordAddressData(sii_dict.get('PDIControl'), 16).split('x')[1][2:4], 16)
  1088         for i in self.PDIType.keys():
  1088         for i in self.PDIType.keys():
  1089             if cnt_pdi_type == i:
  1089             if cnt_pdi_type == i:
  1090                 cnt_pdi_type = self.PDIType[i][0]
  1090                 cnt_pdi_type = self.PDIType[i][0]
  1091                 break
  1091                 break
  1092         #  Get Device Emulation
  1092         #  Get Device Emulation
  1093         device_emulation = str(bool(int("{:0>16b}".format(int(self.GetWordAddressData( sii_dict.get('PDIControl'), 16), 16))[7])))
  1093         device_emulation = str(bool(int("{:0>16b}".format(int(self.GetWordAddressData(sii_dict.get('PDIControl'), 16), 16))[7])))
  1094         #  Set Config Data
  1094         #  Set Config Data
  1095         for treelist, data in [("EEPROM Size (Bytes)", eeprom_size),
  1095         for treelist, data in [("EEPROM Size (Bytes)", eeprom_size),
  1096                                ("PDI Type", cnt_pdi_type),
  1096                                ("PDI Type", cnt_pdi_type),
  1097                                ("Device Emulation", device_emulation)]:
  1097                                ("Device Emulation", device_emulation)]:
  1098             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.ConfigData[treelist], data, 1)
  1098             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.ConfigData[treelist], data, 1)
  1099 
  1099 
  1100         # Device Identity: Vendor ID, Product Code, Revision No., Serial No.
  1100         # Device Identity: Vendor ID, Product Code, Revision No., Serial No.
  1101         #  Set Device Identity
  1101         #  Set Device Identity
  1102         for treelist, data in [
  1102         for treelist, data in [
  1103                 ("Vendor ID", self.GetWordAddressData( sii_dict.get('VendorID'), 16)),
  1103                 ("Vendor ID", self.GetWordAddressData(sii_dict.get('VendorID'), 16)),
  1104                 ("Product Code", self.GetWordAddressData( sii_dict.get('ProductCode'), 16)),
  1104                 ("Product Code", self.GetWordAddressData(sii_dict.get('ProductCode'), 16)),
  1105                 ("Revision No.", self.GetWordAddressData( sii_dict.get('RevisionNumber'), 16)),
  1105                 ("Revision No.", self.GetWordAddressData(sii_dict.get('RevisionNumber'), 16)),
  1106                 ("Serial No.", self.GetWordAddressData( sii_dict.get('SerialNumber'), 16))]:
  1106                 ("Serial No.", self.GetWordAddressData(sii_dict.get('SerialNumber'), 16))]:
  1107             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.DeviceIdentity[treelist], data, 1)
  1107             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.DeviceIdentity[treelist], data, 1)
  1108 
  1108 
  1109         # Mailbox
  1109         # Mailbox
  1110         # EEORPOM's word address '1c' indicates supported mailbox protocol.
  1110         # EEORPOM's word address '1c' indicates supported mailbox protocol.
  1111         # each value of mailbox protocol :
  1111         # each value of mailbox protocol :
  1112         # VoE(0x0020), SoE(0x0010), FoE(0x0008), CoE(0x0004), EoE(0x0002), AoE(0x0001)
  1112         # VoE(0x0020), SoE(0x0010), FoE(0x0008), CoE(0x0004), EoE(0x0002), AoE(0x0001)
  1113         supported_mailbox = ""
  1113         supported_mailbox = ""
  1114         mailbox_protocol = ["VoE,  ", "SoE,  ", "FoE,  ", "CoE,  ", "EoE,  ", "AoE,  "]
  1114         mailbox_protocol = ["VoE,  ", "SoE,  ", "FoE,  ", "CoE,  ", "EoE,  ", "AoE,  "]
  1115         mailbox_data = "{:0>8b}".format(int(self.GetWordAddressData( sii_dict.get('MailboxProtocol'), 16), 16))
  1115         mailbox_data = "{:0>8b}".format(int(self.GetWordAddressData(sii_dict.get('MailboxProtocol'), 16), 16))
  1116         for protocol in range(6):
  1116         for protocol in range(6):
  1117             if mailbox_data[protocol+2] == '1':
  1117             if mailbox_data[protocol+2] == '1':
  1118                 supported_mailbox += mailbox_protocol[protocol]
  1118                 supported_mailbox += mailbox_protocol[protocol]
  1119         supported_mailbox = supported_mailbox.strip(",  ")
  1119         supported_mailbox = supported_mailbox.strip(",  ")
  1120         #  Set Mailbox
  1120         #  Set Mailbox
  1122                                ("Bootstrap Configuration", ""),
  1122                                ("Bootstrap Configuration", ""),
  1123                                ("Standard Configuration", "")]:
  1123                                ("Standard Configuration", "")]:
  1124             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.Mailbox[treelist], data, 1)
  1124             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.Mailbox[treelist], data, 1)
  1125         #  Set Bootstrap Configuration: Receive Offset, Receive Size, Send Offset, Send Size
  1125         #  Set Bootstrap Configuration: Receive Offset, Receive Size, Send Offset, Send Size
  1126         for treelist, data in [
  1126         for treelist, data in [
  1127                 ("Receive Offset", self.GetWordAddressData( sii_dict.get('BootstrapReceiveMailboxOffset'), 10)),
  1127                 ("Receive Offset", self.GetWordAddressData(sii_dict.get('BootstrapReceiveMailboxOffset'), 10)),
  1128                 ("Receive Size", self.GetWordAddressData( sii_dict.get('BootstrapReceiveMailboxSize'), 10)),
  1128                 ("Receive Size", self.GetWordAddressData(sii_dict.get('BootstrapReceiveMailboxSize'), 10)),
  1129                 ("Send Offset", self.GetWordAddressData( sii_dict.get('BootstrapSendMailboxOffset'), 10)),
  1129                 ("Send Offset", self.GetWordAddressData(sii_dict.get('BootstrapSendMailboxOffset'), 10)),
  1130                 ("Send Size", self.GetWordAddressData( sii_dict.get('BootstrapSendMailboxSize'), 10))]:
  1130                 ("Send Size", self.GetWordAddressData(sii_dict.get('BootstrapSendMailboxSize'), 10))]:
  1131             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.BootstrapConfig[treelist], data, 1)
  1131             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.BootstrapConfig[treelist], data, 1)
  1132         #  Set Standard Configuration: Receive Offset, Receive Size, Send Offset, Send Size
  1132         #  Set Standard Configuration: Receive Offset, Receive Size, Send Offset, Send Size
  1133         for treelist, data in [
  1133         for treelist, data in [
  1134                 ("Receive Offset", self.GetWordAddressData( sii_dict.get('StandardReceiveMailboxOffset'), 10)),
  1134                 ("Receive Offset", self.GetWordAddressData(sii_dict.get('StandardReceiveMailboxOffset'), 10)),
  1135                 ("Receive Size", self.GetWordAddressData( sii_dict.get('StandardReceiveMailboxSize'), 10)),
  1135                 ("Receive Size", self.GetWordAddressData(sii_dict.get('StandardReceiveMailboxSize'), 10)),
  1136                 ("Send Offset", self.GetWordAddressData( sii_dict.get('StandardSendMailboxOffset'), 10)),
  1136                 ("Send Offset", self.GetWordAddressData(sii_dict.get('StandardSendMailboxOffset'), 10)),
  1137                 ("Send Size", self.GetWordAddressData( sii_dict.get('StandardSendMailboxSize'), 10))]:
  1137                 ("Send Size", self.GetWordAddressData(sii_dict.get('StandardSendMailboxSize'), 10))]:
  1138             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.StandardConfig[treelist], data, 1)
  1138             self.TreeListCtrl.Tree.SetItemText(self.TreeListCtrl.StandardConfig[treelist], data, 1)
  1139 
  1139 
  1140     def MakeStaticBoxSizer(self, boxlabel):
  1140     def MakeStaticBoxSizer(self, boxlabel):
  1141         """
  1141         """
  1142         Make StaticBoxSizer
  1142         Make StaticBoxSizer