tests/win32/test_svgui/methods.py
author greg
Mon, 18 May 2009 07:47:24 +0200
changeset 344 25b7b7f854bc
parent 266 530118da6c15
permissions -rw-r--r--
Wait the debug thread has terminated before freeing PLC to avoid random segmentation fault.

Store working directory to globals copy, in order to be used in runtime.py.
266
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
     1
self.logger.write_error("Welcome to the Beremiz Demo\n\n")            
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
     2
self.logger.write("This demo provides a PLC working with the CANopen plugin\n")
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
     3
self.logger.write("""Some external programs are also provided:\n
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
     4
- a CAN TCP server to simulate the CANopen network
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
     5
- a virtual slave node to simulate input block
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
     6
- a virtual slave node to simulate output block
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
     7
""")
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
     8
self.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"))
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
     9
#open_pdf(os.path.join(os.path.split(__file__)[0], "doc", "manual_beremiz.pdf"), pagenum=21)
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    10
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    11
if wx.Platform == '__WXMSW__':
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    12
    self.listLaunchProg = [
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    13
        {'name' : 'Can Tcp Server',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    14
         'command' : 'can_tcp_win32_server.exe',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    15
         'keyword' : 'Accepts',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    16
         'pid' : None,
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    17
         'no_gui' : True},
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    18
        {'name' : 'DS401 Slave Gui NodeId 32',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    19
         'command' : 'DS401_Slave_Gui.exe -sI -l can_tcp_win32.dll -b 127.0.0.1 -i 20 -B 125K',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    20
         'keyword' : '[OK]',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    21
         'pid' : None,
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    22
         'no_gui' : False},
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    23
        {'name' : 'DS401 Slave Gui NodeId 16',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    24
         'command' : 'DS401_Slave_Gui.exe -sO -l can_tcp_win32.dll -b 127.0.0.1 -i 10 -B 125K',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    25
         'keyword' : '[OK]',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    26
         'pid' : None,
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    27
         'no_gui' : False}
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    28
    ]
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    29
else:
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    30
    self.listLaunchProg = [
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    31
        {'name' : 'DS401 Slave Gui NodeId 32',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    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',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    33
         'keyword' : '[OK]',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    34
         'pid' : None,
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    35
         'no_gui' : False},
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    36
        {'name' : 'DS401 Slave Gui NodeId 16',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    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',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    38
         'keyword' : '[OK]',
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    39
         'pid' : None,
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    40
         'no_gui' : False}
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    41
    ]
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    42
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    43
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    44
def my_methods(self): 
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    45
    def _Run():
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    46
        # External programs list 
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    47
        # Launch them and get their pid
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    48
        for prog in self.listLaunchProg:
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    49
            self.logger.write("Starting %s\n" % prog['name'])
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    50
            prog['pid'] = ProcessLogger(self.logger, prog['command'], no_gui=prog['no_gui'])
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    51
            prog['pid'].spin(
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    52
            		 timeout=200,
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    53
                     keyword = prog['keyword'],
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    54
                     kill_it = False)
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    55
        
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    56
        PluginsRoot._Run(self)
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    57
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    58
    def _Debug():
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    59
        # External programs list 
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    60
        # Launch them and get their pid
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    61
        for prog in self.listLaunchProg:
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    62
            self.logger.write("Starting %s\n" % prog['name'])
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    63
            prog['pid'] = ProcessLogger(self.logger, prog['command'], no_gui=prog['no_gui'])
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    64
            prog['pid'].spin(
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    65
                     timeout=200,
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    66
                     keyword = prog['keyword'],
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    67
                     kill_it = False)
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    68
        
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    69
        PluginsRoot._Debug(self)
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    70
        
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    71
    def _Stop():
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    72
        PluginsRoot._Stop(self)
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    73
        for prog in self.listLaunchProg:
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    74
            self.logger.write("Stopping %s\n" % prog['name'])
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    75
            prog['pid'].kill()
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    76
    
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    77
    return _Run, _Stop, _Debug
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    78
   
530118da6c15 update test_master and test_slave examples for win32
greg
parents:
diff changeset
    79
self._Run, self._Stop, self._Debug = my_methods(self)