111
Dependencies: BufferedSerial FastPWM mbed
Diff: commandt.cpp
- Revision:
- 0:f3108add3d98
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commandt.cpp Tue Apr 12 06:52:10 2016 +0000 @@ -0,0 +1,146 @@ +/* + * commandt.cpp + * + * Created on: 2016. 2. 19. + * Author: sbh9428 + */ + +#include "commandt.h" + +command_t::command_t() { + // TODO Auto-generated constructor stub + +} + +command_t::command_t(BufferedSerial* _pc, control_t* _control) +{ + time=0; + count=0; + control=_control; + pc=_pc; +} + +command_t::~command_t() { + // TODO Auto-generated destructor stub +} + +void command_t::clear_data() +{ + for(int i=0;i<10;i++) + { + data[i]=0; + } +} +void command_t::parse() +{ + switch(data[0]) + { + case 's': + switch(data[1]) + { + case 'm': + control->setMode(data[2]-'0'); + printf("set mode %d\n", data[2]-'0'); + break; + case 'p': + control->setP(asci_to_bin(data+2)); + printf("set P %f1.5\n", asci_to_bin(data+2)); + break; + case 'i': + control->setI(asci_to_bin(data+2)); + printf("set I %f\n", asci_to_bin(data+2)); + break; + case 'd': + control->setD(asci_to_bin(data+2)); + printf("set D %f\n", asci_to_bin(data+2)); + break; + case 'o': + control->setPower(asci_to_bin(data+2)); + printf("set I value %f\n", asci_to_bin(data+2)); + break; + case 'a': + control->setRatio(asci_to_bin(data+2)); + printf("set Ratio %f\n", asci_to_bin(data+2)); + break; + } + break; + case 'g': + switch(data[1]) + { + case 'm': + printf("mode is %d\n", control->getMode()); + break; + case 'p': + printf("P is %f\n", control->getP()); + break; + case 'i': + printf("I is %f\n", control->getI()); + break; + case 'd': + printf("D is %f\n", control->getD()); + break; + case 'o': + printf("power is %f\n", control->getPower()); + break; + case 'a': + printf("ratio is %f\n", control->getRatio()); + break; + } + + break; + dafault: + pc->printf("command error"); + } + pc->printf("\n"); + count=0; +} + +void command_t::get_data() +{ + data [count]=pc->getc(); + + if(data [count]=='f') + parse(); + else + count++; + + if(count>9) + { + count=0; + pc->printf("command error\n"); + } +} + +double command_t::asci_to_bin(int *start) +{ + double _data=0; + int current=0; + + double nth=1; //�ڸ��� + int mode=0; + int sign=1; + + if(*start=='-') + { + current++; + sign=-1; + } + while(*(start+current)!='f'&&*(start+current)!='.') + { + _data*=10; + _data+=*(start+current)-'0'; + + current++; + } + if(*(start+current)=='.') + { + current++; + while(*(start+current)!='f') + { + nth/=10; + _data+=nth*(*(start+current)-'0'); + current++; + } + } + return sign*_data; +}