Changeset 214


Ignore:
Timestamp:
11/23/10 11:40:14 (11 years ago)
Author:
sc
Message:

Brainstorms/Helicopter_Control.py:

  • correct packets for various settings and their commands
  • beacon timer code added (but commented out)
File:
1 edited

Legend:

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

    r213 r214  
    1010 
    1111__changelog__ = """ 
    12 Last Update: 2010.11.18 
     12Last Update: 2010.11.22 
    1313 
    1414""" 
     
    3636##################################################################### 
    3737 
    38 DEBUG = 3 
     38DEBUG = 2 
    3939 
    4040DEFAULT_COMMAND = 'dump_packets' 
    4141 
    4242SERIAL_DEVICE = '/dev/ttyUSB0' 
    43 DEFAULT_SERIAL_BAUDRATE = 115200 # This is the closest "standard" baud rate the USB-to-Serial device will support 
     43#SERIAL_DEVICE = '/dev/ttyACM0' 
     44#DEFAULT_SERIAL_BAUDRATE = 115200 # This is the closest "standard" baud rate the USB-to-Serial device will support 
    4445#DEFAULT_SERIAL_BAUDRATE = 125000 # This is the speed reported by the forum post 
    45 #DEFAULT_SERIAL_BAUDRATE = 133333 # This is the speed reported by the logic analyzer 
     46#DEFAULT_SERIAL_BAUDRATE = 128000 # This is the next closest somewhat commonly-found baud rate (though not supported by device) 
     47DEFAULT_SERIAL_BAUDRATE = 133333 # This is the speed reported by the logic analyzer 
    4648#DEFAULT_SERIAL_BAUDRATE = 230400 # This is the next highest "standard" baud rate the USB-to-Serial device will support 
    4749DEFAULT_MODE = 'read' 
     
    5355PROTOCOL_ADD_SYNC_TO_TAIL = False 
    5456PACKET_LENGTH = 14 
    55 PAYLOAD_MINIMUM_LENGTH = 8 
    56 PACKET_READ_SIZE = 11 
     57PAYLOAD_MINIMUM_LENGTH = 12 
     58PACKET_READ_SIZE = 14 
    5759ECHO_ON = False 
    5860 
     
    6062 
    6163COMMAND_PACKET = { 
    62         'neutral': '\x80\x53\x68\x81\x86\xd1\xa4\x29', \ 
    63         'no_thrust': '\x80\xac\xdf\xa2\x9a\xb0\x8b\x8d\x54', \ 
    64         'minimum_thrust': '\x80\x59\x68\x81\x86\xd1\xa4\x29', \ 
    65         'maximum_thrust': '\x80\x83\xad\xe7\xa2\xad\xf0\x8b\x8d\x54\xff', 
    66         'test_packet': '\x00\x00\x03\x54\x06\x15\x09\xca\x0e\x2f\x13\x54\x14\xaa', \ 
    67         'maximum_forward': '\x83\xad\xde\x11\xcd\xb0\x8b\x8d\x54', \ 
     64        'neutral':        '\x00\x00\x00\xfa\x05\xc7\x09\xd7\x0e\x0b\x13\x54\x14\xaa',  # default neutral setting to use for all commands 
     65        'no_thrust':      '\x00\x00\x00\x5a\x05\xc7\x09\xd7\x0e\x0b\x13\x54\x14\xaa',  # lowest trim setting for throttle 
     66        'minimum_thrust': '\x00\x00\x00\xca\x05\xc7\x09\xd5\x0e\x0b\x13\x54\x14\xaa',  # lowest trim level at which throttle kicks in 
     67        'maximum_thrust': '\x00\x00\x03\x54\x05\xc7\x09\xd5\x0e\x0b\x13\x54\x14\xaa',  # maximum possible throttle and trim 
     68        'fifty_percent_thrust': '\x00\x00\x01\x7D\x05\xc7\x09\xd5\x0e\x0b\x13\x54\x14\xaa', # calculated 50% throttle 
     69        'test_packet':    '\x00\x00\x03\x54\x06\x15\x09\xca\x0e\x2f\x13\x54\x14\xaa', # test packet from saleae logic screenshot 
     70        'maximum_forward': '\x00\x00\x00\x5a\x05\xc5\x0b\x54\x0e\x0b\x13\x54\x14\xaa', \ 
    6871} 
    6972 
     
    131134                if self.DEBUG: 
    132135                        print "data_payload:", 
    133                         print packet['data_payload'] 
     136                        #print packet['data_payload'] 
    134137                        print packet['data_payload'].encode("hex") 
    135138                         
     
    185188                 
    186189                self.protocol.command_packet = COMMAND_PACKET['neutral'] 
    187                 QtCore.QThread.msleep(1 * 1000) # 1 second 
    188                  
    189                 self.protocol.command_packet = COMMAND_PACKET['minimum_thrust'] 
    190                 QtCore.QThread.msleep(1 * 1000) # 1 second 
     190                QtCore.QThread.msleep(5 * 1000) # 1 second 
     191                 
     192                self.protocol.command_packet = COMMAND_PACKET['maximum_thrust'] 
     193                QtCore.QThread.msleep(5 * 1000) # 1 second 
    191194                 
    192195                self.protocol.command_packet = COMMAND_PACKET['neutral'] 
     
    213216        def processCommand(self): 
    214217                 
    215                 if (self.command == 'dump_packets'): 
     218                if (self.command == 'dump_packets') or (self.command == 'read'): 
    216219                        self.mode = 'read' 
    217220                else: 
     
    228231                elif (self.command == 'neutral'): 
    229232                        self.mode = 'write' 
    230                         self.neutral()           
     233                        self.neutral() 
     234                 
    231235                elif (self.command == 'test_packet'): 
    232236                        self.mode = 'write' 
     
    355359                         
    356360                        data_payload = self.device.getBuffer() 
     361                        data_payload = "%s%s%s" % (PROTOCOL_SYNC_HEAD1, PROTOCOL_SYNC_HEAD2, data_payload) 
    357362                         
    358363                         
    359364                        if len(data_payload) < PAYLOAD_MINIMUM_LENGTH: 
     365                        #if len(data_payload) != PACKET_LENGTH: 
    360366                                continue 
    361367                         
     
    707713         
    708714                self.buffer = '' 
     715                #beacon_timer = 0 
    709716                 
    710717                while self.keep_running: 
     
    713720                                buffer = self.buffer 
    714721                                self.buffer = '' 
     722                                 
     723                                 
     724                                #if beacon_timer >= 750: 
     725                                        #buffer += '\xaa' + buffer 
     726                                        #beacon_timer = 0 
     727                                 
    715728                                 
    716729                                try: 
     
    719732                                        if self.DEBUG > 1: 
    720733                                                print "Device wrote:", 
    721                                                 print buffer, 
     734                                                #print buffer, 
    722735                                                print buffer.encode("hex") 
    723736                                 
     
    732745                        # (1/50) * 1000 = 20 
    733746                        QtCore.QThread.msleep(DEVICE_BUFFER_TIMER) 
     747                        #beacon_timer += DEVICE_BUFFER_TIMER 
     748                 
    734749                 
    735750                self.exitThread() 
Note: See TracChangeset for help on using the changeset viewer.