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

Last change on this file since 369 was 369, checked in by sc, 10 years ago
  • 0.8.0 release
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                print self.server_port
95               
96                if emotiv_protocol != None:
97                       
98                        emotiv_protocol.start(host=self.server_host, \
99                                              port=self.server_port, \
100                                              initialized=False, \
101                                              parent=self)
102       
103       
104        ##################################################################
105       
106        def processPacketEmotiv(self, packet):
107               
108                #print "Emotiv:Client",
109                #print packet
110               
111                # Pass GUI updating to Interface application or parent object
112                if (self.parent != None):
113                        self.parent.processPacketEmotiv(packet)
114       
115       
116        ##################################################################
117       
118        def run(self):
119               
120                if self.DEBUG:
121                        print "<---- [%s] Main thread running" % self.name
122               
123                self.configureNetwork()
124               
125                self.exec_()
126       
127       
128        ##################################################################
129       
130        def stop(self):
131               
132                if emotiv_protocol != None:
133                        emotiv_protocol.KEEP_RUNNING = False
134                       
135                        count = 1
136                        while emotiv_protocol.CONNECTED:
137                                time.sleep(0.10)
138                                count = count + 1
139                                if count >= 10:
140                                        break
141       
142       
143        ##################################################################
144       
145        def exitThread(self, callThreadQuit=True):
146               
147                self.stop()
148               
149                if callThreadQuit:
150                        QtCore.QThread.quit(self)
151
Note: See TracBrowser for help on using the repository browser.