Ignore:
Timestamp:
08/25/10 14:25:52 (11 years ago)
Author:
sc
Message:

synapse/Puzzlebox/Synapse/Interface.py:

  • basic support for graphing raw eeg waves working
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/synapse/Puzzlebox/Synapse/Interface.py

    r165 r166  
    1010 
    1111__changelog__ = """\ 
    12 Last Update: 2010.08.19 
     12Last Update: 2010.08.25 
    1313 
    1414""" 
     
    6868PATH_TO_HCITOOL = '/usr/bin/hcitool' 
    6969 
    70 UPDATE_INTERFACE_VIA_TIMER = True # Alternative is to establish a 
    71                                   # ThinkGear Connect client which 
    72                                   # updates the interface on demand 
    73                                   # as packets are received 
     70#UPDATE_INTERFACE_VIA_TIMER = True # Alternative is to establish a 
     71                                  ## ThinkGear Connect client which 
     72                                  ## updates the interface on demand 
     73                                  ## as packets are received 
     74 
     75UPDATE_INTERFACE_VIA_TIMER = False 
     76 
     77UPDATE_INTERFACE_RAW_EEG_VIA_TIMER = False 
    7478 
    7579INTERFACE_UPDATE_FREQUENCY = 1000 # ms 
     80INTERFACE_RAW_EEG_UPDATE_FREQUENCY = (1 / 512) * 1000 # ms (512 Hz) 
    7681 
    7782### CLASSES ### 
     
    99104                self.debug_console_buffer = '' 
    100105                 
    101                 if UPDATE_INTERFACE_VIA_TIMER: 
     106                if UPDATE_INTERFACE_VIA_TIMER or \ 
     107                   UPDATE_INTERFACE_RAW_EEG_VIA_TIMER: 
    102108                        self.updateInterfaceTimer = QtCore.QTimer() 
    103109                        QtCore.QObject.connect(self.updateInterfaceTimer, \ 
     
    159165                 
    160166                 
    161                 #self.matplot = MyDynamicMplCanvas(QtGui.QWidget(self), width=5, height=4, dpi=100) 
    162                  
    163                 print dir(self.tabEEGSignals) 
    164                  
    165                 self.matplot = MyDynamicMplCanvas(self.tabEEGSignals, width=5, height=4, dpi=100) 
     167                #self.matplot = dynamicMatplotlibCanvas(QtGui.QWidget(self), width=5, height=4, dpi=100) 
     168                 
     169                #print dir(self.tabEEGSignals) 
     170                 
     171                self.matplot = dynamicMatplotlibCanvas(self.tabEEGSignals, width=8, height=4, dpi=100) 
     172                #self.matplotEEG = dynamicMatplotlibCanvas(self.tabEEGSignals, width=6, height=2, dpi=100) 
    166173                #l.addWidget(matplot) 
    167174         
     
    291298                 
    292299                 
    293                 if UPDATE_INTERFACE_VIA_TIMER: 
     300                if UPDATE_INTERFACE_RAW_EEG_VIA_TIMER: 
     301                        self.updateInterfaceTimer.start(INTERFACE_RAW_EEG_UPDATE_FREQUENCY) 
     302                elif UPDATE_INTERFACE_VIA_TIMER: 
    294303                        self.updateInterfaceTimer.start(INTERFACE_UPDATE_FREQUENCY) 
    295304                 
     
    359368        ################################################################## 
    360369         
     370        def updateRawEegInterface(self): 
     371                 
     372                pass 
     373         
     374         
     375        ################################################################## 
     376         
    361377        def processPacketThinkGear(self, packet): 
    362378                 
    363379                if self.DEBUG > 2: 
    364380                        print packet 
     381                 
     382                 
     383                if ('rawEeg' in packet.keys()): 
     384                        value = packet['rawEeg'] 
     385                        self.matplot.update_figure(value) 
    365386                 
    366387                 
     
    584605##################################################################### 
    585606 
    586 class MyMplCanvas(FigureCanvas): 
     607class matplotlibCanvas(FigureCanvas): 
    587608         
    588609        """Ultimately, this is a QWidget (as well as a FigureCanvasAgg, etc.).""" 
    589610         
    590         def __init__(self, parent=None, width=5, height=4, dpi=100): 
     611        def __init__(self, parent=None, width=8, height=4, dpi=100): 
    591612                 
    592613                fig = Figure(figsize=(width, height), dpi=dpi) 
     
    595616                self.axes.hold(False) 
    596617                 
    597                 self.compute_initial_figure() 
    598                  
    599                 # 
     618                fig.suptitle('Raw EEG Waves', fontsize=12) 
     619                 
    600620                FigureCanvas.__init__(self, fig) 
    601621                self.setParent(parent) 
     
    616636##################################################################### 
    617637 
    618 class MyDynamicMplCanvas(MyMplCanvas): 
    619          
    620         """A canvas that updates itself every second with a new plot.""" 
     638class dynamicMatplotlibCanvas(matplotlibCanvas): 
    621639         
    622640        def __init__(self, *args, **kwargs): 
    623641                 
    624                 MyMplCanvas.__init__(self, *args, **kwargs) 
    625                  
    626                 timer = QtCore.QTimer(self) 
    627                 QtCore.QObject.connect(timer, QtCore.SIGNAL("timeout()"), self.update_figure) 
    628                 timer.start(1000) 
    629          
    630          
    631         ################################################################## 
    632          
    633         def compute_initial_figure(self): 
    634                 self.axes.plot([0, 1, 2, 3], [1, 2, 0, 4], 'r') 
    635          
    636          
    637         ################################################################## 
    638          
    639         def update_figure(self): 
    640                 # Build a list of 4 random integers between 0 and 10 (both inclusive) 
    641                 l = [ random.randint(0, 10) for i in xrange(4) ] 
    642                  
    643                 self.axes.plot([0, 1, 2, 3], l, 'r') 
    644                 self.draw() 
    645  
     642                matplotlibCanvas.__init__(self, *args, **kwargs) 
     643                 
     644                self.DEBUG=DEBUG 
     645                 
     646                #timer = QtCore.QTimer(self) 
     647                #QtCore.QObject.connect(timer, QtCore.SIGNAL("timeout()"), self.update_figure) 
     648                #timer.start(250) 
     649                 
     650                self.values = [] 
     651                 
     652                self.axes.autoscale_view(tight=None, scalex=False, scaley=False) 
     653                 
     654                self.axes.set_xbound(0, 256) 
     655                self.axes.set_ybound(-1024, 1024) 
     656                #self.axes.set_ybound(-2048, 2047) 
     657                 
     658                self.axes.set_autoscale_on(False) 
     659         
     660         
     661        ################################################################## 
     662         
     663        def update_figure(self, value): 
     664                 
     665                self.values.append(value) 
     666                 
     667                if len(self.values) == 256: 
     668                         
     669                        self.axes.plot(range(256), self.values, 'b-', scalex=False, scaley=False) 
     670                        self.draw() 
     671                         
     672                        self.values = [] 
     673         
     674         
Note: See TracChangeset for help on using the changeset viewer.