From 72c46bdd7f5d430ab1ad1d420ed77c7f22df857a Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sat, 30 Sep 2017 15:01:35 +0200 Subject: rename --- .../Debug/MinimalE.6D2CFFFE.tlog/CL.command.1.tlog | Bin 0 -> 798 bytes .../Debug/MinimalE.6D2CFFFE.tlog/CL.read.1.tlog | Bin 0 -> 23524 bytes .../Debug/MinimalE.6D2CFFFE.tlog/CL.write.1.tlog | Bin 0 -> 616 bytes .../MinimalEyePositionDataStream.lastbuildstate | 2 + .../MinimalE.6D2CFFFE.tlog/link.command.1.tlog | Bin 0 -> 1336 bytes .../Debug/MinimalE.6D2CFFFE.tlog/link.read.1.tlog | Bin 0 -> 3182 bytes .../Debug/MinimalE.6D2CFFFE.tlog/link.write.1.tlog | Bin 0 -> 550 bytes .../Debug/MinimalEyePositionDataStream.log | 2 + .../Debug/MinimalEyePositionDataStream.obj | Bin 0 -> 76309 bytes .../MinimalEyePositionDataStream/Debug/vc140.idb | Bin 0 -> 265216 bytes .../MinimalEyePositionDataStream/Debug/vc140.pdb | Bin 0 -> 86016 bytes .../MinimalEyePositionDataStream.c | 199 +++++++++++++++++++++ .../MinimalEyePositionDataStream.vcxproj | 160 +++++++++++++++++ .../MinimalEyePositionDataStream.vcxproj.filters | 6 + 14 files changed, 369 insertions(+) create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.command.1.tlog create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.read.1.tlog create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.write.1.tlog create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/MinimalEyePositionDataStream.lastbuildstate create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.command.1.tlog create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.read.1.tlog create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.write.1.tlog create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalEyePositionDataStream.log create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalEyePositionDataStream.obj create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/vc140.idb create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/vc140.pdb create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.c create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.vcxproj create mode 100755 Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.vcxproj.filters (limited to 'Tobii-EyeX/samples/MinimalEyePositionDataStream') diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.command.1.tlog b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.command.1.tlog new file mode 100755 index 0000000..778592a Binary files /dev/null and b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.command.1.tlog differ diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.read.1.tlog b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.read.1.tlog new file mode 100755 index 0000000..d263c73 Binary files /dev/null and b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.read.1.tlog differ diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.write.1.tlog b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.write.1.tlog new file mode 100755 index 0000000..66e1721 Binary files /dev/null and b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/CL.write.1.tlog differ diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/MinimalEyePositionDataStream.lastbuildstate b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/MinimalEyePositionDataStream.lastbuildstate new file mode 100755 index 0000000..5cd4c3b --- /dev/null +++ b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/MinimalEyePositionDataStream.lastbuildstate @@ -0,0 +1,2 @@ +#TargetFrameworkVersion=v4.0:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1 +Debug|Win32|D:\dev\tobii\samples\| diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.command.1.tlog b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.command.1.tlog new file mode 100755 index 0000000..063463c Binary files /dev/null and b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.command.1.tlog differ diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.read.1.tlog b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.read.1.tlog new file mode 100755 index 0000000..0209802 Binary files /dev/null and b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.read.1.tlog differ diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.write.1.tlog b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.write.1.tlog new file mode 100755 index 0000000..dfdfde0 Binary files /dev/null and b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalE.6D2CFFFE.tlog/link.write.1.tlog differ diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalEyePositionDataStream.log b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalEyePositionDataStream.log new file mode 100755 index 0000000..f4e7d98 --- /dev/null +++ b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalEyePositionDataStream.log @@ -0,0 +1,2 @@ + MinimalEyePositionDataStream.c + MinimalEyePositionDataStream.vcxproj -> D:\dev\tobii\samples\Debug\MinimalEyePositionDataStream.exe diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalEyePositionDataStream.obj b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalEyePositionDataStream.obj new file mode 100755 index 0000000..94714f2 Binary files /dev/null and b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/MinimalEyePositionDataStream.obj differ diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/vc140.idb b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/vc140.idb new file mode 100755 index 0000000..65a10a3 Binary files /dev/null and b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/vc140.idb differ diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/vc140.pdb b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/vc140.pdb new file mode 100755 index 0000000..b8a41a3 Binary files /dev/null and b/Tobii-EyeX/samples/MinimalEyePositionDataStream/Debug/vc140.pdb differ diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.c b/Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.c new file mode 100755 index 0000000..b979c6c --- /dev/null +++ b/Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.c @@ -0,0 +1,199 @@ +/* + * This is an example that demonstrates how to connect to the EyeX Engine and subscribe to the eye position data stream. + * + * Copyright 2013-2014 Tobii Technology AB. All rights reserved. + */ + +#include +#include +#include +#include +#include "eyex/EyeX.h" + +#pragma comment (lib, "Tobii.EyeX.Client.lib") + +// ID of the global interactor that provides our data stream; must be unique within the application. +static const TX_STRING InteractorId = "Fluttershy"; + +// global variables +static TX_HANDLE g_hGlobalInteractorSnapshot = TX_EMPTY_HANDLE; + +/* + * Initializes g_hGlobalInteractorSnapshot with an interactor that has the Eye Position behavior. + */ +BOOL InitializeGlobalInteractorSnapshot(TX_CONTEXTHANDLE hContext) +{ + TX_HANDLE hInteractor = TX_EMPTY_HANDLE; + TX_HANDLE hBehaviorWithoutParameters = TX_EMPTY_HANDLE; + + BOOL success; + + success = txCreateGlobalInteractorSnapshot( + hContext, + InteractorId, + &g_hGlobalInteractorSnapshot, + &hInteractor) == TX_RESULT_OK; + success &= txCreateInteractorBehavior(hInteractor, &hBehaviorWithoutParameters, TX_BEHAVIORTYPE_EYEPOSITIONDATA) == TX_RESULT_OK; + + txReleaseObject(&hInteractor); + + return success; +} + +/* + * Callback function invoked when a snapshot has been committed. + */ +void TX_CALLCONVENTION OnSnapshotCommitted(TX_CONSTHANDLE hAsyncData, TX_USERPARAM param) +{ + // check the result code using an assertion. + // this will catch validation errors and runtime errors in debug builds. in release builds it won't do anything. + + TX_RESULT result = TX_RESULT_UNKNOWN; + txGetAsyncDataResultCode(hAsyncData, &result); + assert(result == TX_RESULT_OK || result == TX_RESULT_CANCELLED); +} + +/* + * Callback function invoked when the status of the connection to the EyeX Engine has changed. + */ +void TX_CALLCONVENTION OnEngineConnectionStateChanged(TX_CONNECTIONSTATE connectionState, TX_USERPARAM userParam) +{ + switch (connectionState) { + case TX_CONNECTIONSTATE_CONNECTED: { + BOOL success; + printf("The connection state is now CONNECTED (We are connected to the EyeX Engine)\n"); + // commit the snapshot with the global interactor as soon as the connection to the engine is established. + // (it cannot be done earlier because committing means "send to the engine".) + success = txCommitSnapshotAsync(g_hGlobalInteractorSnapshot, OnSnapshotCommitted, NULL) == TX_RESULT_OK; + if (!success) { + printf("Failed to initialize the data stream.\n"); + } + else { + printf("Waiting for eye position data to start streaming...\n"); + } + } + break; + + case TX_CONNECTIONSTATE_DISCONNECTED: + printf("The connection state is now DISCONNECTED (We are disconnected from the EyeX Engine)\n"); + break; + + case TX_CONNECTIONSTATE_TRYINGTOCONNECT: + printf("The connection state is now TRYINGTOCONNECT (We are trying to connect to the EyeX Engine)\n"); + break; + + case TX_CONNECTIONSTATE_SERVERVERSIONTOOLOW: + printf("The connection state is now SERVER_VERSION_TOO_LOW: this application requires a more recent version of the EyeX Engine to run.\n"); + break; + + case TX_CONNECTIONSTATE_SERVERVERSIONTOOHIGH: + printf("The connection state is now SERVER_VERSION_TOO_HIGH: this application requires an older version of the EyeX Engine to run.\n"); + break; + } +} + +/* + * Handles an event from the Eye Position data stream. + */ +void OnEyePositionDataEvent(TX_HANDLE hEyePositionDataBehavior) +{ + COORD position = {0,8}; + TX_EYEPOSITIONDATAEVENTPARAMS eventParams; + if (txGetEyePositionDataEventParams(hEyePositionDataBehavior, &eventParams) == TX_RESULT_OK) { + SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), position); + + // Output information about the left eye. + printf("LEFT EYE\n"); + printf("========\n"); + printf("3D position: (%.1f, %.1f, %.1f) \n", + eventParams.LeftEyeX, eventParams.LeftEyeY, eventParams.LeftEyeZ); + printf("Normalized : (%.1f, %.1f, %.1f) \n", + eventParams.LeftEyeXNormalized, eventParams.LeftEyeYNormalized, eventParams.LeftEyeZNormalized); + + // Output information about the right eye. + printf("\n"); + printf("RIGHT EYE\n"); + printf("=========\n"); + printf("3D position: (%.1f, %.1f, %.1f) \n", + eventParams.RightEyeX, eventParams.RightEyeY, eventParams.RightEyeZ); + printf("Normalized : (%.1f, %.1f, %.1f) \n", + eventParams.RightEyeXNormalized, eventParams.RightEyeYNormalized, eventParams.RightEyeZNormalized); + + printf("\n"); + printf("The 3D position consists of X,Y,Z coordinates expressed in millimeters \n"); + printf("in relation to the center of the screen where the eye tracker is mounted. \n"); + printf("\n"); + printf("The normalized coordinates are expressed in relation to the track box, \n"); + printf("i.e. the volume in which the eye tracker is theoretically able to track eyes. \n"); + printf("- (0,0,0) represents the upper, right corner closest to the eye tracker. \n"); + printf("- (1,1,1) represents the lower, left corner furthest away from the eye tracker. \n"); + } else { + printf("Failed to interpret eye position data event packet.\n"); + } +} + +/* + * Callback function invoked when an event has been received from the EyeX Engine. + */ +void TX_CALLCONVENTION HandleEvent(TX_CONSTHANDLE hAsyncData, TX_USERPARAM userParam) +{ + TX_HANDLE hEvent = TX_EMPTY_HANDLE; + TX_HANDLE hBehavior = TX_EMPTY_HANDLE; + + txGetAsyncDataContent(hAsyncData, &hEvent); + + // NOTE. Uncomment the following line of code to view the event object. The same function can be used with any interaction object. + //OutputDebugStringA(txDebugObject(hEvent)); + + if (txGetEventBehavior(hEvent, &hBehavior, TX_BEHAVIORTYPE_EYEPOSITIONDATA) == TX_RESULT_OK) { + OnEyePositionDataEvent(hBehavior); + txReleaseObject(&hBehavior); + } + + // NOTE since this is a very simple application with a single interactor and a single data stream, + // our event handling code can be very simple too. A more complex application would typically have to + // check for multiple behaviors and route events based on interactor IDs. + + txReleaseObject(&hEvent); +} + +/* + * Application entry point. + */ +int main(int argc, char* argv[]) +{ + TX_CONTEXTHANDLE hContext = TX_EMPTY_HANDLE; + TX_TICKET hConnectionStateChangedTicket = TX_INVALID_TICKET; + TX_TICKET hEventHandlerTicket = TX_INVALID_TICKET; + BOOL success; + + // initialize and enable the context that is our link to the EyeX Engine. + success = txInitializeEyeX(TX_EYEXCOMPONENTOVERRIDEFLAG_NONE, NULL, NULL, NULL, NULL) == TX_RESULT_OK; + success &= txCreateContext(&hContext, TX_FALSE) == TX_RESULT_OK; + success &= InitializeGlobalInteractorSnapshot(hContext); + success &= txRegisterConnectionStateChangedHandler(hContext, &hConnectionStateChangedTicket, OnEngineConnectionStateChanged, NULL) == TX_RESULT_OK; + success &= txRegisterEventHandler(hContext, &hEventHandlerTicket, HandleEvent, NULL) == TX_RESULT_OK; + success &= txEnableConnection(hContext) == TX_RESULT_OK; + + // let the events flow until a key is pressed. + if (success) { + printf("Initialization was successful.\n"); + } else { + printf("Initialization failed.\n"); + } + printf("Press any key to exit...\n"); + _getch(); + printf("Exiting.\n"); + + // disable and delete the context. + txDisableConnection(hContext); + txReleaseObject(&g_hGlobalInteractorSnapshot); + success = txShutdownContext(hContext, TX_CLEANUPTIMEOUT_DEFAULT, TX_FALSE) == TX_RESULT_OK; + success &= txReleaseContext(&hContext) == TX_RESULT_OK; + success &= txUninitializeEyeX() == TX_RESULT_OK; + if (!success) { + printf("EyeX could not be shut down cleanly. Did you remember to release all handles?\n"); + } + + return 0; +} diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.vcxproj b/Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.vcxproj new file mode 100755 index 0000000..fa69b14 --- /dev/null +++ b/Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.vcxproj @@ -0,0 +1,160 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + + + + {6D2CFFFE-00E9-41C8-B389-059DA9AABDFC} + Win32Proj + MinimalEyePositionDataStream + + + + Application + true + v140 + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ..\..\include + + + Console + true + ..\..\lib\x86 + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ..\..\include + + + Console + true + ..\..\lib\x64 + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ..\..\include + + + Console + true + true + true + ..\..\lib\x86 + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + ..\..\include + + + Console + true + true + true + ..\..\lib\x64 + + + + + + + \ No newline at end of file diff --git a/Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.vcxproj.filters b/Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.vcxproj.filters new file mode 100755 index 0000000..eded50f --- /dev/null +++ b/Tobii-EyeX/samples/MinimalEyePositionDataStream/MinimalEyePositionDataStream.vcxproj.filters @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file -- cgit v1.2.3