Changeset 130


Ignore:
Timestamp:
07/29/10 00:36:25 (11 years ago)
Author:
sc
Message:

thinkgear_emulator/puzzlebox_thinkgear_server.py:

thinkgear_emulator/puzzlebox_thinkgear_emulator_configuration:

  • processes user-definable serial port settings

thinkgear_emulator/puzzlebox_thinkgear_serial_protocol.py:

  • support for external processing by ThinkGear? Connect Server
  • supports PySide? module
  • supports user-definable serial port settings
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • remote_control/puzzlebox_brainstorms_client_interface_local.py

    r111 r130  
    128128                if self.DEBUG: 
    129129                        print "<---- [%s]: Main thread running" % self.socket.name 
    130                         self.exec_() 
     130                 
     131                self.exec_() 
    131132                 
    132133                #while True: 
  • thinkgear_emulator/puzzlebox_thinkgear_emulator_configuration.ini

    r116 r130  
    22# Puzzlebox ThinkGear Emulator Configuration 
    33##################################################################### 
     4 
     5##################################################################### 
     6# ThinkGear Device configuration 
     7##################################################################### 
     8 
     9THINKGEAR_DEVICE_SERIAL_PORT = '' 
     10# THINKGEAR_DEVICE_SERIAL_PORT = 'COM2' # Windows example setting 
     11# THINKGEAR_DEVICE_SERIAL_PORT = '/dev/rfcomm0' # Linux example setting 
    412 
    513##################################################################### 
     
    2533##################################################################### 
    2634 
    27 THINKGEAR_ENABLE_SIMULATE_HEADSET_DATA = True 
     35THINKGEAR_ENABLE_SIMULATE_HEADSET_DATA = False 
    2836 
    2937THINKGEAR_BLINK_FREQUENCY_TIMER = 6 # blink every 6 seconds 
  • thinkgear_emulator/puzzlebox_thinkgear_emulator_configuration.py

    r116 r130  
    99# For more information please refer to http://www.gnu.org/copyleft/gpl.html 
    1010# 
    11 # Last Update: 2010.07.20 
     11# Last Update: 2010.07.28 
    1212# 
    1313##################################################################### 
     
    3232THINKGEAR_SERVER_PORT = 13854 
    3333 
     34##################################################################### 
     35# ThinkGear Device configuration 
     36##################################################################### 
     37 
     38DEFAULT_SERIAL_PORT_WINDOWS = 'COM2' 
     39DEFAULT_SERIAL_PORT_LINUX = '/dev/rfcomm0' 
     40 
     41if (sys.platform == 'win32'): 
     42        THINKGEAR_DEVICE_SERIAL_PORT = DEFAULT_SERIAL_PORT_WINDOWS 
     43else: 
     44        THINKGEAR_DEVICE_SERIAL_PORT = DEFAULT_SERIAL_PORT_LINUX 
    3445 
    3546##################################################################### 
     
    106117                if line.find('=') == -1: 
    107118                        continue 
     119                if (line == "THINKGEAR_DEVICE_SERIAL_PORT = ''"): 
     120                        # use operating system default if device not set manually 
     121                        continue 
    108122                try: 
    109123                        exec line 
  • thinkgear_emulator/puzzlebox_thinkgear_serial_protocol.py

    r129 r130  
    5656import serial 
    5757 
    58 #try: 
    59         #import PySide as PyQt4 
    60         #from PySide import QtCore, QtGui, QtNetwork 
    61 #except: 
    62         #print "Using PyQt4 module" 
    63         #from PyQt4 import QtCore, QtGui, QtNetwork 
    64 #else: 
    65         #print "Using PySide module" 
    66          
    67 from PyQt4 import QtCore 
    68 #from PySide import QtCore, QtGui, QtNetwork 
     58try: 
     59        import PySide as PyQt4 
     60        from PySide import QtCore 
     61except: 
     62        print "Using PyQt4 module" 
     63        from PyQt4 import QtCore 
     64else: 
     65        print "Using PySide module" 
     66         
     67#from PyQt4 import QtCore 
     68#from PySide import QtCore 
    6969 
    7070import puzzlebox_thinkgear_emulator_configuration as configuration 
     
    7777DEBUG = 2 
    7878 
    79 DEFAULT_SERIAL_PORT_WINDOWS = 'COM2' 
    80 DEFAULT_SERIAL_PORT_LINUX = '/dev/rfcomm0' 
    81  
    82 if (sys.platform == 'win32'): 
    83         DEFAULT_SERIAL_PORT = DEFAULT_SERIAL_PORT_WINDOWS 
    84 else: 
    85         DEFAULT_SERIAL_PORT = DEFAULT_SERIAL_PORT_LINUX 
     79THINKGEAR_DEVICE_SERIAL_PORT = configuration.THINKGEAR_DEVICE_SERIAL_PORT 
    8680 
    8781DEFAULT_SERIAL_BAUDRATE = 57600 
    8882 
    89 DEFAULT_MINDSET_ADDRESS = '00:13:EF:00:1B:FE' 
     83#DEFAULT_MINDSET_ADDRESS = '00:13:EF:00:1B:FE' 
    9084 
    9185PROTOCOL_SYNC = '\xAA' 
     
    125119        def __init__(self, log, \ 
    126120                               serial_device, \ 
    127                                serial_port=DEFAULT_SERIAL_PORT, \ 
    128121                               DEBUG=DEBUG, \ 
    129122                               parent=None): 
     
    134127                self.DEBUG = DEBUG 
    135128                 
    136                 self.serial_port = serial_port 
    137129                self.device = None 
    138130                self.buffer = '' 
    139131                 
    140132                self.device = serial_device 
     133                 
     134                self.data_packet = {} 
     135                self.data_packet['eegPower'] = {} 
     136                self.data_packet['eSense'] = {} 
    141137                 
    142138                self.keep_running = True 
     
    481477                ^^^^(Value Type)^^^^ ^^(length)^^ ^^(value)^^''' 
    482478                 
    483                 data_packet = {} 
    484479                 
    485480                if self.DEBUG > 3: 
     
    545540                         
    546541                        packet_update = self.processDataRow(extended_code_level, \ 
    547                                                               code, \ 
    548                                                               length, \ 
    549                                                               data_values) 
    550                          
    551                         data_packet.update(packet_update) 
    552                          
    553                         self.transmitDataPacket(data_packet) 
     542                                                            code, \ 
     543                                                            length, \ 
     544                                                            data_values) 
     545                         
     546                        self.updateDataPacket(packet_update) 
    554547                         
    555548                         
     
    563556         
    564557        def parseStream(self): 
     558                 
     559                '''Each Packet begins with its Header, followed by its Data Payload,  
     560                and ends with the Payload's Check-sum Byte, as follows: 
     561                [SYNC] [SYNC] [PLENGTH]      [PAYLOAD...]         [CHKSUM] 
     562                _______________________      _____________     ____________ 
     563                ^^^^^^^^(Header)^^^^^^^      ^^(Payload)^^     ^(Checksum)^''' 
    565564                 
    566565                # Loop forever, parsing one Packet per loop... 
     
    666665        ################################################################## 
    667666         
    668         def transmitDataPacket(self, data_packet): 
    669                  
    670                 pass 
     667        def updateDataPacket(self, packet_update): 
     668                 
     669                if 'eSense' in packet_update.keys(): 
     670                        for key in packet_update['eSense'].keys(): 
     671                                self.data_packet['eSense'][key] = packet_update['eSense'][key] 
     672                 
     673                else: 
     674                        self.data_packet.update(packet_update) 
     675                 
     676                print self.data_packet 
    671677         
    672678         
     
    684690         
    685691        def __init__(self, log, \ 
    686                                serial_port=DEFAULT_SERIAL_PORT, \ 
     692                               serial_port=THINKGEAR_DEVICE_SERIAL_PORT, \ 
    687693                               DEBUG=DEBUG, \ 
    688694                               parent=None): 
     
    768774                 
    769775                try: 
    770                         device = serial.Serial(port = serial_port, \ 
     776                        device = serial.Serial(port = self.serial_port, \ 
    771777                                                    baudrate = baudrate, \ 
    772778                                                    bytesize = init_byte_size, \ 
     
    851857        def run(self): 
    852858                 
    853                 #if self.DEBUG: 
    854                         #print "<---- [%s]: Main thread running" % self.socket.name 
    855                         #self.exec_() 
    856                  
    857859                self.buffer = '' 
    858860                 
    859861                while self.keep_running: 
    860                  
    861                 #while True: 
    862862                         
    863863                        try: 
     
    893893         
    894894        # Collect default settings and command line parameters 
    895         serial_port = DEFAULT_SERIAL_PORT 
     895        serial_port = THINKGEAR_DEVICE_SERIAL_PORT 
    896896         
    897897        for each in sys.argv: 
    898898                 
    899                 if each.startswith("--port="): 
    900                         serial_port = each[ len("--port="): ] 
     899                if each.startswith("--device="): 
     900                        serial_port = each[ len("--device="): ] 
    901901         
    902902         
     
    910910        protocol = puzzlebox_thinkgear_serial_protocol(log, \ 
    911911                                                            serial_device, \ 
    912                                                             serial_port, \ 
    913912                                                            DEBUG=DEBUG) 
    914913         
  • thinkgear_emulator/puzzlebox_thinkgear_server.py

    r117 r130  
    99# For more information please refer to http://www.gnu.org/copyleft/gpl.html 
    1010# 
    11 # Last Update: 2010.07.20 
     11# Last Update: 2010.07.28 
    1212# 
    1313##################################################################### 
     
    2222 
    2323import puzzlebox_thinkgear_emulator_configuration as configuration 
     24import puzzlebox_thinkgear_serial_protocol as serial_interface 
    2425#import puzzlebox_logger 
    2526 
     
    3233SERVER_INTERFACE = configuration.THINKGEAR_SERVER_INTERFACE 
    3334SERVER_PORT = configuration.THINKGEAR_SERVER_PORT 
     35THINKGEAR_DEVICE_SERIAL_PORT = configuration.THINKGEAR_DEVICE_SERIAL_PORT 
    3436 
    3537CLIENT_NO_REPLY_WAIT = configuration.CLIENT_NO_REPLY_WAIT * 1000 
     
    109111##################################################################### 
    110112 
    111 class puzzlebox_brainstorms_network_server_thinkgear: 
     113class puzzlebox_brainstorms_network_server_thinkgear(QtCore.QThread): 
    112114         
    113115        def __init__(self, log, \ 
    114116                          server_interface=SERVER_INTERFACE, \ 
    115117                          server_port=SERVER_PORT, \ 
     118                          serial_port=THINKGEAR_DEVICE_SERIAL_PORT, \ 
    116119                          DEBUG=DEBUG, \ 
    117120                          parent=None): 
    118121                 
     122                QtCore.QThread.__init__(self,parent) 
     123                 
    119124                self.log = log 
    120125                self.DEBUG = DEBUG 
     
    122127                self.server_interface = server_interface 
    123128                self.server_port = server_port 
     129                self.serial_port = serial_port 
    124130                 
    125131                self.message_frequency_timer = MESSAGE_FREQUENCY_TIMER 
     
    131137                self.connections = [] 
    132138                self.packet_queue = [] 
     139                 
     140                self.configureEEG() 
    133141                 
    134142                self.configureNetwork() 
     
    137145                QtCore.QObject.connect(self.updateTimer, QtCore.SIGNAL("timeout()"), self.timerEvent) 
    138146                self.updateTimer.start(MESSAGE_FREQUENCY_TIMER) 
     147         
     148         
     149        ################################################################## 
     150         
     151        def configureEEG(self): 
     152                 
     153                if not ENABLE_SIMULATE_HEADSET_DATA: 
     154                         
     155                        self.serial_device = \ 
     156                           serial_interface.puzzlebox_thinkgear_serial_device( \ 
     157                                                self.log, \ 
     158                                                serial_port=self.serial_port, \ 
     159                                                DEBUG=self.DEBUG) 
     160                         
     161                        self.serial_device.start() 
     162                         
     163                        self.protocol = \ 
     164                           serial_interface.puzzlebox_thinkgear_serial_protocol( \ 
     165                                           self.log, \ 
     166                                           self.serial_device, \ 
     167                                           DEBUG=self.DEBUG) 
     168                         
     169                        self.protocol.start() 
    139170         
    140171         
     
    481512                                packet = DEFAULT_BLINK_MESSAGE 
    482513                                self.packet_queue.append(packet) 
     514                 
     515                else: 
     516                         
     517                        if self.protocol.data_packet != {}: 
     518                                self.packet_queue.append(self.protocol.data_packet) 
     519         
     520         
     521        ################################################################## 
     522         
     523        def run(self): 
     524                 
     525                if self.DEBUG: 
     526                        print "<---- [%s] Main thread running" % self.socket.name 
     527                 
     528                self.exec_() 
    483529 
    484530 
     
    498544        server_interface = SERVER_INTERFACE 
    499545        server_port = SERVER_PORT 
     546        serial_port = THINKGEAR_DEVICE_SERIAL_PORT 
     547         
    500548         
    501549        for each in sys.argv: 
     
    505553                if each.startswith("--port="): 
    506554                        server_port = each[ len("--port="): ] 
     555                if each.startswith("--device="): 
     556                        serial_port = each[ len("--device="): ] 
    507557         
    508558         
     
    512562                                                                server_interface, \ 
    513563                                                                server_port, \ 
     564                                                                serial_port, \ 
    514565                                                                DEBUG=DEBUG) 
    515566         
     567        server.start() 
     568         
    516569        sys.exit(app.exec_()) 
    517570 
Note: See TracChangeset for help on using the changeset viewer.