Beispiel #1
0
int main()
{
	int ret = 0;
	int dev = 0;
	int modId = 12;
	int numOfModules = 0;

	float pos = 0.04;
	float vel = 1.0;
	float acc = 1.0;
	char pInitString[] = "RS232:1,9600";

	unsigned long state = 0;

	PCube_setDllDebug(1, 0, 0);

	std::cout << "Attempting to open device: " << pInitString << std::endl;

	ret = PCube_openDevice( &dev, pInitString );
	if( ret != 0 )
	{
		std::cout << "Unable to open device: " << pInitString << ". Error " << ret << std::endl;
		return -1;
	}

	//std::cout << "Scanning for Devices." << std::endl;
	numOfModules = PCube_getModuleCount( dev );
	std::cout << "Found " << numOfModules << " PowerCubes\n" << std::endl;

	std::cout << "Homing module: " << modId << std::endl;
	ret = PCube_homeModule( dev, modId );
	ret = PCube_waitForHomeEnd(dev, modId, 1e6);
	if( ret != 0 )
	{
		std::cout << "Unable to home module: " << modId << ". Error " << ret << std::endl;
		//return -1;
	}
	do
	{
		ret = PCube_getModuleState( dev, modId, &state );
		if( ret != 0 )
		{
			std::cout << "Unable to get device state: " << modId << ". Error " << ret << std::endl;
			return -1;
		}
	} while( !(state & STATEID_MOD_HOME) );
	ret = PCube_moveRamp( dev, modId, pos, vel, acc );
	if( ret != 0 )
	{
		std::cout << "Unable to move module: " << modId << ". Error " << ret << std::endl;
		return -1;
	}
	ret = PCube_closeDevice( dev );
	if( ret != 0 )
	{
		std::cout << "Unable to close device: " << pInitString << ". Error " << ret << std::endl;
		return -1;
	}
	return 0;
}
/*
 * \brief Destructor
 */
PowerCubeCtrl::~PowerCubeCtrl()
{
	  if (m_CANDeviceOpened)
	  {
		  pthread_mutex_lock(&m_mutex);
		  PCube_closeDevice(m_DeviceHandle);
		  pthread_mutex_unlock(&m_mutex);
	  }
}
HermesInterface::~HermesInterface()
{
	if(dev==0)
	{
		PCube_closeDevice(dev);
	}


}
  /** The Destructor
   */
PowerCubeCtrl::~PowerCubeCtrl()
{
  if (m_CANDeviceOpened)
  {
    pthread_mutex_lock(&m_mutex);
    //std::cout << "------------------------------> PCube_closeDevice()" << std::endl;
    PCube_closeDevice(m_DeviceHandle);
    pthread_mutex_unlock(&m_mutex);
  }
}
bool PowerCubeCtrl::Close()
{
  if (m_CANDeviceOpened)
  {
    m_Initialized = false;
    m_CANDeviceOpened = false;

    pthread_mutex_lock(&m_mutex);
    PCube_closeDevice( m_DeviceHandle);
    pthread_mutex_unlock(&m_mutex);

    return true;
  }
  else
  {
    return false;
  }
}