Changeset 99


Ignore:
Timestamp:
07/10/10 03:45:33 (11 years ago)
Author:
sc
Message:

remote_control/puzzlebox_brainstorms_network_client.py:

  • timestamp update

remote_control/puzzlebox_brainstorms_client_interface.py:

  • pushButtons disabled when not connected to LEGO Mindstorms NXT

remote_control/puzzlebox_brainstorms_client_interface_local.py:

  • Brainstorms server embedded_mode support added
  • import requirement cleanup
  • threaded server code cleanup

remote_control/puzzlebox_brainstorms_network_server.py:

  • Brainstorms server embedded_mode support added
  • packet data processing split out to separate module
Location:
remote_control
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • remote_control/puzzlebox_brainstorms_client_interface.py

    r97 r99  
    8282        def configureSettings(self): 
    8383                 
     84                # Brainstorms Interface 
     85                self.pushButtonTurnLeft.setEnabled(False) 
     86                self.pushButtonForward.setEnabled(False) 
     87                self.pushButtonTurnRight.setEnabled(False) 
     88                self.pushButtonTurnLeftReverse.setEnabled(False) 
     89                self.pushButtonReverse.setEnabled(False) 
     90                self.pushButtonTurnRightReverse.setEnabled(False) 
     91                 
    8492                # LEGO Mindstorms 
    8593                 
     
    164172                 
    165173                self.lineEditNXTPort.setEnabled(False) 
     174                 
     175                self.pushButtonTurnLeft.setEnabled(True) 
     176                self.pushButtonForward.setEnabled(True) 
     177                self.pushButtonTurnRight.setEnabled(True) 
     178                self.pushButtonTurnLeftReverse.setEnabled(True) 
     179                self.pushButtonReverse.setEnabled(True) 
     180                self.pushButtonTurnRightReverse.setEnabled(True) 
    166181         
    167182         
     
    188203                # LEGO Mindstorms NXT COM port selection not yet available 
    189204                #self.lineEditNXTPort.setEnabled(True) 
     205                 
     206                self.pushButtonTurnLeft.setEnabled(False) 
     207                self.pushButtonForward.setEnabled(False) 
     208                self.pushButtonTurnRight.setEnabled(False) 
     209                self.pushButtonTurnLeftReverse.setEnabled(False) 
     210                self.pushButtonReverse.setEnabled(False) 
     211                self.pushButtonTurnRightReverse.setEnabled(False) 
    190212                 
    191213                self.brainstormsClient = None 
     
    301323                                  QtCore.SIGNAL("clicked()"), \ 
    302324                                  self.connectToThinkGearHost) 
    303          
    304          
     325                 
     326                 
    305327                #shortcut = QtGui.QShortcut(self) 
    306328                #shortcut.setKey(tr("Down")) 
    307329                #self.connect(shortcut, QtCore.SIGNAL("pressed()"), self.driveReverse) 
    308330                 
     331                 
    309332                action = QtGui.QAction(self) 
    310333                action.setShortcut(QtGui.QKeySequence("W")) 
     
    363386                 
    364387                 
    365                 self.pushButtonForward.setAutoRepeat(False) 
    366                 self.pushButtonForward.setAutoRepeatDelay(0) 
    367                 self.pushButtonForward.setAutoRepeatInterval(0) 
     388                #self.pushButtonForward.setAutoRepeat(False) 
     389                #self.pushButtonForward.setAutoRepeatDelay(0) 
     390                #self.pushButtonForward.setAutoRepeatInterval(0) 
    368391 
    369392         
  • remote_control/puzzlebox_brainstorms_client_interface_local.py

    r98 r99  
    2727#from PySide import QtCore, QtGui, QtNetwork 
    2828 
    29 sys.path.append(os.path.join(os.getcwd(), "interface")) 
    30 from qt4_form import Ui_Form 
    31  
    32 import simplejson as json 
     29#sys.path.append(os.path.join(os.getcwd(), "interface")) 
     30#from qt4_form import Ui_Form 
     31 
     32#import simplejson as json 
    3333 
    3434import puzzlebox_brainstorms_configuration as configuration 
    3535import puzzlebox_brainstorms_client_interface as client_interface 
    3636import puzzlebox_brainstorms_network_client as brainstorms_client 
    37 import puzzlebox_brainstorms_network_client_thinkgear as thinkgear_client 
    3837import puzzlebox_brainstorms_network_server as server 
    3938import puzzlebox_brainstorms_remote_control as remote_control 
    4039#import puzzlebox_logger 
    41  
    42 sys.path.append(os.path.join(os.getcwd(), "../thinkgear_emulator")) 
    43 import puzzlebox_thinkgear_server as thinkgear_server 
    4440 
    4541##################################################################### 
     
    108104                          server_interface=SERVER_INTERFACE, \ 
    109105                          server_port=SERVER_PORT, \ 
     106                          embedded_mode=True, \ 
    110107                          DEBUG=DEBUG, \ 
    111108                          parent=None): 
     
    119116                self.server_interface = server_interface 
    120117                self.server_port = server_port 
     118                 
     119                self.embedded_mode=embedded_mode 
    121120                 
    122121                self.configureNetwork() 
     
    127126         
    128127         
     128        ################################################################## 
     129         
    129130        def run(self): 
    130                 print "server: run" 
    131                 self.exec_() 
    132                 while True: 
    133                         print "server: alive" 
    134                         QtCore.QThread.sleep(1) 
    135  
     131                 
     132                if self.DEBUG: 
     133                        print "<---- [%s]: Main thread running" % self.socket.name 
     134                        self.exec_() 
     135                 
     136                #while True: 
     137                        #print "server: alive" 
     138                        #QtCore.QThread.sleep(1) 
    136139 
    137140 
     
    168171        app = QtGui.QApplication(sys.argv) 
    169172         
    170         server = puzzlebox_brainstorms_network_server_threaded(log, \ 
     173        server = server.puzzlebox_brainstorms_network_server(log, \ 
    171174                    server_interface, \ 
    172175                    server_port, \ 
     176                    embedded_mode=True, \ 
    173177                    DEBUG=DEBUG) 
    174         server.start() 
    175          
    176         #thinkgear_server = thinkgear_server.puzzlebox_brainstorms_network_server_thinkgear(log, DEBUG=DEBUG) 
     178         
     179        #server = puzzlebox_brainstorms_network_server_threaded(log, \ 
     180                    #server_interface, \ 
     181                    #server_port, \ 
     182                    #embedded_mode=True, \ 
     183                    #DEBUG=DEBUG) 
     184        #server.start() 
     185         
     186        # For debugging purposes it may be useful to launch an integrated 
     187        # ThinkGear Connect server emulator 
     188        # 
     189        #sys.path.append(os.path.join(os.getcwd(), "../thinkgear_emulator")) 
     190        #import puzzlebox_thinkgear_server as thinkgear_server 
     191        # 
     192        #thinkgear_server = \ 
     193        #   thinkgear_server.puzzlebox_brainstorms_network_server_thinkgear(log, DEBUG=DEBUG) 
     194         
    177195         
    178196        window = client_interface.puzzlebox_brainstorms_client_interface(log, DEBUG) 
     
    180198        window.show() 
    181199         
    182         #window = puzzlebox_brainstorms_client_interface_local(log, \ 
    183                                                               #server_interface, \ 
    184                                                               #server_port, \ 
    185                                                               #DEBUG) 
    186         #window.show() 
    187          
    188200        sys.exit(app.exec_()) 
    189201 
  • remote_control/puzzlebox_brainstorms_network_client.py

    r98 r99  
    99# For more information please refer to http://www.gnu.org/copyleft/gpl.html 
    1010# 
    11 # Last Update: 2010.07.06 
     11# Last Update: 2010.07.09 
    1212# 
    1313##################################################################### 
  • remote_control/puzzlebox_brainstorms_network_server.py

    r98 r99  
    99# For more information please refer to http://www.gnu.org/copyleft/gpl.html 
    1010# 
    11 # Last Update: 2010.07.06 
     11# Last Update: 2010.07.09 
    1212# 
    1313##################################################################### 
     
    5050                          server_interface=SERVER_INTERFACE, \ 
    5151                          server_port=SERVER_PORT, \ 
     52                          embedded_mode=False, \ 
    5253                          DEBUG=DEBUG, \ 
    5354                          parent=None): 
     
    5859                self.server_interface = server_interface 
    5960                self.server_port = server_port 
     61                 
     62                self.embedded_mode=embedded_mode 
    6063                 
    6164                self.configureNetwork() 
     
    98101        ################################################################## 
    99102         
    100         def processConnection(self): 
    101                  
    102                 print "%s: connected" % self.socket.name 
    103                  
    104                 clientConnection = self.socket.nextPendingConnection() 
    105                 clientConnection.disconnected.connect(clientConnection.deleteLater) 
    106                  
    107                 print "%s: waiting" % self.socket.name 
    108                  
    109                 if not clientConnection.waitForReadyRead(CLIENT_NO_REPLY_WAIT): 
    110                         if self.DEBUG: 
    111                                 print "WARNING [%s] Timeout waiting for client to transmit data" % \ 
    112                                    self.socket.name 
    113                                 #print "State:", 
    114                                 #print clientConnection.state() 
    115                         clientConnection.disconnectFromHost() 
    116                         return 
     103        def processData(self, clientConnection=None): 
     104                 
     105                if (clientConnection == None): 
     106                        clientConnection = self.clientConnection 
    117107                 
    118108                socket_buffer = clientConnection.readAll() 
     
    140130                                        if clientConnection.waitForConnected(CLIENT_NO_REPLY_WAIT): 
    141131                                                clientConnection.write(data) 
    142                  
    143                  
    144                 #clientConnection.disconnectFromHost() 
     132         
     133         
     134        ################################################################## 
     135         
     136        def processConnection(self): 
     137                 
     138                print "%s: connected" % self.socket.name 
     139                 
     140                clientConnection = self.socket.nextPendingConnection() 
     141                clientConnection.disconnected.connect(clientConnection.deleteLater) 
     142                 
     143                if (self.embedded_mode): 
     144                         
     145                        # Only one client connection to server will work in embedded mode 
     146                        self.clientConnection = clientConnection 
     147                        clientConnection.readyRead.connect(self.processData) 
     148                 
     149                 
     150                else: 
     151                 
     152                        if not clientConnection.waitForReadyRead(CLIENT_NO_REPLY_WAIT): 
     153                                if self.DEBUG: 
     154                                        print "WARNING [%s] Timeout waiting for client to transmit data" % \ 
     155                                                self.socket.name 
     156                                        #print "State:", 
     157                                        #print clientConnection.state() 
     158                                clientConnection.disconnectFromHost() 
     159                                return 
     160                         
     161                         
     162                        self.processData(clientConnection) 
     163                         
     164                        clientConnection.disconnectFromHost() 
    145165         
    146166         
     
    165185                         
    166186                        response = {} 
    167                         response['status'] = 'N/A' 
     187                        response['status'] = 'LEGO NXT N/A' 
    168188                 
    169189                 
     
    224244                                                      server_interface, \ 
    225245                                                      server_port, \ 
     246                                                      embedded_mode=False, \ 
    226247                                                      DEBUG=DEBUG) 
    227248         
Note: See TracChangeset for help on using the changeset viewer.