Vistas de página en total

viernes, 27 de marzo de 2015

Ampliacion usb_cdc.h CCS

 Acabo de  necesitar utilizar la librería USB_CDC.h de CCS para comunicacion emulando un puerto serie.
  Al utilizarla me he encontrado con que le flatan funciones muy básicas. Si bién tiene funciones para interpretar los datos recogidos, no tiene funciones para devolver de la misma manera los datos al PC.
  Esto no me hubiera dejaba componer de forma coherente un sistema de comunicaciones por comandos entre el firmware y el software del PC. Así que implementé las funciones que flataban.
  Para no perderlas, pues ya empiezo a tener librerías modificadas, subo aquí las modificaciones, que al tiempo pueden que sirvan al alguien.
   Debido al copyrigth del CCS, no puedo subir las librería completa, pero no tengo problemas en subir la parte de código mío a añadir a la librería.

/////////////////////////////////////////////////////////////////////////////////////
////                                                                                    ////
//// put_float_usb                    ////
//// Send a number float by USB in  ASCII   format   ////
////  ////
////  ////
//// void put_long_usb  ////
//// Send a number long by USB in  ASCII   format    ////
////  ////
////  ////
//// void put_int_usb  ////
//// Send a number int by USB in  ASCII   format  ////
////  ////
////  ////
//// void put_string_usb(char* s)  ////
//// Send a string by USB                                             ////
////  ////
////  ////
//// VERSION HISTORY                                                ////
////  ////
//// March 27th 2015: by  José Angel Moneo Frdz  ////
////  Add functions                                                ////
//// put_float_usb, put_long_usb,   put_int_usb  ////
////    put_int_usb, put_string_usb                                    ////
///////////////////////////////////////////////////////////////////////////////////

//Envia una cadena de texto por USB
void put_string_usb(char* s) {
   unsigned int len;
   int i;
   for(i=0;i<strlen(s);i++)
        usb_cdc_putc(s[i]);
 
   usb_cdc_putc(13);
}





void put_float_usb(float dato)
{char s[20];
int i;
sprintf(s,"%03.2f",dato);
 for(i=0;i<strlen(s);i++)
         usb_cdc_putc(s[i]);
//usb_cdc_putc(10);
 usb_cdc_putc(13);
       
}


void put_long_usb(long dato)
{char s[13];
int i;
 itoa(dato,10,s);
 for(i=0;i<strlen(s);i++)
         usb_cdc_putc(s[i]);
//usb_cdc_putc(10);
 usb_cdc_putc(13);
       
}

void put_int_usb(int dato)
{char s[7];
int i;
 itoa(dato,10,s);
 for(i=0;i<strlen(s);i++)
         usb_cdc_putc(s[i]);
//usb_cdc_putc(10);
 usb_cdc_putc(13);
}        


No hay comentarios :

Publicar un comentario