etherlab/EtherCATManagementEditor.py
changeset 2379 015b724c30a5
parent 2377 88a9d64560d3
child 2380 b35bce45bc5a
equal deleted inserted replaced
2378:7aa47c09f8f5 2379:015b724c30a5
    66         self.NodeEditor = node_editor
    66         self.NodeEditor = node_editor
    67 
    67 
    68         self.EtherCATManagementClassObject = {}
    68         self.EtherCATManagementClassObject = {}
    69 
    69 
    70         # fill EtherCAT Management Treebook
    70         # fill EtherCAT Management Treebook
    71         for pname, pclass, subs in [
    71         panels = [
    72             ("Slave State",        SlaveStatePanelClass, []),
    72             ("Slave State",        SlaveStatePanelClass, []),
    73             ("SDO Management",     SDOPanelClass, []),
    73             ("SDO Management",     SDOPanelClass, []),
    74             ("PDO Monitoring",     PDOPanelClass, []),
    74             ("PDO Monitoring",     PDOPanelClass, []),
    75             ("ESC Management",     EEPROMAccessPanel, [
    75             ("ESC Management",     EEPROMAccessPanel, [
    76                     ("Smart View", SlaveSiiSmartView),
    76                 ("Smart View", SlaveSiiSmartView),
    77                     ("Hex View", HexView)]),
    77                 ("Hex View", HexView)]),
    78             ("Register Access",     RegisterAccessPanel, [])]:
    78             ("Register Access",     RegisterAccessPanel, [])
    79                 self.AddPage(pclass(self, self.Controler), pname)
    79         ]
    80                 for spname, spclass in subs:
    80         for pname, pclass, subs in panels:
    81                     self.AddSubPage(spclass(self, self.Controler), spname)
    81             self.AddPage(pclass(self, self.Controler), pname)
       
    82             for spname, spclass in subs:
       
    83                 self.AddSubPage(spclass(self, self.Controler), spname)
    82 
    84 
    83         self.Bind(wx.EVT_TREEBOOK_PAGE_CHANGED, self.OnPageChanged)
    85         self.Bind(wx.EVT_TREEBOOK_PAGE_CHANGED, self.OnPageChanged)
    84         self.Bind(wx.EVT_TREEBOOK_PAGE_CHANGING, self.OnPageChanging)
    86         self.Bind(wx.EVT_TREEBOOK_PAGE_CHANGING, self.OnPageChanging)
    85 
    87 
    86     def OnPageChanged(self, event):
    88     def OnPageChanged(self, event):
  2124         self.TextCtrl = {}
  2126         self.TextCtrl = {}
  2125 
  2127 
  2126         # ----------------------- Main Sizer and Update Button --------------------------------------------
  2128         # ----------------------- Main Sizer and Update Button --------------------------------------------
  2127         self.MasterStateSizer = {"main": wx.BoxSizer(wx.VERTICAL)}
  2129         self.MasterStateSizer = {"main": wx.BoxSizer(wx.VERTICAL)}
  2128         for key, attr in [
  2130         for key, attr in [
  2129             ("innerMain",           [1, 10, 2, 10]),
  2131                 ("innerMain",           [1, 10, 2, 10]),
  2130             ("innerTopHalf",        [2, 10, 1, 10]),
  2132                 ("innerTopHalf",        [2, 10, 1, 10]),
  2131             ("innerBottomHalf",     [2, 10, 1, 10]),
  2133                 ("innerBottomHalf",     [2, 10, 1, 10]),
  2132             ("innerMasterState",    [2, 10, 3, 10]),
  2134                 ("innerMasterState",    [2, 10, 3, 10]),
  2133             ("innerDeviceInfo",     [4, 10, 3, 10]),
  2135                 ("innerDeviceInfo",     [4, 10, 3, 10]),
  2134             ("innerFrameInfo",      [4, 10, 5, 10])]:
  2136                 ("innerFrameInfo",      [4, 10, 5, 10])]:
  2135             self.MasterStateSizer[key] = wx.FlexGridSizer(cols=attr[0], hgap=attr[1], rows=attr[2], vgap=attr[3])
  2137             self.MasterStateSizer[key] = wx.FlexGridSizer(cols=attr[0], hgap=attr[1], rows=attr[2], vgap=attr[3])
  2136 
  2138 
  2137         self.UpdateButton = wx.Button(self, label=_('Update'))
  2139         self.UpdateButton = wx.Button(self, label=_('Update'))
  2138         self.UpdateButton.Bind(wx.EVT_BUTTON, self.OnButtonClick)
  2140         self.UpdateButton.Bind(wx.EVT_BUTTON, self.OnButtonClick)
  2139 
  2141 
  2140         for key, label in [
  2142         for key, label in [
  2141             ('masterState', 'EtherCAT Master State'),
  2143                 ('masterState', 'EtherCAT Master State'),
  2142             ('deviceInfo', 'Ethernet Network Card Information'),
  2144                 ('deviceInfo', 'Ethernet Network Card Information'),
  2143             ('frameInfo', 'Network Frame Information')]:
  2145                 ('frameInfo', 'Network Frame Information')]:
  2144             self.StaticBox[key] = wx.StaticBox(self, label=_(label))
  2146             self.StaticBox[key] = wx.StaticBox(self, label=_(label))
  2145             self.MasterStateSizer[key] = wx.StaticBoxSizer(self.StaticBox[key])
  2147             self.MasterStateSizer[key] = wx.StaticBoxSizer(self.StaticBox[key])
  2146 
  2148 
  2147         # ----------------------- Master State -----------------------------------------------------------
  2149         # ----------------------- Master State -----------------------------------------------------------
  2148         for key, label in [
  2150         for key, label in [
  2149             ('Phase', 'Phase:'),
  2151                 ('Phase', 'Phase:'),
  2150             ('Active', 'Active:'),
  2152                 ('Active', 'Active:'),
  2151             ('Slaves', 'Slave Count:')]:
  2153                 ('Slaves', 'Slave Count:')]:
  2152             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2154             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2153             self.TextCtrl[key] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2155             self.TextCtrl[key] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2154             self.MasterStateSizer['innerMasterState'].AddMany([self.StaticText[key], self.TextCtrl[key]])
  2156             self.MasterStateSizer['innerMasterState'].AddMany([self.StaticText[key], self.TextCtrl[key]])
  2155 
  2157 
  2156         self.MasterStateSizer['masterState'].AddSizer(self.MasterStateSizer['innerMasterState'])
  2158         self.MasterStateSizer['masterState'].AddSizer(self.MasterStateSizer['innerMasterState'])
  2157 
  2159 
  2158         # ----------------------- Ethernet Network Card Information ---------------------------------------
  2160         # ----------------------- Ethernet Network Card Information ---------------------------------------
  2159         for key, label in [
  2161         for key, label in [
  2160             ('Main', 'MAC Address:'),
  2162                 ('Main', 'MAC Address:'),
  2161             ('Link', 'Link State:'),
  2163                 ('Link', 'Link State:'),
  2162             ('Tx frames', 'Tx Frames:'),
  2164                 ('Tx frames', 'Tx Frames:'),
  2163             ('Rx frames', 'Rx Frames:'),
  2165                 ('Rx frames', 'Rx Frames:'),
  2164             ('Lost frames', 'Lost Frames:')]:
  2166                 ('Lost frames', 'Lost Frames:')]:
  2165             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2167             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2166             self.TextCtrl[key] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2168             self.TextCtrl[key] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2167             self.MasterStateSizer['innerDeviceInfo'].AddMany([self.StaticText[key], self.TextCtrl[key]])
  2169             self.MasterStateSizer['innerDeviceInfo'].AddMany([self.StaticText[key], self.TextCtrl[key]])
  2168 
  2170 
  2169         self.MasterStateSizer['deviceInfo'].AddSizer(self.MasterStateSizer['innerDeviceInfo'])
  2171         self.MasterStateSizer['deviceInfo'].AddSizer(self.MasterStateSizer['innerDeviceInfo'])
  2170 
  2172 
  2171         # ----------------------- Network Frame Information -----------------------------------------------
  2173         # ----------------------- Network Frame Information -----------------------------------------------
  2172         for key, label in [
  2174         for key, label in [
  2173             ('Tx frame rate [1/s]', 'Tx Frame Rate [1/s]:'),
  2175                 ('Tx frame rate [1/s]', 'Tx Frame Rate [1/s]:'),
  2174             ('Rx frame rate [1/s]', 'Tx Rate [kByte/s]:'),
  2176                 ('Rx frame rate [1/s]', 'Tx Rate [kByte/s]:'),
  2175             ('Loss rate [1/s]', 'Loss Rate [1/s]:'),
  2177                 ('Loss rate [1/s]', 'Loss Rate [1/s]:'),
  2176             ('Frame loss [%]', 'Frame Loss [%]:')]:
  2178                 ('Frame loss [%]', 'Frame Loss [%]:')]:
  2177             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2179             self.StaticText[key] = wx.StaticText(self, label=_(label))
  2178             self.MasterStateSizer['innerFrameInfo'].Add(self.StaticText[key])
  2180             self.MasterStateSizer['innerFrameInfo'].Add(self.StaticText[key])
  2179             self.TextCtrl[key] = {}
  2181             self.TextCtrl[key] = {}
  2180             for index in ['0', '1', '2']:
  2182             for index in ['0', '1', '2']:
  2181                 self.TextCtrl[key][index] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)
  2183                 self.TextCtrl[key][index] = wx.TextCtrl(self, size=wx.Size(130, 24), style=wx.TE_READONLY)