sensor.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #ifndef SONSOR_DEF_H
  2. #define SONSOR_DEF_H
  3. namespace algorithm{
  4. namespace base{
  5. //传感器类
  6. template<class T>
  7. class Sensor{
  8. public:
  9. Sensor(){
  10. value = 0;
  11. };
  12. virtual ~Sensor(){};
  13. protected:
  14. T value;
  15. public:
  16. virtual T& GetValue(){return value;};
  17. virtual void SetValue(const T& val){
  18. this->value = val;
  19. }
  20. };
  21. //加速度计
  22. template<class T>
  23. class Accelerometer:public Sensor<T>{
  24. public:
  25. Accelerometer(){
  26. x = y = z = value = 0;
  27. };
  28. Accelerometer(const T& x,const T& y,const T& z){
  29. this->x = x;
  30. this->y = y;
  31. this->z = z;
  32. value = 0;
  33. };
  34. ~Accelerometer(){};
  35. private:
  36. T x;
  37. T y;
  38. T z;
  39. T value;
  40. public:
  41. T& getX(){return x;}
  42. void setX(const T& v){this->x = v;}
  43. T& getY(){return y;}
  44. void setY(const T& v){this->y = v;}
  45. T& getZ(){return z;}
  46. void setZ(const T& v){this->z = v;}
  47. virtual void SetValue(const T& val){
  48. value = val;
  49. }
  50. virtual T& GetValue(){
  51. return value;
  52. };
  53. };
  54. //磁感应计
  55. template<class T>
  56. class MagneticSensor:public Sensor<T>{
  57. public:
  58. MagneticSensor(){};
  59. ~MagneticSensor(){};
  60. };
  61. //陀螺仪
  62. template<class T>
  63. class Gyroscope:public Sensor<T>{
  64. public:
  65. Gyroscope(){
  66. value = 0;
  67. }
  68. ~Gyroscope(){}
  69. private:
  70. T value;
  71. public:
  72. virtual T& GetValue(){return value;};
  73. virtual void SetValue(const T& val){
  74. this->value = val;
  75. }
  76. };
  77. };
  78. };
  79. #endif