Home Forums Software Development Tobii EyeX Controller & LabView2013

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #1100
    Nicklas Ennab
    Participant

    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

    #1110
    Jenny [Tobii]
    Participant

    Hi 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.

    #1115
    Nicklas Ennab
    Participant

    Hi 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

    #1121
    Anders
    Participant

    Hi 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.)

    #1137
    Nicklas Ennab
    Participant

    Hello 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

    #1500
    Hamish MacDougall
    Participant

    Hello, just wondering how you got on with this connection between the EyeX and LabView? Very keen to hear any updates. Thanks, Hamish

    #1501
    Nicklas Ennab
    Participant

    Hi 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

    #1502
    Anders
    Participant

    Hi, just to make sure you know about it: most of the macros were removed from the header files starting with SDK version 0.23.

    #1504
    Nicklas Ennab
    Participant

    Okey, thx Anders wasn’t aware of specifics in the 0.23-version. Will dl and have a look at it right away!
    🙂

    #2006
    Joshua Haworth
    Participant

    Hi 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,
    Josh

    #2018
    Anders
    Participant

    Hi 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!

    #6808
    Simon Poland
    Participant

    Hi 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

Viewing 12 posts - 1 through 12 (of 12 total)
  • You must be logged in to reply to this topic.