source: remote_control/puzzlebox_brainstorms_client_interface_local.py @ 111

Last change on this file since 111 was 111, checked in by sc, 11 years ago
  • PySide? import attempted before PyQt4 where available
  • problem specifying port when calling socket.listen on QTcpServer
  • Property svn:executable set to *
File size: 5.7 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3#
4# Puzzlebox - Brainstorms - Client Interface - Qt - Local
5#
6# Copyright Puzzlebox Productions, LLC (2010)
7#
8# This code is released under the GNU Pulic License (GPL) version 2
9# For more information please refer to http://www.gnu.org/copyleft/gpl.html
10#
11# Last Update: 2010.07.10
12#
13#####################################################################
14
15import os, sys
16import signal
17
18try:
19        import PySide as PyQt4
20        from PySide import QtCore, QtGui, QtNetwork
21except:
22        print "Using PyQt4 module"
23        from PyQt4 import QtCore, QtGui, QtNetwork
24else:
25        print "Using PySide module"
26
27#from PyQt4 import QtCore, QtGui, QtNetwork
28#from PySide import QtCore, QtGui, QtNetwork
29
30import puzzlebox_brainstorms_configuration as configuration
31import puzzlebox_brainstorms_client_interface as client_interface
32import puzzlebox_brainstorms_network_client as brainstorms_client
33import puzzlebox_brainstorms_network_server as server
34import puzzlebox_brainstorms_remote_control as remote_control
35#import puzzlebox_logger
36
37#####################################################################
38# Globals
39#####################################################################
40
41DEBUG = 1
42
43SERVER_INTERFACE = configuration.BRAINSTORMS_SERVER_INTERFACE
44SERVER_HOST = configuration.BRAINSTORMS_SERVER_HOST
45SERVER_PORT = configuration.BRAINSTORMS_SERVER_PORT
46
47CLIENT_NO_REPLY_WAIT = configuration.CLIENT_NO_REPLY_WAIT * 1000
48
49DELIMITER = configuration.BRAINSTORMS_DELIMITER
50
51BLUETOOTH_DEVICE = configuration.NXT_BLUETOOTH_DEVICE
52
53VARIABLE_CONTROL_DURATION = configuration.BRAINSTORMS_VARIABLE_CONTROL_DURATION
54
55#####################################################################
56# Classes
57#####################################################################
58
59class puzzlebox_brainstorms_client_interface_local( \
60              server.puzzlebox_brainstorms_network_server, \
61              client_interface.puzzlebox_brainstorms_client_interface):
62       
63        def __init__(self, log, \
64                          server_interface=SERVER_INTERFACE, \
65                          server_port=SERVER_PORT, \
66                          DEBUG=DEBUG, \
67                          parent=None):
68               
69                self.log = log
70                self.DEBUG = DEBUG
71               
72                self.server_interface = server_interface
73                self.server_port = server_port
74               
75                QtGui.QWidget.__init__(self, parent)
76                self.setupUi(self)
77               
78                self.configureNetwork()
79               
80                self.configureSettings()
81                self.configureNetworkBrainstorms()
82                self.connectWidgets()
83               
84                self.drive_state = 'stop_motors'
85                self.current_speed = 0
86               
87                self.rc = remote_control.puzzlebox_brainstorms_remote_control( \
88                            device=BLUETOOTH_DEVICE, \
89                            DEBUG=DEBUG)
90
91
92#####################################################################
93#####################################################################
94
95class puzzlebox_brainstorms_network_server_threaded( \
96              QtCore.QThread, \
97              server.puzzlebox_brainstorms_network_server):
98       
99        def __init__(self, log, \
100                          server_interface=SERVER_INTERFACE, \
101                          server_port=SERVER_PORT, \
102                          embedded_mode=True, \
103                          DEBUG=DEBUG, \
104                          parent=None):
105               
106                #super(puzzlebox_brainstorms_network_server_threaded, self).__init__(parent)
107                QtCore.QThread.__init__(self,parent)
108               
109                self.log = log
110                self.DEBUG = DEBUG
111               
112                self.server_interface = server_interface
113                self.server_port = server_port
114               
115                self.embedded_mode=embedded_mode
116               
117                self.configureNetwork()
118               
119                self.rc = remote_control.puzzlebox_brainstorms_remote_control( \
120                            device=BLUETOOTH_DEVICE, \
121                            DEBUG=DEBUG)
122       
123       
124        ##################################################################
125       
126        def run(self):
127               
128                if self.DEBUG:
129                        print "<---- [%s]: Main thread running" % self.socket.name
130                        self.exec_()
131               
132                #while True:
133                        #print "server: alive"
134                        #QtCore.QThread.sleep(1)
135
136
137#####################################################################
138# Functions
139#####################################################################
140
141#####################################################################
142# Main
143#####################################################################
144
145if __name__ == '__main__':
146       
147        # Perform correct KeyboardInterrupt handling
148        signal.signal(signal.SIGINT, signal.SIG_DFL)
149       
150        #log = puzzlebox_logger.puzzlebox_logger(logfile='client_interface')
151        log = None
152       
153        # Collect default settings and command line parameters
154        server_interface = SERVER_INTERFACE
155        server_host = SERVER_HOST
156        server_port = SERVER_PORT
157       
158        for each in sys.argv:
159               
160                if each.startswith("--interface="):
161                        server_interface = each[ len("--interface="): ]
162                if each.startswith("--host="):
163                        server_host = each[ len("--host="): ]
164                if each.startswith("--port="):
165                        server_port = each[ len("--port="): ]
166       
167        app = QtGui.QApplication(sys.argv)
168       
169        server = server.puzzlebox_brainstorms_network_server(log, \
170                    server_interface, \
171                    server_port, \
172                    embedded_mode=True, \
173                    DEBUG=DEBUG)
174       
175        #server = puzzlebox_brainstorms_network_server_threaded(log, \
176                    #server_interface, \
177                    #server_port, \
178                    #embedded_mode=True, \
179                    #DEBUG=DEBUG)
180        #server.start()
181       
182        # For debugging purposes it may be useful to launch an integrated
183        # ThinkGear Connect server emulator
184        #
185        #sys.path.append(os.path.join(os.getcwd(), "../thinkgear_emulator"))
186        #import puzzlebox_thinkgear_server as thinkgear_server
187        #
188        #thinkgear_server = \
189        #   thinkgear_server.puzzlebox_brainstorms_network_server_thinkgear(log, DEBUG=DEBUG)
190       
191       
192        window = client_interface.puzzlebox_brainstorms_client_interface(log, \
193                                                                         server=server, \
194                                                                         DEBUG=DEBUG)
195        window.connectToBrainstormsServer()
196        window.show()
197       
198        sys.exit(app.exec_())
199
Note: See TracBrowser for help on using the repository browser.