Acquire Data C/C++ Code
The following example code is not necessarily complete, and may not compile if copied exactly. Refer to the examples folder on the NI-Motion CD for files that are complete and compile as is.
// Main function void main(void) { u8 boardID; // Board identification number u16 csr = 0; // Communication status register i32 i; u16 axisMap; // Bitmap of axes for which data is requested i32 axis1Positions[200]; // Array to store the positions (1) i32 axis1Velocities[200]; // Array to store velocities (1) i32 axis2Positions[200]; // Array to store the positions (2) i32 axis2Velocities[200]; // Array to store velocities (2) u16 numSamples = 200; // Number of samples i32 returnData[4]; // Need size of 4 for 2 axes worth of data // Variables for modal error handling u16 commandID; // The commandID of the function u16 resourceID; // The resource ID i32 errorCode; // Error code /////////////////////////////// // Set the board ID boardID= 1; // Axes whose data needs to be acquired axisMap = ((1<<1) | (1<<2)); // Axis 1 and axis 2 //////////////////////////////// err = flex_acquire_trajectory_data(boardID, axisMap, numSamples, 3/* ms time period*/); CheckError; for(i=0; i<numSamples; i++){ Sleep (10); // Check every 10 ms and give time for the data // to be copied to onboard FIFO // Read the trajectory data err = flex_read_trajectory_data_rtn(boardID, returnData); CheckError; // Two axes worth of data is read every sample axis1Positions[i] = returnData[0]; axis1Velocities[i] = returnData[1]; axis2Positions[i] = returnData[2]; axis2Velocities[i] = returnData[3]; } return; // Exit the Application ///////////////////////////////////////////////////////////////////////// // Error Handling // nimcHandleError; //NIMCCATCHTHIS: // Check to see if there were any Modal Errors if (csr & NIMC_MODAL_ERROR_MSG){ do{ // Get the command ID, resource and the error code of the modal // error from the error stack on the board flex_read_error_msg_rtn(boardID,&commandID,&resourceID,&errorCode); nimcDisplayError(errorCode,commandID,resourceID); // Read the Communication Status Register flex_read_csr_rtn(boardID,&csr); }while(csr & NIMC_MODAL_ERROR_MSG); } else // Display regular error nimcDisplayError(err,0,0); return; // Exit the Application }