Changeset 159


Ignore:
Timestamp:
08/12/10 11:42:19 (11 years ago)
Author:
sc
Message:

puzzlebox_synapse_configuration.py:

  • THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE set to 16384

puzzlebox_synapse_interface.py:

  • automatic searching for COM ports under Windows added
  • enumerate_serial_ports added
  • full_port_name added
  • maximum EEG power values reset to default per-packet when not in emulation mode

puzzlebox_synapse_protocol_thinkgear.py:

  • fix for reading from COM ports under Windows
Location:
synapse
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • synapse/puzzlebox_synapse_configuration.py

    r157 r159  
    99# For more information please refer to http://www.gnu.org/copyleft/gpl.html 
    1010# 
    11 # Last Update: 2010.08.09 
     11# Last Update: 2010.08.12 
    1212# 
    1313##################################################################### 
     
    8888 
    8989THINKGEAR_EMULATION_MAX_ESENSE_VALUE = 100 
    90 THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE = 65535 
     90THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE = 16384 
    9191 
    9292THINKGEAR_ATTENTION_MULTIPLIER = 1.0 
  • synapse/puzzlebox_synapse_interface.py

    r157 r159  
    99# For more information please refer to http://www.gnu.org/copyleft/gpl.html 
    1010# 
    11 # Last Update: 2010.08.09 
     11# Last Update: 2010.08.12 
    1212# 
    1313##################################################################### 
     
    2525else: 
    2626        import serial 
     27        import re 
     28        import _winreg as winreg 
     29        import itertools 
    2730        DEFAULT_IMAGE_PATH = 'images' 
    2831 
     
    239242                # and re-connects to a MindSet Emulator, 
    240243                # we need to reset the max power values 
    241                 self.progressBarEEGDelta.setMaximum(THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE) 
    242                 self.progressBarEEGTheta.setMaximum(THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE) 
    243                 self.progressBarEEGLowAlpha.setMaximum(THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE) 
    244                 self.progressBarEEGHighAlpha.setMaximum(THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE) 
    245                 self.progressBarEEGLowBeta.setMaximum(THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE) 
    246                 self.progressBarEEGHighBeta.setMaximum(THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE) 
    247                 self.progressBarEEGLowGamma.setMaximum(THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE) 
    248                 self.progressBarEEGMidGamma.setMaximum(THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE) 
     244                self.progressBarEEGDelta.setMaximum(self.maxEEGPower) 
     245                self.progressBarEEGTheta.setMaximum(self.maxEEGPower) 
     246                self.progressBarEEGLowAlpha.setMaximum(self.maxEEGPower) 
     247                self.progressBarEEGHighAlpha.setMaximum(self.maxEEGPower) 
     248                self.progressBarEEGLowBeta.setMaximum(self.maxEEGPowerE) 
     249                self.progressBarEEGHighBeta.setMaximum(self.maxEEGPower) 
     250                self.progressBarEEGLowGamma.setMaximum(self.maxEEGPower) 
     251                self.progressBarEEGMidGamma.setMaximum(self.maxEEGPower) 
    249252         
    250253         
     
    378381                if ('eegPower' in packet.keys()): 
    379382                         
     383                        # If we are not emulating packets we'll set the maximum EEG Power value 
     384                        # threshold to the default (or maximum value found within this packet) 
     385                        if not self.thinkGearConnectServer.emulate_headset_data: 
     386                                self.maxEEGPower = THINKGEAR_EMULATION_MAX_EEG_POWER_VALUE 
    380387                         
    381388                        for value in packet['eegPower'].keys(): 
     
    434441         
    435442        ################################################################## 
     443 
     444        def enumerateSerialPorts(self): 
     445                 
     446                """ Uses the Win32 registry to return an 
     447                iterator of serial (COM) ports 
     448                existing on this computer. 
     449 
     450                from http://eli.thegreenplace.net/2009/07/31/listing-all-serial-ports-on-windows-with-python/ 
     451                """ 
     452             
     453                path = 'HARDWARE\\DEVICEMAP\\SERIALCOMM' 
     454                try: 
     455                        key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, path) 
     456                except WindowsError: 
     457                        raise IterationError 
     458 
     459                for i in itertools.count(): 
     460                        try: 
     461                                val = winreg.EnumValue(key, i) 
     462                                yield str(val[1]) 
     463                        except EnvironmentError: 
     464                                break 
     465 
     466 
     467        ################################################################## 
     468                         
     469        def fullPortName(self, portname): 
     470                 
     471                """ Given a port-name (of the form COM7, 
     472                COM12, CNCA0, etc.) returns a full 
     473                name suitable for opening with the 
     474                Serial class. 
     475                """ 
     476 
     477                m = re.match('^COM(\d+)$', portname) 
     478                if m and int(m.group(1)) < 10: 
     479                        return portname 
     480                 
     481                return '\\\\.\\' + portname 
     482 
     483         
     484        ################################################################## 
    436485         
    437486        def searchForThinkGearDevices(self): 
    438487                 
    439488                #self.pushButtonBluetoothSearch.setText('Searching') 
    440                  
    441                 if (sys.platform != 'win32'): 
     489 
     490                mindset_devices = [] 
     491                 
     492                if (sys.platform == 'win32'): 
     493 
     494                        for portname in self.enumerateSerialPorts(): 
     495 
     496                                #portname = self.fullPortName(portname) 
     497                                mindset_devices.append(portname) 
     498 
     499 
     500                else: 
    442501                         
    443502                        # Bluetooth module doesn't compile properly under Windows 
     
    449508                                                    #flush_cache=True, \ 
    450509                                                    #lookup_names=True) 
    451                          
    452                         addresses = [] 
    453510                         
    454511                        command = '%s con' % PATH_TO_HCITOOL 
     
    462519                                        pass 
    463520                                else: 
    464                                         addresses.append(address) 
    465                          
    466                         for address in addresses: 
     521                                        bluetooth_devices.append(address) 
     522                         
     523                        for address in bluetooth_devices: 
    467524                                device_name = bluetooth.lookup_name(address) 
    468525                                if device_name == 'MindSet': 
    469                                         bluetooth_devices.append(address) 
     526                                        mindset_devices.append(address) 
    470527                         
    471528                         
    472529                        if self.DEBUG: 
    473                                 print "Bluetooth devices found:", 
    474                                 print bluetooth_devices 
     530                                print "Bluetooth MindSet devices found:", 
     531                                print mindset_devices 
    475532                         
    476533                         
     
    480537                         
    481538                         
    482                         for mindset_device in bluetooth_devices: 
    483                                 self.comboBoxDeviceSelect.addItem(mindset_device) 
     539                for mindset_device in mindset_devices: 
     540                        self.comboBoxDeviceSelect.addItem(mindset_device) 
    484541                 
    485542                 
  • synapse/puzzlebox_synapse_protocol_thinkgear.py

    r158 r159  
    99# For more information please refer to http://www.gnu.org/copyleft/gpl.html 
    1010# 
    11 # Last Update: 2010.08.09 
     11# Last Update: 2010.08.12 
    1212# 
    1313##################################################################### 
     
    115115##################################################################### 
    116116 
     117class serialWrapper(serial.Serial): 
     118 
     119        #__init__(port=None, baudrate=9600, bytesize=EIGHTBITS, parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, writeTimeout=None, dsrdtr=False, interCharTimeout=None) 
     120 
     121        def recv(self, size=1): 
     122 
     123                return(self.read(size)) 
     124 
     125 
     126##################################################################### 
     127##################################################################### 
     128 
    117129class puzzlebox_synapse_protocol_thinkgear(QtCore.QThread): 
    118130         
     
    821833                else: 
    822834                        init_rts_cts_flow_control = 0 
    823                  
     835 
     836                print self.device_address 
    824837                 
    825838                try: 
    826                         device = serial.Serial(port = self.device_address, \ 
     839##                      device = serial.Serial(port = self.device_address, \ 
     840##                                                  baudrate = baudrate, \ 
     841##                                                  bytesize = init_byte_size, \ 
     842##                                                  parity = init_parity, \ 
     843##                                                  stopbits = init_stopbits, \ 
     844##                                                  xonxoff = init_software_flow_control, \ 
     845##                                                  rtscts = init_rts_cts_flow_control, \ 
     846##                                                  timeout = timeout) 
     847 
     848                        device = serialWrapper(port = self.device_address, \ 
    827849                                                    baudrate = baudrate, \ 
    828850                                                    bytesize = init_byte_size, \ 
     
    836858                        if self.DEBUG: 
    837859                                print "ERROR:", 
    838                                 print e 
     860                                print e, 
     861                                print self.device_address 
    839862                                sys.exit() 
    840863                 
Note: See TracChangeset for help on using the changeset viewer.