dd
Dependencies: BufferedSerial FastAnalogIn FastPWM mbed SHT75
commandt.cpp
- Committer:
- sbh9428
- Date:
- 2016-07-11
- Revision:
- 10:c751a0e8b7f9
- Parent:
- 4:7ca449fca19b
File content as of revision 10:c751a0e8b7f9:
/* * 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; pc->baud(115200); } 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->set_mode(data[2]-'0'); printf("set mode %d\n", data[2]-'0'); break; case 'r': control->control_PWM(asci_to_bin(data+2)); control->set_PWM_value(asci_to_bin(data+2)); printf("set PWM duty ratio %f1.5\n", asci_to_bin(data+2)); break; case 't': control->set_target_temp(asci_to_bin(data+2)); printf("set target temp %f\n", asci_to_bin(data+2)); break; case 'p': control->set_P_value(asci_to_bin(data+2)); printf("set P value %f\n", asci_to_bin(data+2)); break; case 'i': control->set_I_value(asci_to_bin(data+2)); printf("set I value %f\n", asci_to_bin(data+2)); break; case 'd': control->set_D_value(asci_to_bin(data+2)); printf("set D value %f\n", asci_to_bin(data+2)); break; case 'e': control->set_period((int)asci_to_bin(data+2)); printf("set period %d\n", (int)asci_to_bin(data+2)); break; case 'h': control->highTemp=asci_to_bin(data+2); printf("set high temp %2.2f\n", asci_to_bin(data+2)); break; case 'l': control->lowTemp=asci_to_bin(data+2); printf("set low temp %2.2f\n", asci_to_bin(data+2)); break; case 'a': control->highTempTime=(int)asci_to_bin(data+2); printf("set high temp time%d\n", (int)asci_to_bin(data+2)); break; case 'b': control->lowTempTime=(int)asci_to_bin(data+2); printf("set low temp %d\n", (int)asci_to_bin(data+2)); break; case 'o': control->periodNumber=(int)asci_to_bin(data+2); printf("set period repeat number %d \n", (int)asci_to_bin(data+2)); break; default: pc->printf("command error"); } break; case 'g': switch(data[1]) { case 'm': printf("mode is %d\n", control->get_mode()); break; case 'r': printf("duty ratio is %f\n", control->get_PWM_value()); break; case 't': printf("target temp is %f\n", control->get_target_temp()); break; case 'p': printf("P value is %f\n", control->get_P_value()); break; case 'i': printf("I value is %f\n", control->get_I_value()); break; case 'd': printf("D value is %f\n", control->get_P_value()); break; case 'e': printf("Period is %d\n", control->get_period()); break; case 'a': control->print_table(); break; default: pc->printf("command error"); } 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"); } } void command_t::refreshPWM() { time=time+3; control->refresh_PWM(); } 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; }