Spatial Sensor Error

C, C++, and Visual C++
Hobgoblin
Fresh meat
Posts: 2
Joined: Sun Oct 23, 2016 7:15 am
Contact:

Spatial Sensor Error

Postby Hobgoblin » Sun Oct 23, 2016 7:28 am

Hello Everyone,

I've just got my hands on a Phidgets Spatial 3/3/3 and began to play around with it, I'm trying to create a class that will encapsulate it somewhat and clean up my main method. I'm relatively new to C++ and am having trouble figuring out where I've gone wrong.

Visual Studio is giving me the following errors

https://i.imgur.com/GfUMyaB.png

If anyone could give me a hand I would really appreciate it.

Thanks!

SpatialSensor.h

Code: Select all

#pragma once
#include <phidget21.h>
#include <iostream>

class SpatialSensor {

   CPhidgetSpatialHandle spatial = nullptr;

   int CCONV attachHandler(CPhidgetHandle spatial, void *userPtr);
   int CCONV detachHandler(CPhidgetHandle spatial, void *userPtr);
   int CCONV errorHandler(CPhidgetHandle spatial, void *userPtr, int errorCode, const char *unknown);
   int CCONV dataHandler(CPhidgetSpatialHandle spatial, void *userPtr, CPhidgetSpatial_SpatialEventDataHandle *data, int dataPackets);

   void Terminate();

public:

   double acceleration[3] = { 0.0 };
   double angularRate[3] = { 0.0 };
   double magneticField[3] = { 0.0 };

   int Initialize();

};


SpatialSensor.cpp

Code: Select all

#include "SpatialSensor.h"

int SpatialSensor::attachHandler(CPhidgetHandle spatial, void* userPtr)
{
   int serialNo;
   CPhidget_getSerialNumber(spatial, &serialNo);
   std::cout << "Spatial " << serialNo << " attatched!" << std::endl;
   return 0;
}

int SpatialSensor::detachHandler(CPhidgetHandle spatial, void* userPtr)
{
   int serialNo;
   CPhidget_getSerialNumber(spatial, &serialNo);
   std::cout << "Spatial " << serialNo << " detatched!" << std::endl;
   return 0;
}

int SpatialSensor::errorHandler(CPhidgetHandle spatial, void* userPtr, int errorCode, const char* unknown)
{
   std::cout << "Error: " << errorCode << std::endl;
   return 0;
}

int SpatialSensor::dataHandler(CPhidgetSpatialHandle spatial, void* userPtr, CPhidgetSpatial_SpatialEventDataHandle* data, int dataPackets)
{
   for (auto i = 0; i < dataPackets; i++)
   {
      for(int j = 0; j <= 2; ++j)
      {
         acceleration[j] = data[i]->acceleration[j];
         angularRate[j] = data[i]->angularRate[j];
         magneticField[j] = data[i]->magneticField[j];
      }
   }
   return 0;
}

void SpatialSensor::Terminate()
{
   CPhidget_close((CPhidgetHandle)spatial);
   CPhidget_delete((CPhidgetHandle)spatial);
}

int SpatialSensor::Initialize()
{
   int result;
   const char *err;

   CPhidgetSpatial_create(&spatial);

   CPhidget_set_OnAttach_Handler((CPhidgetHandle)spatial, attachHandler, NULL);
   CPhidget_set_OnDetach_Handler((CPhidgetHandle)spatial, detachHandler, NULL);
   CPhidget_set_OnError_Handler((CPhidgetHandle)spatial, errorHandler, NULL);
   CPhidgetSpatial_set_OnSpatialData_Handler(spatial, dataHandler, NULL);

   CPhidget_open((CPhidgetHandle)spatial, -1);

   if ((result = CPhidget_waitForAttachment((CPhidgetHandle)spatial, 0)))
   {
      return 0;
   }

   CPhidgetSpatial_setDataRate(spatial, 16);

   return 1;
}


Main.cpp

Code: Select all

#include "SpatialSensor.h"

int main(int argc, char* argv[])
{
   SpatialSensor Sensor;
   if(!Sensor.Initialize())
   {
      return 1;
   }

   // Do stuff

   return 0;
}

Hobgoblin
Fresh meat
Posts: 2
Joined: Sun Oct 23, 2016 7:15 am
Contact:

Re: Spatial Sensor Error

Postby Hobgoblin » Sun Oct 23, 2016 9:03 am

It seems the handler methods needed to be static! :o


Return to “C/C++”

Who is online

Users browsing this forum: No registered users and 2 guests