Last commit 19 Oct 2010
Description: Position module
PositionModule.cpp
00001 #include "PositionModule.h" 00002 #include "Point.h" 00003 00004 PositionModule::PositionModule(PinName tx, PinName rx):_mouse(tx,rx) { 00005 _mouse.frequency(100000); 00006 } 00007 00008 long PositionModule::getX() { 00009 updatePosition(); 00010 return -_ypos; 00011 } 00012 00013 long PositionModule::getY() { 00014 updatePosition(); 00015 return -_xpos; 00016 } 00017 00018 void PositionModule::setZero() { 00019 char cmd[1] = {2}; 00020 _mouse.write(4,cmd,1); 00021 } 00022 00023 long PositionModule::getDistance() { 00024 updatePosition(); 00025 return sqrt((long double)(getX()*getX())+(getY()*getY())); 00026 } 00027 00028 float PositionModule::getHeading() { 00029 return Point::XYToDegrees(Point(0,0),Point(getX(),getY())); 00030 } 00031 00032 void PositionModule::updatePosition() { 00033 char * buf = new char[8]; 00034 char cmd[1] = {3}; 00035 _mouse.read(5,buf,8); 00036 _mouse.write(4,cmd,1); 00037 _xpos = (long)((buf[0] << 24) + (buf[1] << 16) + ( buf[2] << 8) + buf[3]); 00038 _ypos = (long)((buf[4] << 24) + (buf[5] << 16) + ( buf[6] << 8) + buf[7]); 00039 wait(0.1); 00040 }
