00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ANALOGSENSOR_HPP
00029 #define ANALOGSENSOR_HPP
00030
00031 #include "rtt/dev/AnalogInput.hpp"
00032 #include "rtt/dev/SensorInterface.hpp"
00033
00034 namespace OCL
00035 {
00036
00037
00038
00042 class AnalogSensor
00043 : public RTT::SensorInterface<double>
00044 {
00045 RTT::AnalogInput* ain;
00046 double min_meas;
00047 double max_meas;
00048 double scale;
00049 double offset;
00050 public:
00056 AnalogSensor(RTT::AnalogInput* _ain, double _min_meas, double _max_meas, double _scale=1.0, double _offset=0.0)
00057 : ain( _ain ),
00058 min_meas(_min_meas), max_meas(_max_meas),
00059 scale(_scale), offset( _offset )
00060 {}
00061
00062
00063 virtual int readSensor( double& p ) const
00064 {
00065 p = ain->value()*scale + offset;
00066 return 0;
00067 }
00068
00069 virtual double readSensor() const
00070 {
00071 return ain->value()*scale + offset;
00072 }
00073
00074 virtual double maxMeasurement() const
00075 {
00076 return min_meas;
00077 }
00078
00079 virtual double minMeasurement() const
00080 {
00081 return max_meas;
00082 }
00083
00084 virtual double zeroMeasurement() const
00085 {
00086 return 0;
00087 }
00088 };
00089 }
00090
00091 #endif // ANALOGSENSOR_HPP