111

Dependencies:   BufferedSerial FastPWM mbed

Committer:
sbh9428
Date:
Tue Apr 12 06:52:10 2016 +0000
Revision:
0:f3108add3d98
11

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sbh9428 0:f3108add3d98 1 /*
sbh9428 0:f3108add3d98 2 * commandt.cpp
sbh9428 0:f3108add3d98 3 *
sbh9428 0:f3108add3d98 4 * Created on: 2016. 2. 19.
sbh9428 0:f3108add3d98 5 * Author: sbh9428
sbh9428 0:f3108add3d98 6 */
sbh9428 0:f3108add3d98 7
sbh9428 0:f3108add3d98 8 #include "commandt.h"
sbh9428 0:f3108add3d98 9
sbh9428 0:f3108add3d98 10 command_t::command_t() {
sbh9428 0:f3108add3d98 11 // TODO Auto-generated constructor stub
sbh9428 0:f3108add3d98 12
sbh9428 0:f3108add3d98 13 }
sbh9428 0:f3108add3d98 14
sbh9428 0:f3108add3d98 15 command_t::command_t(BufferedSerial* _pc, control_t* _control)
sbh9428 0:f3108add3d98 16 {
sbh9428 0:f3108add3d98 17 time=0;
sbh9428 0:f3108add3d98 18 count=0;
sbh9428 0:f3108add3d98 19 control=_control;
sbh9428 0:f3108add3d98 20 pc=_pc;
sbh9428 0:f3108add3d98 21 }
sbh9428 0:f3108add3d98 22
sbh9428 0:f3108add3d98 23 command_t::~command_t() {
sbh9428 0:f3108add3d98 24 // TODO Auto-generated destructor stub
sbh9428 0:f3108add3d98 25 }
sbh9428 0:f3108add3d98 26
sbh9428 0:f3108add3d98 27 void command_t::clear_data()
sbh9428 0:f3108add3d98 28 {
sbh9428 0:f3108add3d98 29 for(int i=0;i<10;i++)
sbh9428 0:f3108add3d98 30 {
sbh9428 0:f3108add3d98 31 data[i]=0;
sbh9428 0:f3108add3d98 32 }
sbh9428 0:f3108add3d98 33 }
sbh9428 0:f3108add3d98 34 void command_t::parse()
sbh9428 0:f3108add3d98 35 {
sbh9428 0:f3108add3d98 36 switch(data[0])
sbh9428 0:f3108add3d98 37 {
sbh9428 0:f3108add3d98 38 case 's':
sbh9428 0:f3108add3d98 39 switch(data[1])
sbh9428 0:f3108add3d98 40 {
sbh9428 0:f3108add3d98 41 case 'm':
sbh9428 0:f3108add3d98 42 control->setMode(data[2]-'0');
sbh9428 0:f3108add3d98 43 printf("set mode %d\n", data[2]-'0');
sbh9428 0:f3108add3d98 44 break;
sbh9428 0:f3108add3d98 45 case 'p':
sbh9428 0:f3108add3d98 46 control->setP(asci_to_bin(data+2));
sbh9428 0:f3108add3d98 47 printf("set P %f1.5\n", asci_to_bin(data+2));
sbh9428 0:f3108add3d98 48 break;
sbh9428 0:f3108add3d98 49 case 'i':
sbh9428 0:f3108add3d98 50 control->setI(asci_to_bin(data+2));
sbh9428 0:f3108add3d98 51 printf("set I %f\n", asci_to_bin(data+2));
sbh9428 0:f3108add3d98 52 break;
sbh9428 0:f3108add3d98 53 case 'd':
sbh9428 0:f3108add3d98 54 control->setD(asci_to_bin(data+2));
sbh9428 0:f3108add3d98 55 printf("set D %f\n", asci_to_bin(data+2));
sbh9428 0:f3108add3d98 56 break;
sbh9428 0:f3108add3d98 57 case 'o':
sbh9428 0:f3108add3d98 58 control->setPower(asci_to_bin(data+2));
sbh9428 0:f3108add3d98 59 printf("set I value %f\n", asci_to_bin(data+2));
sbh9428 0:f3108add3d98 60 break;
sbh9428 0:f3108add3d98 61 case 'a':
sbh9428 0:f3108add3d98 62 control->setRatio(asci_to_bin(data+2));
sbh9428 0:f3108add3d98 63 printf("set Ratio %f\n", asci_to_bin(data+2));
sbh9428 0:f3108add3d98 64 break;
sbh9428 0:f3108add3d98 65 }
sbh9428 0:f3108add3d98 66 break;
sbh9428 0:f3108add3d98 67 case 'g':
sbh9428 0:f3108add3d98 68 switch(data[1])
sbh9428 0:f3108add3d98 69 {
sbh9428 0:f3108add3d98 70 case 'm':
sbh9428 0:f3108add3d98 71 printf("mode is %d\n", control->getMode());
sbh9428 0:f3108add3d98 72 break;
sbh9428 0:f3108add3d98 73 case 'p':
sbh9428 0:f3108add3d98 74 printf("P is %f\n", control->getP());
sbh9428 0:f3108add3d98 75 break;
sbh9428 0:f3108add3d98 76 case 'i':
sbh9428 0:f3108add3d98 77 printf("I is %f\n", control->getI());
sbh9428 0:f3108add3d98 78 break;
sbh9428 0:f3108add3d98 79 case 'd':
sbh9428 0:f3108add3d98 80 printf("D is %f\n", control->getD());
sbh9428 0:f3108add3d98 81 break;
sbh9428 0:f3108add3d98 82 case 'o':
sbh9428 0:f3108add3d98 83 printf("power is %f\n", control->getPower());
sbh9428 0:f3108add3d98 84 break;
sbh9428 0:f3108add3d98 85 case 'a':
sbh9428 0:f3108add3d98 86 printf("ratio is %f\n", control->getRatio());
sbh9428 0:f3108add3d98 87 break;
sbh9428 0:f3108add3d98 88 }
sbh9428 0:f3108add3d98 89
sbh9428 0:f3108add3d98 90 break;
sbh9428 0:f3108add3d98 91 dafault:
sbh9428 0:f3108add3d98 92 pc->printf("command error");
sbh9428 0:f3108add3d98 93 }
sbh9428 0:f3108add3d98 94 pc->printf("\n");
sbh9428 0:f3108add3d98 95 count=0;
sbh9428 0:f3108add3d98 96 }
sbh9428 0:f3108add3d98 97
sbh9428 0:f3108add3d98 98 void command_t::get_data()
sbh9428 0:f3108add3d98 99 {
sbh9428 0:f3108add3d98 100 data [count]=pc->getc();
sbh9428 0:f3108add3d98 101
sbh9428 0:f3108add3d98 102 if(data [count]=='f')
sbh9428 0:f3108add3d98 103 parse();
sbh9428 0:f3108add3d98 104 else
sbh9428 0:f3108add3d98 105 count++;
sbh9428 0:f3108add3d98 106
sbh9428 0:f3108add3d98 107 if(count>9)
sbh9428 0:f3108add3d98 108 {
sbh9428 0:f3108add3d98 109 count=0;
sbh9428 0:f3108add3d98 110 pc->printf("command error\n");
sbh9428 0:f3108add3d98 111 }
sbh9428 0:f3108add3d98 112 }
sbh9428 0:f3108add3d98 113
sbh9428 0:f3108add3d98 114 double command_t::asci_to_bin(int *start)
sbh9428 0:f3108add3d98 115 {
sbh9428 0:f3108add3d98 116 double _data=0;
sbh9428 0:f3108add3d98 117 int current=0;
sbh9428 0:f3108add3d98 118
sbh9428 0:f3108add3d98 119 double nth=1; //�ڸ���
sbh9428 0:f3108add3d98 120 int mode=0;
sbh9428 0:f3108add3d98 121 int sign=1;
sbh9428 0:f3108add3d98 122
sbh9428 0:f3108add3d98 123 if(*start=='-')
sbh9428 0:f3108add3d98 124 {
sbh9428 0:f3108add3d98 125 current++;
sbh9428 0:f3108add3d98 126 sign=-1;
sbh9428 0:f3108add3d98 127 }
sbh9428 0:f3108add3d98 128 while(*(start+current)!='f'&&*(start+current)!='.')
sbh9428 0:f3108add3d98 129 {
sbh9428 0:f3108add3d98 130 _data*=10;
sbh9428 0:f3108add3d98 131 _data+=*(start+current)-'0';
sbh9428 0:f3108add3d98 132
sbh9428 0:f3108add3d98 133 current++;
sbh9428 0:f3108add3d98 134 }
sbh9428 0:f3108add3d98 135 if(*(start+current)=='.')
sbh9428 0:f3108add3d98 136 {
sbh9428 0:f3108add3d98 137 current++;
sbh9428 0:f3108add3d98 138 while(*(start+current)!='f')
sbh9428 0:f3108add3d98 139 {
sbh9428 0:f3108add3d98 140 nth/=10;
sbh9428 0:f3108add3d98 141 _data+=nth*(*(start+current)-'0');
sbh9428 0:f3108add3d98 142 current++;
sbh9428 0:f3108add3d98 143 }
sbh9428 0:f3108add3d98 144 }
sbh9428 0:f3108add3d98 145 return sign*_data;
sbh9428 0:f3108add3d98 146 }