Home › Forums › Software Development › Headtracking on Tobii eye tracker 4C › Reply To: Headtracking on Tobii eye tracker 4C
23/12/2017 at 23:34 #7729
Grant [Tobii]
Keymaster
Hi @chouweizhong @kenbo, apologies for the delay in reply, I have tried to run the sample code:
#include <tobii/tobii_streams.h>
#include <stdio.h>
#include <assert.h>
void head_pose_callback( tobii_head_pose_t const* head_pose, void* user_data )
{
if( head_pose->position_validity == TOBII_VALIDITY_VALID )
printf( "Position: (%f, %f, %f)\n",
head_pose->position_xyz[ 0 ],
head_pose->position_xyz[ 1 ],
head_pose->position_xyz[ 2 ] );
printf( "Rotation:\n" );
for( int i = 0; i < 3; ++i )
if( head_pose->rotation_validity_xyz[ i ] == TOBII_VALIDITY_VALID )
printf( "%f\n", head_pose->rotation_xyz[ i ] );
}
static void url_receiver( char const* url, void* user_data )
{
char* buffer = (char*)user_data;
if( *buffer != '\0' ) return; // only keep first value
if( strlen( url ) < 256 )
strcpy( buffer, url );
}
int main()
{
tobii_api_t* api;
tobii_error_t error = tobii_api_create( &api, NULL, NULL );
assert( error == TOBII_ERROR_NO_ERROR );
char url[ 256 ] = { 0 };
error = tobii_enumerate_local_device_urls( api, url_receiver, url );
assert( error == TOBII_ERROR_NO_ERROR && *url != '\0' );
tobii_device_t* device;
error = tobii_device_create( api, url, &device );
assert( error == TOBII_ERROR_NO_ERROR );
error = tobii_head_pose_subscribe( device, head_pose_callback, 0 );
assert( error == TOBII_ERROR_NO_ERROR );
int is_running = 1000; // in this sample, exit after some iterations
while( --is_running > 0 )
{
error = tobii_wait_for_callbacks( NULL, 1, &device );
assert( error == TOBII_ERROR_NO_ERROR || error == TOBII_ERROR_TIMED_OUT );
error = tobii_device_process_callbacks( device );
assert( error == TOBII_ERROR_NO_ERROR );
}
error = tobii_head_pose_unsubscribe( device );
assert( error == TOBII_ERROR_NO_ERROR );
error = tobii_device_destroy( device );
assert( error == TOBII_ERROR_NO_ERROR );
error = tobii_api_destroy( api );
assert( error == TOBII_ERROR_NO_ERROR );
return 0;
}
The only issue I found was that I needed to add:
#include <string.h>
And therafter worked well using my Tobii Eye Tracker 4C in conjunction
with Visual Studio 2015 after installing both the NuGet Tobii Stream packages.
I assume the above mentioned code was the one you referred?
If you could kindly provide more detail with respect to your IDE I can
try to reproduce your error. Many thanks.
Did you try running the headtracking samples with the Interaction API?