dd

Dependencies:   BufferedSerial FastAnalogIn FastPWM mbed SHT75

commandt.cpp

Committer:
sbh9428
Date:
2016-02-19
Revision:
0:9bfc4aea91e2
Child:
1:5c42ec7f1aeb

File content as of revision 0:9bfc4aea91e2:

/*
 * 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)
{
	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');
				break;
				case 'p':
					control->control_PWM(asci_to_bin(data+2));
					printf("set WPM duty ratio %f\n", asci_to_bin(data+2));
				break;
				case 't':
				
				break;	
			}
		break;
		case 'g':
		
		break;	
		dafault:
		pc->printf("command error");
	}
	pc->printf("\n");
}

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()
{
	printf("temperature is %f\n", control->get_temp());
	
}

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