source: trunk/Puzzlebox/Synapse/Emotiv/Client.py @ 365

Last change on this file since 365 was 365, checked in by sc, 11 years ago
  • Emotiv packet processing working
File size: 3.7 KB
Line 
1# -*- coding: utf-8 -*-
2
3# Copyright Puzzlebox Productions, LLC (2012)
4#
5# This code is released under the GNU Pulic License (GPL) version 2
6# For more information please refer to http://www.gnu.org/copyleft/gpl.html
7
8__changelog__ = """\
9Last Update: 2012.03.30
10"""
11
12import time
13
14import Puzzlebox.Synapse.Configuration as configuration
15
16if configuration.ENABLE_PYSIDE:
17        try:
18                from PySide import QtCore, QtGui, QtNetwork
19        except Exception, e:
20                print "ERROR: Exception importing PySide:",
21                print e
22                configuration.ENABLE_PYSIDE = False
23        else:
24                print "INFO: [Synapse:Emotiv:Client] Using PySide module"
25
26if not configuration.ENABLE_PYSIDE:
27        print "INFO: [Synapse:Emotiv:Client] Using PyQt4 module"
28        from PyQt4 import QtCore, QtGui, QtNetwork
29
30try:
31        import Puzzlebox.Synapse.Emotiv.Protocol as emotiv_protocol
32except Exception, e:
33        print "ERROR: [Synapse:Emotiv:Client] Exception importing Emotiv.Protocol:",
34        print e
35        emotiv_protocol = None
36
37#####################################################################
38# Globals
39#####################################################################
40
41DEBUG = configuration.DEBUG
42
43SERVER_HOST = configuration.EMOTIV_SERVER_HOST
44SERVER_PORT = configuration.EMOTIV_SERVER_PORT_CONTROL_PANEL
45#SERVER_PORT = configuration.EMOTIV_SERVER_PORT_EMOCOMPOSER
46
47#EVENT_TIMER_BASED_LOOP = True
48#EVENT_TIMER_FREQUENCY = 0.25 * 1000 # 4 Hz
49
50#####################################################################
51# Classes
52#####################################################################
53
54class puzzlebox_synapse_client_emotiv(QtCore.QThread):
55       
56        def __init__(self, log, \
57                          server_host=SERVER_HOST, \
58                          server_port=SERVER_PORT, \
59                          DEBUG=DEBUG, \
60                          parent=None):
61               
62                QtCore.QThread.__init__(self,parent)
63               
64                self.log = log
65                self.DEBUG = DEBUG
66                self.parent=parent
67               
68                self.server_host = server_host
69                self.server_port = server_port
70               
71                self.name = "Synapse:Emotiv:Client"
72               
73                #self.configureNetwork()
74               
75                #if EVENT_TIMER_BASED_LOOP:
76                        #self.eventTimer = QtCore.QTimer()
77                        #QtCore.QObject.connect(self.eventTimer, \
78                                                    #QtCore.SIGNAL("timeout()"), \
79                                                    #self.processEvent)
80                        #self.eventTimer.start(EVENT_TIMER_FREQUENCY)
81       
82       
83        ##################################################################
84       
85        #def processEvent(self):
86               
87                #emotiv_protocol.start(host=self.server_host, port=self.server_port, initialized=True, parent=self)
88               
89       
90        ##################################################################
91       
92        def configureNetwork(self):
93               
94                if emotiv_protocol != None:
95                       
96                        emotiv_protocol.start(host=self.server_host, \
97                                              port=self.server_port, \
98                                              initialized=False, \
99                                              parent=self)
100       
101       
102        ##################################################################
103       
104        def processPacketEmotiv(self, packet):
105               
106                #print "Emotiv:Client",
107                #print packet
108               
109                # Pass GUI updating to Interface application or parent object
110                if (self.parent != None):
111                        self.parent.processPacketEmotiv(packet)
112       
113       
114        ##################################################################
115       
116        def run(self):
117               
118                if self.DEBUG:
119                        print "<---- [%s] Main thread running" % self.name
120               
121                self.configureNetwork()
122               
123                self.exec_()
124       
125       
126        ##################################################################
127       
128        def stop(self):
129               
130                if emotiv_protocol != None:
131                        emotiv_protocol.KEEP_RUNNING = False
132                       
133                        count = 1
134                        while emotiv_protocol.CONNECTED:
135                                time.sleep(0.10)
136                                count = count + 1
137                                if count >= 10:
138                                        break
139       
140       
141        ##################################################################
142       
143        def exitThread(self, callThreadQuit=True):
144               
145                self.stop()
146               
147                if callThreadQuit:
148                        QtCore.QThread.quit(self)
149
Note: See TracBrowser for help on using the repository browser.