NT-ARSV1 Simple code(not completed)
http://ntrexlab.tistory.com/15
http://backup.ntrex.co.kr/mart7/mall.php?cat=049029000&query=view&no=41925
ARS.cpp
- Committer:
- SWteamofAREC
- Date:
- 2015-03-14
- Revision:
- 0:609146aec0da
File content as of revision 0:609146aec0da:
#include "ARS.h" ARS::ARS(PinName tx,PinName rx) : _ARS(tx,rx) { rollAngle=0; pitchAngle=0; rollVel=0; pitchVel=0; } //생성자 void ARS::set(int baudRate=115200) { _ARS.baud(baudRate); _ARS.printf("<CAH>"); } void ARS::getdata() //데이터를 한줄만 받는다. { char incomingByte=0; int resultValues=0; int consideringMinusSign=1; int selectingValuesFromARS=0; while(true) { incomingByte=_ARS.getc(); // Operation minus sign. if(incomingByte == '-') { consideringMinusSign = -1; } //Operation number type if(incomingByte >= '0' && incomingByte <= '9') { resultValues = resultValues*10 + incomingByte - '0'; } //Operation end of data if(incomingByte == ',' || incomingByte == '>') { resultValues = resultValues * consideringMinusSign; consideringMinusSign = 1; //next calculation, using plus sign selectingValuesFromARS += 1; //increase the var. switch(selectingValuesFromARS) { case 1 : // getting roll angle as degree rollAngle = resultValues * scaleFactorOfARS * rad2degree; break; case 2 : // getting pitch angle as degree pitchAngle = resultValues * scaleFactorOfARS * rad2degree; break; case 3 : // getting roll anglular velocity as degree rollVel = resultValues * scaleFactorOfARS * rad2degree; break; case 4 : // getting pitch anglular velocity as degree pitchVel = resultValues * scaleFactorOfARS * rad2degree; break; } resultValues = 0; //initializing the number. } if (incomingByte == '>') { selectingValuesFromARS +=1; } if (selectingValuesFromARS == 5) { selectingValuesFromARS=0; break; } } } float ARS::getrollangle() { return rollAngle; } float ARS::getpitchangle() { return pitchAngle; } float ARS::getrollvel() { return rollVel; } float ARS::getpitchvel() { return pitchVel; }