111
Dependencies: BufferedSerial FastPWM mbed
commandt.cpp
- Committer:
- sbh9428
- Date:
- 2016-04-12
- Revision:
- 0:f3108add3d98
File content as of revision 0:f3108add3d98:
/*
* 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;
}