Statistics
| Branch: | Revision:

gazetk / DesktopConnector / DeviceServer_SMI_REDm / DeviceServer_REDm.py @ b8e587a8

History | View | Annotate | Download (4.079 KB)

1 b8e587a8 Thies Pfeiffer
#
2
# DeviceServer_REDm.py
3
# 
4
# This file is part of GazeTk.
5
#
6
# Copyright 2015 Thies Pfeiffer and Dimitri Heil
7
# GazeTk is distributed under the terms of the GNU General Public License
8
# 
9
# GazeTk is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation, either version 3 of the License, or
12
# (at your option) any later version.
13
# 
14
# GazeTk is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
18
# 
19
# You should have received a copy of the GNU General Public License
20
# along with GazeTk. If not, see <http://www.gnu.org/licenses/>.
21
#
22
23
#!/usr/bin/env python
24
# -*- coding: utf-8 -*-
25
26
from iViewXAPI import  *            #iViewX library
27
from iViewXAPIReturnCodes import * 
28
from websocket import create_connection
29
ws = create_connection("ws://127.0.0.1:6777")
30
print "sending: Hi, this is the python server"
31
ws.send("TYPE:smi");
32
ws.send("Hi, this is the python server")
33
print "sent."
34
35
36
37
38
# ---------------------------------------------
39
#---- connect to iViewX
40
# ---------------------------------------------
41
42
res = iViewXAPI.iV_SetLogger(c_int(1), c_char_p("iViewXSDK_Python_SimpleExperiment.txt"))
43
res = iViewXAPI.iV_Connect(c_char_p('127.0.0.1'), c_int(4444), c_char_p('127.0.0.1'), c_int(5555))
44
if res != 1:
45
    HandleError(res)
46
    exit(0)
47
48
res = iViewXAPI.iV_GetSystemInfo(byref(systemData))
49
print "iV_GetSystemInfo: " + str(res)
50
print "Samplerate: " + str(systemData.samplerate)
51
print "iViewX Version: " + str(systemData.iV_MajorVersion) + "." + str(systemData.iV_MinorVersion) + "." + str(systemData.iV_Buildnumber)
52
print "iViewX API Version: " + str(systemData.API_MajorVersion) + "." + str(systemData.API_MinorVersion) + "." + str(systemData.API_Buildnumber)
53
54
55
# ---------------------------------------------
56
#---- configure and start calibration
57
# ---------------------------------------------
58
59
calibrationData = CCalibration(5, 1, 0, 0, 1, 250, 220, 2, 20, b"")
60
61
res = iViewXAPI.iV_SetupCalibration(byref(calibrationData))
62
print "iV_SetupCalibration " + str(res)
63
64
res = iViewXAPI.iV_Calibrate()
65
print "iV_Calibrate " + str(res)
66
67
res = iViewXAPI.iV_Validate()
68
print "iV_Validate " + str(res)
69
res = iViewXAPI.iV_GetAccuracy(byref(accuracyData), 0)
70
print "iV_GetAccuracy " + str(res)
71
print "deviationXLeft " + str(accuracyData.deviationLX) + " deviationYLeft " + str(accuracyData.deviationLY)
72
print "deviationXRight " + str(accuracyData.deviationRX) + " deviationYRight " + str(accuracyData.deviationRY)
73
74
75
# ---------------------------------------------
76
#---- define the callback functions
77
# ---------------------------------------------
78
79
def SampleCallback(sample):
80
    print " Gaze Data - Timestamp " + str(sample.timestamp) + " Gaze " + str(sample.leftEye.gazeX) + " " + str(sample.leftEye.gazeY) + "\n"
81
    print "{\"x\":" + str(sample.leftEye.gazeX) + ",\"y\":" + str(sample.leftEye.gazeY) + "}"
82
    ws.send("{\"x\":"+str(sample.leftEye.gazeX)+",\"y\":"+str(sample.leftEye.gazeY)+"}")
83
    #ws.send("hi..")
84
    return 0
85
86
def EventCallback(event):
87
    print " Event: " + str(event.positionX) + " " + str(event.positionY) + "\n"
88
    return 0
89
90
91
CMPFUNC = WINFUNCTYPE(c_int, CSample)
92
smp_func = CMPFUNC(SampleCallback)
93
sampleCB = False
94
95
CMPFUNC = WINFUNCTYPE(c_int, CEvent)
96
event_func = CMPFUNC(EventCallback)
97
eventCB = False
98
99
100
# ---------------------------------------------
101
#---- start DataStreaming
102
# ---------------------------------------------
103
command = 0
104
105
while (command != 'q'):
106
    command = raw_input("waiting for input - press 's' and 'Enter' to start DataStreaming \n\
107
                  - press 'q' and 'Enter' to quit DataStreaming \n")
108
    
109
    if (command == 's'):
110
                res = iViewXAPI.iV_SetSampleCallback(smp_func)
111
                sampleCB = True
112
                res = iViewXAPI.iV_SetEventCallback(event_func)
113
                eventCB = True
114
115
116
# ---------------------------------------------
117
#---- stop recording and disconnect from iViewX
118
# ---------------------------------------------
119
120
res = iViewXAPI.iV_Disconnect()
121
ws.close()