tests/linux/test_master_DS401GUI/methods.py
changeset 411 8261c8f1e365
parent 410 092e33606e51
child 412 2b9bc5ee30c0
equal deleted inserted replaced
410:092e33606e51 411:8261c8f1e365
     1 logger.write_error("Welcome to the Beremiz Demo\n\n")            
       
     2 logger.write("This demo provides a PLC working with the CANopen plugin\n")
       
     3 logger.write("""Some external programs are also provided:\n
       
     4 - a CAN TCP server to simulate the CANopen network
       
     5 - a virtual slave node to simulate input block
       
     6 - a virtual slave node to simulate output block
       
     7 """)
       
     8 logger.write("\nInfo: For this demo, %s plugin has some special methods to run external programs.\nThese methods are defined in methods.py\n" % (PlugName or "Root"))
       
     9 #open_pdf(os.path.join(os.path.split(__file__)[0], "doc", "manual_beremiz.pdf"), pagenum=21)
       
    10 
       
    11 if wx.Platform == '__WXMSW__':
       
    12     self.listLaunchProg = [
       
    13         {'name' : 'Can Tcp Server',
       
    14          'command' : 'can_tcp_win32_server.exe',
       
    15          'keyword' : 'Accepts',
       
    16          'pid' : None,
       
    17          'no_gui' : True},
       
    18         {'name' : 'DS401 Slave Gui NodeId 32',
       
    19          'command' : 'DS401_Slave_Gui.exe -sI -l can_tcp_win32.dll -b 127.0.0.1 -i 20 -B 125K',
       
    20          'keyword' : '[OK]',
       
    21          'pid' : None,
       
    22          'no_gui' : False},
       
    23         {'name' : 'DS401 Slave Gui NodeId 16',
       
    24          'command' : 'DS401_Slave_Gui.exe -sO -l can_tcp_win32.dll -b 127.0.0.1 -i 10 -B 125K',
       
    25          'keyword' : '[OK]',
       
    26          'pid' : None,
       
    27          'no_gui' : False}
       
    28     ]
       
    29 else:
       
    30     self.listLaunchProg = [
       
    31         {'name' : 'DS401 Slave Gui NodeId 32',
       
    32          'command' : '../CanFestival-3/examples/DS401_Slave_Gui/DS401_Slave_Gui -sI -l ../CanFestival-3/drivers/can_socket/libcanfestival_can_socket.so -b vcan0 -i 20 -B 125K',
       
    33          'keyword' : '[OK]',
       
    34          'pid' : None,
       
    35          'no_gui' : False},
       
    36         {'name' : 'DS401 Slave Gui NodeId 16',
       
    37          'command' : '../CanFestival-3/examples/DS401_Slave_Gui/DS401_Slave_Gui -sO -l ../CanFestival-3/drivers/can_socket/libcanfestival_can_socket.so -b vcan0 -i 10 -B 125K',
       
    38          'keyword' : '[OK]',
       
    39          'pid' : None,
       
    40          'no_gui' : False}
       
    41     ]
       
    42 
       
    43 
       
    44 def my_methods(self): 
       
    45     def _Run(logger):        
       
    46         # External programs list 
       
    47         # Launch them and get their pid
       
    48         for prog in self.listLaunchProg:
       
    49             logger.write("Starting %s\n" % prog['name'])
       
    50             prog['pid'] = ProcessLogger(logger, prog['command'], no_gui=prog['no_gui'])
       
    51             prog['pid'].spin(
       
    52             		 timeout=200,
       
    53                      keyword = prog['keyword'],
       
    54                      kill_it = False)
       
    55         
       
    56         PluginsRoot._Run(self,logger)
       
    57 
       
    58     def _Stop(logger):
       
    59         PluginsRoot._Stop(self,logger)
       
    60         for prog in self.listLaunchProg:
       
    61             logger.write("Stopping %s\n" % prog['name'])
       
    62             prog['pid'].kill()
       
    63     
       
    64     return _Run, _Stop
       
    65    
       
    66 self._Run, self._Stop = my_methods(self)