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; }