gazetk / DesktopConnector / DeviceServer_MyGaze / DeviceServer_MyGaze.py @ b8e587a8
History | View | Annotate | Download (4.148 KB)
1 | 908a231e | Thies Pfeiffer | #
|
---|---|---|---|
2 | # DeviceServer_MyGaze.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 | from myGazeAPI import * # myGaze library |
||
24 | |||
25 | from websocket import create_connection |
||
26 | ws = create_connection("ws://127.0.0.1:6777")
|
||
27 | print "sending: Hi, this is the python server" |
||
28 | ws.send("TYPE:mygaze");
|
||
29 | ws.send("Hi, this is the mygaze python server")
|
||
30 | print "sent." |
||
31 | |||
32 | |||
33 | # ----------------------------------------------------------------------------
|
||
34 | # ---- connect to myGazeAPI eyetracking-server
|
||
35 | # ----------------------------------------------------------------------------
|
||
36 | |||
37 | res = myGazeAPI.iV_Connect() |
||
38 | if res != 1: |
||
39 | print "Could not connect " + str(res) |
||
40 | exit(0) |
||
41 | |||
42 | |||
43 | # ----------------------------------------------------------------------------
|
||
44 | # ---- read out system information
|
||
45 | # ----------------------------------------------------------------------------
|
||
46 | |||
47 | res = myGazeAPI.iV_GetSystemInfo(byref(systemData)) |
||
48 | print "myGaze eyetracking-server Version: " + str(systemData.iV_MajorVersion) + "." + str(systemData.iV_MinorVersion) + "." + str(systemData.iV_Buildnumber) |
||
49 | print "myGaze API Version: " + str(systemData.API_MajorVersion) + "." + str(systemData.API_MinorVersion) + "." + str(systemData.API_Buildnumber) |
||
50 | |||
51 | |||
52 | # ----------------------------------------------------------------------------
|
||
53 | # ---- start the calibration and validation process
|
||
54 | # ----------------------------------------------------------------------------
|
||
55 | |||
56 | # see the User Manual for detailed information due to setting up calibration
|
||
57 | calibrationData = CCalibration(5, 1, 0, 0, 1, 250, 220, 2, 20, b"") |
||
58 | res = myGazeAPI.iV_SetupCalibration(byref(calibrationData)) |
||
59 | print "iV_SetupCalibration " + str(res) |
||
60 | |||
61 | # start the calibration process
|
||
62 | res = myGazeAPI.iV_Calibrate() |
||
63 | print "iV_Calibrate " + str(res) |
||
64 | |||
65 | # start the validation process
|
||
66 | res = myGazeAPI.iV_Validate() |
||
67 | print "iV_Validate " + str(res) |
||
68 | |||
69 | # read out the accuracy values
|
||
70 | res = myGazeAPI.iV_GetAccuracy(byref(accuracyData)) |
||
71 | print "iV_GetAccuracy " + str(res) |
||
72 | print "accuracy left X: " + str(accuracyData.deviationLX) + " left Y: " + str(accuracyData.deviationLY) |
||
73 | print "accuracy right X: " + str(accuracyData.deviationRX) + " left Y: " + str(accuracyData.deviationRY) |
||
74 | |||
75 | # show tracking monitor
|
||
76 | res = myGazeAPI.iV_ShowTrackingMonitor() |
||
77 | print "iV_ShowTrackingMonitor " + str(res) |
||
78 | |||
79 | |||
80 | # ----------------------------------------------------------------------------
|
||
81 | # ---- accessing eye tracking data stream
|
||
82 | # ----------------------------------------------------------------------------
|
||
83 | |||
84 | # output samples
|
||
85 | a = 0;
|
||
86 | while a < 1000: |
||
87 | |||
88 | # get gaze data sample
|
||
89 | res = myGazeAPI.iV_GetSample(byref(sampleData)) |
||
90 | if res == 1: |
||
91 | # a = a + 1
|
||
92 | #print "Gaze Data - GazeX: " + str(sampleData.leftEye.gazeX) + " GazeY: " + str(sampleData.leftEye.gazeY)
|
||
93 | ws.send("{\"x\":"+str(sampleData.leftEye.gazeX)+",\"y\":"+str(sampleData.leftEye.gazeY)+"}") |
||
94 | #ws.send("{\"x\":"+str(sampleData.rightEye.gazeX)+",\"y\":"+str(sampleData.rightEye.gazeY)+"}")
|
||
95 | # get gaze data sample
|
||
96 | res = myGazeAPI.iV_GetEvent(byref(eventData)) |
||
97 | #if res == 1:
|
||
98 | #print "Fixation " + str(eventData.eye) + " - X: " + str(eventData.positionX) + " Y: " + str(eventData.positionY)
|
||
99 | |||
100 | |||
101 | # ----------------------------------------------------------------------------
|
||
102 | # ---- disconnect from myGaze eyetracking server
|
||
103 | # ----------------------------------------------------------------------------
|
||
104 | |||
105 | res = myGazeAPI.iV_Disconnect() |
||
106 | ws.close() |
||
107 | #end of the trial
|
||
108 | #window.close()
|
||
109 | #core.quit()
|
||
110 |