Buenas comunidad.
Estoy tratando de rebir bytes desde la PC al PIC (OUT) y que el PIC le responda con lo que le llega (IN)
Bueno bien, el tema es que quiero que estos bytes sean una cadena... o sea varios bytes. Por lo que lei la funcion gets() en serial me permite hacer eso, recibir una cantidad de caracteres y guardarlos en una variable del tipo char, y todos estos caracteres se reciben hasta que yo mande ACII13 (enter) y eso indica que ya mande todos los caracteres que le quiero guardar en la variable, es verdad????
Bueno eso es en rs232, pero como hago con el USB???? yo pense que la funcion usb_gets() hacia algo parecido pero no me anda.
Les paso el codigo en el cual estoy trabajando:
#include "prueba2.h" // Libreria con FUSES y pic utilizado PIC18F4550
#include "usb_cdc.h" // Libreria para la comunicacion USB
#include "stdlib.h" // Libreria para manejo de strings
#use fast_io(B) // Puerto a utulizar
char string[8]; //Variable de 8 bytes
int caracter; //Variable para tomar caracter
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
output_B(0x00);
usb_cdc_init();
usb_init();
while(!usb_cdc_connected()) {}
// espera a detectar una transmisión de la PC (Set_Line_Coding)
usb_task();
if (usb_enumerated()){
printf(usb_cdc_putc, "Estas Conectado al PIC\n\r");//MENSAJE BIENVENIDA
}
do{
while(usb_cdc_kbhit()){ //en espera de nuevo(s) caracter(es) en el buffer
usb_gets(1, string, 8, 100); // Recibo los caracteres y guardo en string
printf(usb_cdc_putc, "el estring es: %c\n\r", string);// envio variable string
caracter=usb_cdc_getc(); //TOMO EL CARACTER QUE TENGO EN EL BUFFER
// PARA QUE NO ME QUEDE EN UN BUCLE INFINITO
}
} while(1);
}
No se donde esta el error pero la PC solo me muestra "el estring es:" por cada caracter que le llega, mande lo que le mande
Tambien probe printf(usb_cdc_putc, "el estring es: %u\n\r", string); y ahi me manda "el estring es: 134" y queda fijo en eso...
Alguien me puede explicar bien las funciones usb_gets y usb_get_packet????
Desde ya muchisimas gracias a todos!