plugger.py
changeset 689 dac752b613bb
parent 686 e4e1da75d411
child 692 8b1ed486f374
equal deleted inserted replaced
688:6324b40d82a5 689:dac752b613bb
  1808             #print debug_tick, debug_vars
  1808             #print debug_tick, debug_vars
  1809             if plc_status == "Started":
  1809             if plc_status == "Started":
  1810                 self.IECdebug_lock.acquire()
  1810                 self.IECdebug_lock.acquire()
  1811                 if len(debug_vars) == len(self.TracedIECPath):
  1811                 if len(debug_vars) == len(self.TracedIECPath):
  1812                     if debug_getvar_retry > DEBUG_RETRIES_WARN:
  1812                     if debug_getvar_retry > DEBUG_RETRIES_WARN:
  1813                         wx.CallAfter(self.logger.write, 
  1813                         self.logger.write(_("... debugger recovered\n"))
  1814                                  _("... debugger recovered\n"))
       
  1815                     debug_getvar_retry = 0
  1814                     debug_getvar_retry = 0
  1816                     for IECPath,value in zip(self.TracedIECPath, debug_vars):
  1815                     for IECPath,value in zip(self.TracedIECPath, debug_vars):
  1817                         if value is not None:
  1816                         if value is not None:
  1818                             self.CallWeakcallables(IECPath, "NewValue", debug_tick, value)
  1817                             self.CallWeakcallables(IECPath, "NewValue", debug_tick, value)
  1819                     self.CallWeakcallables("__tick__", "NewDataAvailable")
  1818                     self.CallWeakcallables("__tick__", "NewDataAvailable")
  1820                 self.IECdebug_lock.release()
  1819                 self.IECdebug_lock.release()
  1821                 if debug_getvar_retry == DEBUG_RETRIES_WARN:
  1820                 if debug_getvar_retry == DEBUG_RETRIES_WARN:
  1822                     wx.CallAfter(self.logger.write, 
  1821                     self.logger.write(_("Waiting debugger to recover...\n"))
  1823                              _("Waiting debugger to recover...\n"))
       
  1824                 if debug_getvar_retry == DEBUG_RETRIES_REREGISTER:
  1822                 if debug_getvar_retry == DEBUG_RETRIES_REREGISTER:
  1825                     # re-register debug registry to PLC
  1823                     # re-register debug registry to PLC
  1826                     wx.CallAfter(self.RegisterDebugVarToConnector)
  1824                     wx.CallAfter(self.RegisterDebugVarToConnector)
  1827                 if debug_getvar_retry != 0:
  1825                 if debug_getvar_retry != 0:
  1828                     # Be patient, tollerate PLC to come up before debugging
  1826                     # Be patient, tollerate PLC to come up before debugging
  1829                     time.sleep(0.1)
  1827                     time.sleep(0.1)
  1830             else:
  1828             else:
  1831                 self.debug_break = True
  1829                 self.debug_break = True
  1832         wx.CallAfter(self.logger.write, _("Debugger disabled\n"))
  1830         self.logger.write(_("Debugger disabled\n"))
       
  1831         self.DebugThread = None
  1833 
  1832 
  1834     def KillDebugThread(self):
  1833     def KillDebugThread(self):
  1835         self.debug_break = True
  1834         self.debug_break = True
  1836         if self.DebugThread is not None:
  1835         if self.DebugThread is not None:
  1837             self.logger.writeyield(_("Stopping debugger...\n"))
  1836             self.logger.writeyield(_("Stopping debugger...\n"))
  1859             self.logger.write(_("Starting PLC\n"))
  1858             self.logger.write(_("Starting PLC\n"))
  1860             self._connect_debug()
  1859             self._connect_debug()
  1861         else:
  1860         else:
  1862             self.logger.write_error(_("Couldn't start PLC !\n"))
  1861             self.logger.write_error(_("Couldn't start PLC !\n"))
  1863         wx.CallAfter(self.UpdateMethodsFromPLCStatus)
  1862         wx.CallAfter(self.UpdateMethodsFromPLCStatus)
  1864 
       
  1865 
       
  1866 #    def _Do_Test_Debug(self):
       
  1867 #        # debug code
       
  1868 #        self.temporary_non_weak_callable_refs = []
       
  1869 #        for IEC_Path, idx in self._IECPathToIdx.iteritems():
       
  1870 #            class tmpcls:
       
  1871 #                def __init__(_self):
       
  1872 #                    _self.buf = None
       
  1873 #                def setbuf(_self,buf):
       
  1874 #                    _self.buf = buf
       
  1875 #                def SetValue(_self, value, idx, name):
       
  1876 #                    self.logger.write("debug call: %s %d %s\n"%(repr(value), idx, name))
       
  1877 #                    #self.logger.write("debug call: %s %d %s %s\n"%(repr(value), idx, name, repr(self.buf)))
       
  1878 #            a = tmpcls()
       
  1879 #            res = self.SubscribeDebugIECVariable(IEC_Path, a, idx, IEC_Path)
       
  1880 #            a.setbuf(res)
       
  1881 #            self.temporary_non_weak_callable_refs.append(a)
       
  1882        
  1863        
  1883     def _Stop(self):
  1864     def _Stop(self):
  1884         """
  1865         """
  1885         Stop PLC
  1866         Stop PLC
  1886         """
  1867         """
  1887         if self._connector is not None and not self._connector.StopPLC():
  1868         if self._connector is not None and not self._connector.StopPLC():
  1888             self.logger.write_error(_("Couldn't stop PLC !\n"))
  1869             self.logger.write_error(_("Couldn't stop PLC !\n"))
  1889 
  1870 
  1890         self.KillDebugThread()
  1871         # debugthread should die on his own
       
  1872         #self.KillDebugThread()
  1891         
  1873         
  1892         wx.CallAfter(self.UpdateMethodsFromPLCStatus)
  1874         wx.CallAfter(self.UpdateMethodsFromPLCStatus)
  1893 
  1875 
  1894     def _Connect(self):
  1876     def _Connect(self):
  1895         # don't accept re-connetion is already connected
  1877         # don't accept re-connetion is already connected