dd
Dependencies: BufferedSerial FastAnalogIn FastPWM mbed SHT75
commandt.cpp
00001 /* 00002 * commandt.cpp 00003 * 00004 * Created on: 2016. 2. 19. 00005 * Author: sbh9428 00006 */ 00007 00008 #include "commandt.h" 00009 00010 command_t::command_t() { 00011 // TODO Auto-generated constructor stub 00012 00013 } 00014 00015 command_t::command_t(BufferedSerial* _pc, control_t* _control) 00016 { 00017 time=0; 00018 count=0; 00019 control=_control; 00020 pc=_pc; 00021 pc->baud(115200); 00022 } 00023 00024 command_t::~command_t() { 00025 // TODO Auto-generated destructor stub 00026 } 00027 00028 void command_t::clear_data() 00029 { 00030 for(int i=0;i<10;i++) 00031 { 00032 data[i]=0; 00033 } 00034 } 00035 void command_t::parse() 00036 { 00037 switch(data[0]) 00038 { 00039 case 's': 00040 switch(data[1]) 00041 { 00042 case 'm': 00043 control->set_mode(data[2]-'0'); 00044 printf("set mode %d\n", data[2]-'0'); 00045 break; 00046 case 'r': 00047 control->control_PWM(asci_to_bin(data+2)); 00048 control->set_PWM_value(asci_to_bin(data+2)); 00049 printf("set PWM duty ratio %f1.5\n", asci_to_bin(data+2)); 00050 break; 00051 case 't': 00052 control->set_target_temp(asci_to_bin(data+2)); 00053 printf("set target temp %f\n", asci_to_bin(data+2)); 00054 break; 00055 case 'p': 00056 control->set_P_value(asci_to_bin(data+2)); 00057 printf("set P value %f\n", asci_to_bin(data+2)); 00058 break; 00059 case 'i': 00060 control->set_I_value(asci_to_bin(data+2)); 00061 printf("set I value %f\n", asci_to_bin(data+2)); 00062 break; 00063 case 'd': 00064 control->set_D_value(asci_to_bin(data+2)); 00065 printf("set D value %f\n", asci_to_bin(data+2)); 00066 break; 00067 case 'e': 00068 control->set_period((int)asci_to_bin(data+2)); 00069 printf("set period %d\n", (int)asci_to_bin(data+2)); 00070 break; 00071 case 'h': 00072 control->highTemp=asci_to_bin(data+2); 00073 printf("set high temp %2.2f\n", asci_to_bin(data+2)); 00074 break; 00075 case 'l': 00076 control->lowTemp=asci_to_bin(data+2); 00077 printf("set low temp %2.2f\n", asci_to_bin(data+2)); 00078 break; 00079 case 'a': 00080 control->highTempTime=(int)asci_to_bin(data+2); 00081 printf("set high temp time%d\n", (int)asci_to_bin(data+2)); 00082 break; 00083 case 'b': 00084 control->lowTempTime=(int)asci_to_bin(data+2); 00085 printf("set low temp %d\n", (int)asci_to_bin(data+2)); 00086 break; 00087 case 'o': 00088 control->periodNumber=(int)asci_to_bin(data+2); 00089 printf("set period repeat number %d \n", (int)asci_to_bin(data+2)); 00090 break; 00091 default: 00092 pc->printf("command error"); 00093 } 00094 break; 00095 case 'g': 00096 switch(data[1]) 00097 { 00098 case 'm': 00099 printf("mode is %d\n", control->get_mode()); 00100 break; 00101 case 'r': 00102 printf("duty ratio is %f\n", control->get_PWM_value()); 00103 break; 00104 case 't': 00105 printf("target temp is %f\n", control->get_target_temp()); 00106 break; 00107 case 'p': 00108 printf("P value is %f\n", control->get_P_value()); 00109 break; 00110 case 'i': 00111 printf("I value is %f\n", control->get_I_value()); 00112 break; 00113 case 'd': 00114 printf("D value is %f\n", control->get_P_value()); 00115 break; 00116 case 'e': 00117 printf("Period is %d\n", control->get_period()); 00118 break; 00119 case 'a': 00120 control->print_table(); 00121 break; 00122 default: 00123 pc->printf("command error"); 00124 } 00125 00126 break; 00127 dafault: 00128 pc->printf("command error"); 00129 } 00130 pc->printf("\n"); 00131 count=0; 00132 } 00133 00134 void command_t::get_data() 00135 { 00136 data [count]=pc->getc(); 00137 00138 if(data [count]=='f') 00139 parse(); 00140 else 00141 count++; 00142 00143 if(count>9) 00144 { 00145 count=0; 00146 pc->printf("command error\n"); 00147 } 00148 } 00149 00150 void command_t::refreshPWM() 00151 { 00152 time=time+3; 00153 control->refresh_PWM(); 00154 } 00155 00156 double command_t::asci_to_bin(int *start) 00157 { 00158 double _data=0; 00159 int current=0; 00160 00161 double nth=1; //�ڸ��� 00162 int mode=0; 00163 int sign=1; 00164 00165 if(*start=='-') 00166 { 00167 current++; 00168 sign=-1; 00169 } 00170 while(*(start+current)!='f'&&*(start+current)!='.') 00171 { 00172 _data*=10; 00173 _data+=*(start+current)-'0'; 00174 00175 current++; 00176 } 00177 if(*(start+current)=='.') 00178 { 00179 current++; 00180 while(*(start+current)!='f') 00181 { 00182 nth/=10; 00183 _data+=nth*(*(start+current)-'0'); 00184 current++; 00185 } 00186 } 00187 return sign*_data; 00188 }
Generated on Tue Jul 12 2022 21:44:12 by 1.7.2