Changeset 241


Ignore:
Timestamp:
12/04/10 15:27:00 (10 years ago)
Author:
sc
Message:

trunk/brainstorms/Puzzlebox/Brainstorms/Wheelchair_Control.py:

  • module potentially complete from GUI control perspective
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/brainstorms/Puzzlebox/Brainstorms/Wheelchair_Control.py

    r240 r241  
    1010 
    1111__changelog__ = """ 
    12 Last Update: 2010.11.30 
     12Last Update: 2010.12.04 
    1313 
    1414""" 
     
    3737DEFAULT_COMMAND = 'console' 
    3838DEFAULT_SERIAL_DEVICE = '/dev/ttyACM0' 
     39 
     40DEFAULT_WHEELCHAIR_SPEED = 1 
     41DEFAULT_WHEELCHAIR_COMMAND = 'stop' 
     42 
    3943ARDUINO_INITIALIZATION_TIME = 2 
    4044COMMAND_CHARACTER = 'x' 
     45GUI_SLEEP_TIMER = 1 * 100 # 100ms 
    4146 
    4247WHEELCHAIR_COMMANDS = { 
    43         'stop': '00110011', 
    44         'speed0': { 
    45                 'stop': '00110011',  
    46         }, 
    47         'speed1': { 
     48        1: { # speed 
    4849                'forward': '00110001', 
    4950                'reverse': '00111011', 
    5051                'left': '10110011', 
    51                 'right': '00010011' 
     52                'right': '00010011', 
     53                'stop': '00110011',  
    5254        }, 
    53         'speed2': { 
     55        2: { # speed 
    5456                'forward': '00110010', 
    5557                'reverse': '00110111', 
    5658                'left': '01110011', 
    57                 'right': '00100011' 
     59                'right': '00100011', 
     60                'stop': '00110011',  
    5861        }, 
    59         'speed3': { 
     62        3: { # speed 
    6063                'forward': '00110000', 
    6164                'reverse': '00111111', 
    6265                'left': '11110011', 
    63                 'right': '00000011' 
     66                'right': '00000011', 
     67                'stop': '00110011',  
    6468        }, 
    6569} 
     
    112116                self.command = command 
    113117                 
    114                 self.device = self.initializeSerial() 
     118                self.wheelchair_speed = DEFAULT_WHEELCHAIR_SPEED 
     119                self.wheelchair_command = DEFAULT_WHEELCHAIR_COMMAND 
     120                 
     121                self.device = None 
     122                self.initializeSerial() 
     123                 
     124                self.keep_running = True 
    115125         
    116126         
     
    173183                        init_rts_cts_flow_control = 0 
    174184                 
    175                 device = serial.Serial(port = self.device_address, \ 
     185                self.device = serial.Serial(port = self.device_address, \ 
    176186                                                                                baudrate = baudrate, \ 
    177187                                                                                bytesize = init_byte_size, \ 
     
    182192                                                                                timeout = timeout) 
    183193                 
    184                 device.write('%s%s' % (COMMAND_CHARACTER, WHEELCHAIR_COMMANDS['stop'])) 
     194                 
     195                self.send_command(self.wheelchair_speed, self.wheelchair_command) 
     196                 
     197                time.sleep(ARDUINO_INITIALIZATION_TIME) 
     198                 
     199                return(device) 
     200         
     201         
     202        ################################################################## 
     203         
     204        def send_command(self, speed, command): 
     205         
     206                self.device.write('%s%s' % (COMMAND_CHARACTER, \ 
     207                        WHEELCHAIR_COMMANDS[speed][command])) 
     208                 
    185209                if self.DEBUG: 
    186                         print "--> Wheelchair Command:", 
    187                         print 'stop' 
    188                  
    189                 time.sleep(ARDUINO_INITIALIZATION_TIME) 
    190                  
    191                 return(device) 
    192          
    193          
    194         ################################################################## 
    195          
    196         def processCommand(self): 
    197                  
    198                 if (self.command == 'console'): 
    199                         self.console_control() 
    200                  
    201                 #elif (self.command == 'neutral'): 
    202                         #self.mode = 'write' 
    203                         #self.neutral() 
     210                        print "--> Wheelchair Command: %s [Speed %i]" % \ 
     211                           (command, speed) 
     212                 
     213                self.wheelchair_speed = speed 
     214                self.wheelchair_command = command 
    204215         
    205216         
     
    254265        def console_control(self): 
    255266 
    256                 #device = self.initializeSerial() 
    257  
     267                if (sys.platform == 'win32'): 
     268                        if self.DEBUG: 
     269                                print "---> Wheelchair Control: Console mode unavailable under Windows" 
     270                         
     271                        self.exitThread() 
     272                 
     273                 
    258274                MYGETCH = Getch() 
    259  
     275                 
    260276                #initAlarm() 
    261  
     277                 
    262278                self.stopBot() 
    263  
    264                 speed = 1 
     279                 
     280                speed = DEFAULT_WHEELCHAIR_SPEED 
    265281                while True: 
    266282                        cmd = MYGETCH() 
     
    281297        ################################################################## 
    282298         
     299        #def gui_control(self): 
     300                 
     301                #while self.keep_running: 
     302                         
     303                        #QtCore.QThread.msleep(GUI_SLEEP_TIMER) 
     304         
     305         
     306        ################################################################## 
     307         
     308        def processCommand(self): 
     309                 
     310                if (self.command == 'console'): 
     311                        self.console_control() 
     312                 
     313                #elif (self.command == 'gui'): 
     314                        #self.gui_control() 
     315         
     316         
     317        ################################################################## 
     318         
    283319        def run(self): 
    284320                 
Note: See TracChangeset for help on using the changeset viewer.