Value ofaccelerometer

C, C++, and Visual C++
valentino86

Value ofaccelerometer

Postby valentino86 » Mon Apr 06, 2009 2:38 pm

How can I take in a variable the value of the acceleration? I use the accelerometer 3 axis, and I'm seeing the example file.

Code: Select all

#include "stdafx.h"
#include "phidget21.h"
#include <fstream>

using namespace std;

ofstream myfile ("dati.txt",ios::out);

double past_samples[3];

//callback that will run if the Accelerometer is attached to the computer
int __stdcall AttachHandler(CPhidgetHandle IFK, void *userptr)
{
   int serialNo;

   CPhidget_getSerialNumber(IFK, &serialNo);
   printf("Accelerometer %10d attached!\n\n", serialNo);

   return 0;
}

//callback that will run if the Accelerometer is detached from the computer
int __stdcall DetachHandler(CPhidgetHandle IFK, void *userptr)
{
   int serialNo;
   CPhidget_getSerialNumber(IFK, &serialNo);
   printf("Accelerometer %10d detached! \n", serialNo);

   return 0;
}

//callback that will run if the Accelerometer generates an error
int __stdcall ErrorHandler(CPhidgetHandle IFK, void *userptr, int ErrorCode, const char *unknown)
{
   printf("Error handled. %d - %s \n", ErrorCode, unknown);
   return 0;
}

//callback that will run if the acceleration changes by more than the Acceleration trigger.
//Index - Index of the axis that is generating the event, Value - the value read by the accelerometer axis
int __stdcall accel_AccelChangeHandler(CPhidgetAccelerometerHandle WGT, void *userptr, int Index, double Value)
{   
   printf("Axis: %i   %6f\n", Index,);
   
   myfile <<t << " Axis:    "<<Index <<" acceleration:    "<< Value  << '\n';
   
   }

   return 0;
}

//Display the properties of the attached phidget to the screen. 
//We will be displaying the name, serial number, version of the attached device and number of Axes on the accelerometer.
int display_properties(CPhidgetHandle phid)
{
   int serialNo, version;
   const char* ptr;
   int numAxes;
   
   CPhidget_getDeviceType(phid, &ptr);
   CPhidget_getSerialNumber(phid, &serialNo);
   CPhidget_getDeviceVersion(phid, &version);
   CPhidgetAccelerometer_getAxisCount((CPhidgetAccelerometerHandle)phid, &numAxes);

   printf("%s\n", ptr);
   printf("Serial Number: %10d\nVersion: %8d\n", serialNo, version);
   printf("Number of Axes: %i\n", numAxes);
      
   return 0;
}

int accelerometer_simple()
{
   int result, numAxes;
   const char *err;

   
   //Declare an accelerometer handle
   CPhidgetAccelerometerHandle accel = 0;

   //create the accelerometer object
   CPhidgetAccelerometer_create(&accel);

   //Set the handlers to be run when the device is plugged in or opened from software, unplugged or closed from software, or generates an error.
   CPhidget_set_OnAttach_Handler((CPhidgetHandle)accel, AttachHandler, NULL);
   CPhidget_set_OnDetach_Handler((CPhidgetHandle)accel, DetachHandler, NULL);
   CPhidget_set_OnError_Handler((CPhidgetHandle)accel, ErrorHandler, NULL);
   
   //open the acclerometer for device connections
   CPhidget_open((CPhidgetHandle)accel, -1);

   //get the program to wait for an accelerometer device to be attached
   printf("Waiting for accelerometer to be attached.... \n\n");

   if((result = CPhidget_waitForAttachment((CPhidgetHandle)accel, 10000)))
   {
      CPhidget_getErrorDescription(result, &err);
      printf("Problem waiting for attachment: %s\n", err);
      return 0;
   }

   //Display the properties of the attached accelerometer device
   display_properties((CPhidgetHandle)accel);

   //read accelerometer event data
   printf("Reading.....\n\n");

   //get the number of available axes on the attached accelerometer
   CPhidgetAccelerometer_getAxisCount(accel, &numAxes);

   //Most accelerometers have 2 axes so we'll pre-set their sensitivity to make the data more readable
   
   CPhidgetAccelerometer_setAccelerationChangeTrigger(accel, 0, 0.500);
   CPhidgetAccelerometer_setAccelerationChangeTrigger(accel, 1, 0.500);

   //If the accelerometer attached is a 3-axis, we'll set the sensitivity of the 3rd axis
   if(numAxes > 2)
   {
      CPhidgetAccelerometer_setAccelerationChangeTrigger(accel, 2, 0.500);
   }

   //Registers a callback that will run if the acceleration changes by more than the Acceleration trigger.
   //Requires the handle for the Accelerometer, the function that will be called,
   //and an arbitrary pointer that will be supplied to the callback function (may be NULL)
      
   CPhidgetAccelerometer_set_OnAccelerationChange_Handler(accel, accel_AccelChangeHandler, NULL);
   
   getchar();

   //wait until user input is read
   printf("Press any key to end\n");

   //since user input has been read, this is a signal to terminate the program so we will close the phidget and delete the object we created
   printf("Closing...\n");
   CPhidget_close((CPhidgetHandle)accel);
   CPhidget_delete((CPhidgetHandle)accel);

   getchar();

   //all done, exit
   return 0;
}


//main entry point to the program
int _tmain(int argc, _TCHAR* argv[])
{
   accelerometer_simple();   
   return 0;
}


I need only of Value but it's complicated to access.

valentino86

Re: Value ofaccelerometer

Postby valentino86 » Mon Apr 06, 2009 2:40 pm

I need to implement the value of acceleration in a program and I don't know how can I take only this value

valentino86

Re: Value ofaccelerometer

Postby valentino86 » Mon Apr 06, 2009 4:43 pm

when program enters in the int __stdcall accel_AccelChangeHandler it not exit more!!


Return to “C/C++”

Who is online

Users browsing this forum: No registered users and 4 guests