Changeset 1b1715a in robotics


Ignore:
Timestamp:
08/11/13 10:36:11 (8 years ago)
Author:
Steve Castellotti <sc@…>
Branches:
master
Children:
c018147
Parents:
d4492f6
Message:
  • missing Arduino device handled gracefully (for debugging)
Location:
wheelchair/python
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • wheelchair/python/DoraRecieve.py

    radf4715 r1b1715a  
    11#!/usr/bin/env python 
     2# -*- coding: utf-8 -*- 
     3# 
     4# Puzzlebox - Robotics - Wheelchair - Receiver 
     5# 
     6# Copyright Puzzlebox Productions, LLC (2013) 
     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 
     11import sys 
     12import time 
     13import signal 
     14import serial 
     15import select 
    216 
    317from PySide import QtCore, QtGui, QtNetwork 
     18 
     19import Wheelchair_Control as wheelchair_control 
     20 
     21##################################################################### 
     22# Globals 
     23##################################################################### 
     24 
     25DEBUG=1 
    426 
    527SOCKET = 20320 
    628currentTarget= 'i' 
    729previousTarget= 'i' 
     30 
     31 
     32##################################################################### 
     33# Classes 
     34##################################################################### 
     35 
    836class Receiver(QtGui.QDialog): 
     37         
    938        def __init__(self, parent=None): 
     39                 
    1040                super(Receiver, self).__init__(parent) 
    1141 
     
    2959                self.setLayout(mainLayout) 
    3060 
     61                self.setWindowTitle("Broadcast Receiver") 
     62                 
     63                 
     64                self.wheelchair = wheelchair_control.puzzlebox_brainstorms_wheelchair_control( \ 
     65                        device_address=wheelchair_control.DEFAULT_SERIAL_DEVICE, \ 
     66                        command=wheelchair_control.DEFAULT_COMMAND, \ 
     67                        DEBUG=DEBUG) 
     68         
     69         
     70                self.wheelchair.start() 
     71                 
     72                if DEBUG: 
     73                        print "Wheelchair Started" 
    3174 
    32                 self.setWindowTitle("Broadcast Receiver") 
     75 
     76        ################################################################## 
    3377 
    3478        def processPendingDatagrams(self): 
     79                 
    3580                while self.udpSocket.hasPendingDatagrams(): 
    36                                 datagram, host, port = self.udpSocket.readDatagram(self.udpSocket.pendingDatagramSize()) 
    37  
    38                                 try: 
    39                                         # Python v3. 
    40                                         datagram = str(datagram, encoding='ascii') 
    41                                         try: 
    42                                                 wheelchair.sendCommand('1','i') 
    43                                         except TypeError: 
    44                                                 Print "Wheelchair does not blah."  
    45                                          
    46                                         #if datagram is '0' 
    47 ##                                              currentTarget = 'i' 
    48 ##                                      elif datagram is '1     ' 
    49 ##                                              currentTarget ='m' 
    50 ##                                      elif datagram is '-1' 
    51 ##                                              currentTarget = PreviousTarget 
    52 ##                                      previousTarget=currentTarget 
    53                                         #wheelchair.sendCommand('1', currentTarget) 
    5481 
    5582 
    56                                 except TypeError: 
    57                                         # Python v2. 
    58                                         pass 
     83                        datagram, host, port = self.udpSocket.readDatagram(self.udpSocket.pendingDatagramSize()) 
    5984 
    60                                 self.statusLabel.setText("Received datagram: \"%s\"" % datagram) 
    6185 
     86                        try: 
     87                                # Python v3. 
     88                                datagram = str(datagram, encoding='ascii') 
     89                        except: 
     90                                # Python v2. 
     91                                pass 
     92 
     93 
     94                        try: 
     95                                self.wheelchair.sendCommand('1','i') 
     96                        #except TypeError: 
     97                                #print "Wheelchair does not blah."  
     98                        except Exception, e: 
     99                                if DEBUG: 
     100                                        print "ERROR: Exception:", 
     101                                        print e 
     102                                 
     103 
     104 
     105                        self.statusLabel.setText("Received datagram: \"%s\"" % datagram) 
     106 
     107 
     108##################################################################### 
     109# Globals 
     110##################################################################### 
    62111 
    63112if __name__ == '__main__': 
    64113 
    65         import sys 
    66         import time 
    67         import signal 
    68         import serial 
    69         import select 
    70  
    71  
    72  
    73114        app = QtGui.QApplication(sys.argv) 
    74115        receiver = Receiver() 
    75 #       receiver.show() 
     116        #receiver.show() 
    76117        sys.exit(receiver.exec_()) 
    77118 
    78         #This code is not really needed. Just gives us keyboard control also 
    79         # Perform correct KeyboardInterrupt handling 
     119        # Perform correct KeyboardInterrupt handling 
     120        # (allows you to hit control-c to quit) 
    80121        signal.signal(signal.SIGINT, signal.SIG_DFL) 
    81122 
     
    92133 
    93134 
    94         app1 = QtCore.QCoreApplication(sys.argv) 
     135        #app1 = QtCore.QCoreApplication(sys.argv) 
    95136 
    96         wheelchair = puzzlebox_brainstorms_wheelchair_control( \ 
    97                         device_address=device, \ 
    98                         command=command, \ 
    99                         DEBUG=DEBUG) 
     137        #wheelchair = puzzlebox_brainstorms_wheelchair_control( \ 
     138                        #device_address=device, \ 
     139                        #command=command, \ 
     140                        #DEBUG=DEBUG) 
    100141 
    101142        receiver.show() 
    102         print "Receiver Showing" 
    103         wheelchair.start() 
    104         print "Wheelchair Started" 
    105  
    106  
     143         
     144        if DEBUG: 
     145                print "Receiver Showing" 
     146        #wheelchair.start() 
     147        #print "Wheelchair Started" 
    107148 
    108149        sys.exit(app.exec_()) 
    109         sys.exit(app1.exec_()) 
     150        #sys.exit(app1.exec_()) 
  • wheelchair/python/Wheelchair_Control.py

    radf4715 r1b1715a  
    2020import select 
    2121 
    22 import Configuration as configuration 
    23  
    24 if configuration.ENABLE_PYSIDE: 
     22#import Configuration as configuration 
     23 
     24#if configuration.ENABLE_PYSIDE: 
     25try: 
    2526        try: 
    2627                import PySide as PyQt4 
     
    2930                print "ERROR: Exception importing PySide:", 
    3031                print e 
    31                 configuration.ENABLE_PYSIDE = False 
     32                #configuration.ENABLE_PYSIDE = False 
    3233        else: 
    3334                print "INFO: [Brainstorms:Wheelchair_Control] Using PySide module" 
    3435 
    35 if not configuration.ENABLE_PYSIDE: 
     36#if not configuration.ENABLE_PYSIDE: 
     37except: 
    3638        print "INFO: [Brainstorms:Wheelchair_Control] Using PyQt4 module" 
    3739        from PyQt4 import QtCore 
     
    226228                        init_rts_cts_flow_control = 0 
    227229                 
    228                 self.device = serial.Serial(port = self.device_address, \ 
     230                try: 
     231                        self.device = serial.Serial(port = self.device_address, \ 
    229232                                                                                baudrate = baudrate, \ 
    230233                                                                                bytesize = init_byte_size, \ 
     
    234237                                                                                rtscts = init_rts_cts_flow_control, \ 
    235238                                                                                timeout = timeout) 
    236                  
     239                except: 
     240                        if self.DEBUG: 
     241                                print "ERROR: FATAL: Serial device not initialized:", 
     242                                print self.device_address 
    237243                 
    238244                # NOTE disabled 2012-08-04 due to console not responding 
     
    308314         
    309315        def setOutput(self, data): 
    310                 self.device.write(data) 
    311                 self.device.write("Pz") 
     316                 
     317                try: 
     318                        self.device.write(data) 
     319                        self.device.write("Pz") 
     320                         
     321                except: 
     322                        if self.DEBUG: 
     323                                print "ERROR: Failed to write to serial device:", 
     324                                print data 
     325                 
     326                 
    312327        #       print 'Output set to:', data[0], ord(data[1]) 
    313328        #       printHelp() 
    314          
    315329         
    316330        def setDrive(self, value): 
     
    423437                                        #STOP_TIME = time.time() + STOP_INTERVAL 
    424438         
     439         
     440                CHECKSUM = "Pz" 
     441                 
    425442                while True: 
    426443                        #PORT.write("Pz") 
    427                         self.device.write("Pz") 
    428                          
     444                         
     445                        try: 
     446                                self.device.write(CHECKSUM) 
     447                        except: 
     448                                if self.DEBUG: 
     449                                        print "ERROR: Failed to write to serial device:", 
     450                                        print CHECKSUM 
     451                                         
     452                                         
    429453                        cmd = MYGETCH() 
    430454                         
Note: See TracChangeset for help on using the changeset viewer.