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

Last change on this file was 384, checked in by sc, 10 years ago

Emotiv:

  • Packet counter fixed for Jigsaw
File size: 3.8 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.04.05
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.packet_count = 0
72                self.bad_packets = 0
73               
74                self.name = "Synapse:Emotiv:Client"
75               
76                #self.configureNetwork()
77               
78                #if EVENT_TIMER_BASED_LOOP:
79                        #self.eventTimer = QtCore.QTimer()
80                        #QtCore.QObject.connect(self.eventTimer, \
81                                                    #QtCore.SIGNAL("timeout()"), \
82                                                    #self.processEvent)
83                        #self.eventTimer.start(EVENT_TIMER_FREQUENCY)
84       
85       
86        ##################################################################
87       
88        #def processEvent(self):
89               
90                #emotiv_protocol.start(host=self.server_host, port=self.server_port, initialized=True, parent=self)
91               
92       
93        ##################################################################
94       
95        def configureNetwork(self):
96               
97                print "INFO: [Synapse:Emotiv:Client] Connecting to %s:%i" % \
98                   (self.server_host, self.server_port)
99               
100                if emotiv_protocol != None:
101                       
102                        emotiv_protocol.start(host=self.server_host, \
103                                              port=self.server_port, \
104                                              initialized=False, \
105                                              parent=self)
106       
107       
108        ##################################################################
109       
110        def processPacketEmotiv(self, packet):
111               
112                self.packet_count = self.packet_count + 1
113               
114                # Pass GUI updating to Interface application or parent object
115                if (self.parent != None):
116                        self.parent.processPacketEmotiv(packet)
117       
118       
119        ##################################################################
120       
121        def run(self):
122               
123                if self.DEBUG:
124                        print "<---- [%s] Main thread running" % self.name
125               
126                self.configureNetwork()
127               
128                self.exec_()
129       
130       
131        ##################################################################
132       
133        def stop(self):
134               
135                if emotiv_protocol != None:
136                        emotiv_protocol.KEEP_RUNNING = False
137                       
138                        count = 1
139                        while emotiv_protocol.CONNECTED:
140                                time.sleep(0.10)
141                                count = count + 1
142                                if count >= 10:
143                                        break
144       
145       
146        ##################################################################
147       
148        def exitThread(self, callThreadQuit=True):
149               
150                self.stop()
151               
152                if callThreadQuit:
153                        QtCore.QThread.quit(self)
154
Note: See TracBrowser for help on using the repository browser.