int CVICALLBACK GETHEADTRACKERDATA (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { static char pathname[MAX_PATHNAME_LEN], dirname[MAX_PATHNAME_LEN]; int status; int fileFlag; int user_seln; if (event == EVENT_COMMIT) { HidePanel(panel2); GetCtrlVal (panel2, PANEL_2_SAVEDATA, &fileFlag); if (fileFlag) /*Save data is fileFlag is enabled*/ { GetProjectDir (dirname); status = FileSelectPopup (dirname, "datafile.txt", "Datafiles (*.txt)", "DataFile Storage", VAL_SAVE_BUTTON, 0, 1, 1, 1, pathname); datafilestream = fopen (pathname, "w+"); } /* Start getting data */ birdStartFrameStream(GROUP_ID); do /* Until Keypress */ { if(birdFrameReady(GROUP_ID)) /* Check if there's data available */ { BIRDREADING *bird_data; /* Moves data into structure*/ birdGetMostRecentFrame(GROUP_ID,&frame); /* Reads data from bird */ bird_data = &frame.reading[0]; /* Sets pointer to bird 0 */ pos[0] = bird_data->position.nX * 36 / 32767.; /* Convert data into inches and degrees*/ pos[1] = bird_data->position.nY * 36 / 32767.; /*and scale */ pos[2] = bird_data->position.nZ * 36 / 32767.; ang[0] = bird_data->angles.nAzimuth * 180. / 32767.; ang[1] = bird_data->angles.nElevation * 180. / 32767.; ang[2] = bird_data->angles.nRoll * 180. / 32767.; printf("%+6.1f %+6.1f %+6.1f ",pos[0], pos[1], pos[2]); /* print data */ printf("%+6.1f %+6.1f %+6.1f \n",ang[0], ang[1], ang[2]); if(fileFlag) { fprintf(datafilestream,"%+6.1f %+6.1f %+6.1f ",pos[0], pos[1], pos[2]); /* print data to file */ fprintf(datafilestream,"%+6.1f %+6.1f %+6.1f \n",ang[0], ang[1], ang[2]); GetCtrlVal (mpanel, MPANEL_DATAFLOW, &user_seln); } } /* end if frame ready routine */ }while(user_seln=1); /* loop until selection is 1*/ printf("\n End of data\n"); birdStopFrameStream(GROUP_ID); /*Stops streaming of bird data frames*/ birdShutDown(GROUP_ID); } return 0; }