Home › Forums › Software Development › Tobii EyeX Controller & LabView2013
Tagged: Header File, LabView2013, Tobii.EyeX.Client.dll
- This topic has 11 replies, 6 voices, and was last updated 7 years, 6 months ago by Simon Poland.
- AuthorPosts
- 04/06/2014 at 15:35 #1100Nicklas EnnabParticipant
Trying to connect the Tobii EyeX Controller with LabView2013.
In order to initialize the EyeX Controller to LV2013, the Tobii.EyeX.Client.dll is integrated using LV2013’s Call Library Function Node.http://zone.ni.com/reference/en-XX/help/371361K-01/glang/call_library_function
Access to the header file is obviously crucial to gaining insight to specific functions of the Tobii.EyeX.Client.dll (which seems to be required by LV2013).
1) Is there a header file for the above mentioned .dll available in the SDK?
2) Is there any documentation provided regarding the Tobii.EyeX.Client.dll function library?Also, warmly welcoming tips&trix in general using LV2013 with the EyeX Controller.
/Nicklas
05/06/2014 at 11:56 #1110Jenny [Tobii]ParticipantHi Nicklas,
Regarding the Tobii.EyeX.Client.dll there are documented header files, C and C++ samples and a Developer’s Guide included in the EyeX SDK for C/C++.
The “Minimal…”-samples are pure C and show how a connection is set up from a client application to the EyeX Engine, and also how data streams and status notifications are set up.
The C++ samples exemplifies the EyeX Activatable behavior, and how the Query-Snapshot handling can be implemented using a repository of interactors on the client side.
The Developer’s Guide explains the concepts used in the API, such as interactor, behavior, query, snapshot, event and so forth.
05/06/2014 at 15:26 #1115Nicklas EnnabParticipantHi Jenny and thanks for your quick response. Yes, I have included the EyeXClient header file when initializing the EyeX controller to LV2013.
The main issue for Call Library Function Node (CLFN) in LV2013 is the following:
“The shared library contains 473 function(s). But no function is found and recognized in the header file. The following function(s) cannot be wrapped.”When inspecting, for example, the Create Context() the CLFN states:
TX_API_FUNCTION(CreateContext,(
TX_OUT_PARAM(TX_CONTEXTHANDLE) phContext,
TX_BOOL trackObjects
));Undefined symbols can prevent the wizard from recognizing functions and parameters. To correct this problem, check the header file to determine if you must add preprocessor definitions. Click the Back button to return to the previous page of the wizard to add a preprocessor definitionsl (for example, “NIAPI_stdcall = __stdcall” or “NIAPIDefined = 1”).
__TOBII_TX_CLIENT_API__H__;I have a hard time finding (for instance) TX_BOOL when using search function. It is embedded in the .dll I guess?
This might be questions that should be directed to NI support, but I wanted to give it a shot and formulate the question in this forum to begin with.
What do you think is the problem here?Also, big thanks for the support and service! 🙂
/N
09/06/2014 at 08:40 #1121AndersParticipantHi Nicklas,
the EyeX header files use a lot of C macros and my guess is that the LabView CLFN doesn’t understand how to make sense of them. For example, the definition of the create context function expands to this:__declspec(dllimport) TX_RESULT __cdecl txCreateContext(
TX_CONTEXTHANDLE* phContext,
TX_BOOL trackObjects);We’re planning on removing those macros in a future SDK release but — as usual — there are also other things waiting to be done. In the mean time you can try running the header files through a C pre-processor if you have access to a C/C++ compiler. That should give you an output file with all macros expanded. I tried this command using the Visual Studio C/C++ compiler and it seemed to work well:
cl.exe /P /DWIN32 EyeX.h
(Or, if you don’t have access to a compiler, let me know and we’ll think of something.)
10/06/2014 at 11:44 #1137Nicklas EnnabParticipantHello Anders, yes I use Visual Studio 2013, and your alternative was actually my plan B. Thanks for actually performing compilation and confirming it to me, much appreciated!!
Looking fwd to sharing my LV-projects here in Dev. Zone and keep you updated on progress!
Big thanks!
/Nicklas
14/08/2014 at 03:36 #1500Hamish MacDougallParticipantHello, just wondering how you got on with this connection between the EyeX and LabView? Very keen to hear any updates. Thanks, Hamish
14/08/2014 at 09:58 #1501Nicklas EnnabParticipantHi Hamish,
I unfortunately had to prioritize other dev. tasks during summer but in fact picked up the EyeX/LV-project again last week.
Due to overwhelming obstacles in transforming the .dll in the SDK C/C++, I found the .net SDK was much easier to implement in LV with the use of “call library function node”.
With that said, i have started to build the architecture in LV and hopefully will have the time to focus on this so I can present results within a not too far distant future.What is your aim in EyeX and LV?
/Nicklas
15/08/2014 at 07:47 #1502AndersParticipantHi, just to make sure you know about it: most of the macros were removed from the header files starting with SDK version 0.23.
15/08/2014 at 10:35 #1504Nicklas EnnabParticipantOkey, thx Anders wasn’t aware of specifics in the 0.23-version. Will dl and have a look at it right away!
🙂12/11/2014 at 14:37 #2006Joshua HaworthParticipantHi all,
I am hoping to know if there are any updates (or plans) for an EyeX custom LV palette? I have tried (as mentioned above) to use the “call library function node”, but I think I am not quite there yet knowing how to do this correctly. Plus, it would be kinda sweet to have a dedicated palette to work with 🙂 Is Tobii interested in providing this? If it is simple (but redundant) to produce, I would be happy to do the work with guidance.
Cheers,
Josh14/11/2014 at 16:53 #2018AndersParticipantHi Joshua,
I’m sorry to say that we’re not planning on supporting LV anytime in the near future: the user base is simply too small compared to other environments.But after discussing LV support with a more LV-savvy colleague for a while, we came to the conclusion that the way to go is to write a “proxy dll” for LV. The proxy should expose a simpler API, perhaps only with a function to read the X and Y coordinates of the gaze point. Because when you use the raw EyeX C API, you need a bit of boilerplate code, and that’s just too much work to write in LV. You could use the MinimalGazeDataStream sample as a starting point.
If you’re willing to try to build something like this and share it with the community then that would be great!
07/05/2017 at 21:40 #6808Simon PolandParticipantHi all,
just came across this feed. I was wondering if anyone had developed any labview code since the last post to access the functionality of the EyeX? Any help you can give me would be greatly appreciated.
Thank you in advance and all the best,
Simon - AuthorPosts
- You must be logged in to reply to this topic.