00001 ////////////////////////////////////////////////////////////////////////////////////////////////// 00002 /*! \file LinearActuator.cpp 00003 * \Implementation of the LinearActuator class 00004 * \author $Author: bwilliam $ 00005 * \version $Revision: 1.4 $ 00006 * \date $Date: 2006/06/27 15:24:31 $ 00007 *////////////////////////////////////////////////////////////////////////////////////////////////// 00008 /*! 00009 */ 00010 ////////////////////////////////////////////////////////////////////////////////////////////////// 00011 00012 00013 00014 #include "LinearActuator.h" 00015 #include <Utils/Misc.h> 00016 #include <Utils/CfgParse.h> 00017 00018 ////////////////////////////////////////////////// 00019 // Contructors/Deconstructors // 00020 ////////////////////////////////////////////////// 00021 00022 LinearActuator::LinearActuator() 00023 { 00024 } 00025 00026 LinearActuator::~LinearActuator() 00027 { 00028 } 00029 00030 ////////////////////////////////////////////////// 00031 // Facilitators // 00032 ////////////////////////////////////////////////// 00033 00034 int LinearActuator::TravelDistanceLimits(double Param_Distance) 00035 { 00036 m_PhysicalLinearActuator.TravelDistance(Param_Distance); 00037 /*we may want to make this so that the hard limit is not ever truely reached*/ 00038 00039 return (0); 00040 } 00041 00042 int LinearActuator::TravelDistanceChecks(double Param_Distance) 00043 { 00044 double currentposition=m_PhysicalLinearActuator.QueryCurrentPosition(); 00045 00046 if (Param_Distance >0) 00047 {if ((Param_Distance+currentposition) > m_PhysicalLinearActuator.UpperLimit) 00048 {cout << "The distance is too great (positive)"; 00049 } 00050 else 00051 {m_PhysicalLinearActuator.TravelDistance(Param_Distance); 00052 } 00053 } 00054 else 00055 {if ((Param_Distance+currentposition) < m_PhysicalLinearActuator.LowerLimit) 00056 {cout << "The distance is too great (negative)"; 00057 } 00058 else 00059 {m_PhysicalLinearActuator.TravelDistance(Param_Distance); 00060 } 00061 } 00062 00063 return (0); 00064 } 00065 00066 00067 int LinearActuator::TravelPosition(double Param_Position) 00068 { 00069 m_PhysicalLinearActuator.TravelPosition(Param_Position); 00070 00071 return (0); 00072 } 00073 00074 int LinearActuator::SetVelocity(double velocity) 00075 { 00076 int error= m_PhysicalLinearActuator.SetVelocity(velocity); 00077 return error; 00078 } 00079 00080 int LinearActuator::StartJog(int direction) 00081 { 00082 int error = m_PhysicalLinearActuator.StartJog(direction); 00083 return error; 00084 } 00085 00086 int LinearActuator::Stop() 00087 { 00088 int error =m_PhysicalLinearActuator.Stop(); 00089 return error; 00090 } 00091 00092 int LinearActuator::Initialize(int Action, char *port) 00093 { 00094 int error=m_PhysicalLinearActuator.Initialize(Action, port); 00095 return error; 00096 } 00097 00098 int LinearActuator::Deinitialize() 00099 { 00100 m_PhysicalLinearActuator.Deinitialize(); 00101 return 0; 00102 } 00103 00104 00105 ////////////////////////////////////////////////// 00106 // Inspectors // 00107 ////////////////////////////////////////////////// 00108 00109 00110 double LinearActuator::GetCurrentPosition() 00111 { 00112 m_CurrentPosition=m_PhysicalLinearActuator.QueryCurrentPosition(); 00113 return m_CurrentPosition; 00114 } 00115 00116 // Do not change the comments below - they will be added automatically by CVS 00117 /***************************************************************************** 00118 * $Log: LinearActuator.cpp,v $ 00119 * Revision 1.4 2006/06/27 15:24:31 bwilliam 00120 * Added jog functions. Added port file name argument to initialization function. 00121 * 00122 * 00123 * 00124 * 00125 ****************************************************************************/ 00126