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) |