Hola amigos, actualmente me encuentro desarrollando un proyecto de un CNC con visión de maquina apoyado en MatLab usando redes neuronales y ahora estoy atorado en la recepción de los datos de las coordenadas.
Estoy usando el 18F4550 con conexión USB en modo CDC para crear un puerto serial que vea el Matlab y envíe los datos por allí, para eso hice un programa de prueba que recibe el dato, lo convierte a entero y envía de vuelta la variable entera recibida, el problema es que cuando recibo un numero por ejemplo "134" correspondiente a una coordenada el PIC guarda los números por separado en la variable y me envía "1" "3" "4", no logro hacer que el numero completo se guarde en la variable en cuestión. Espero la ayuda que me puedan prestar para terminar mi proyecto
signed long coordx[100],coordy[100],valor;
char dato[10],letra;
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);
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(False);
usb_cdc_init(); // Configuramos al puerto virtual.
usb_init(); // Inicializamos el stack USB.
while(!usb_cdc_connected()) {}
// espera a detectar una transmisión de la PC (Set_Line_Coding).
do{
usb_task();
if (usb_enumerated()){
output_high(pin_b0);
// Espera a que el dispositivo sea enumerado por el host.
if(usb_cdc_kbhit()){ // En espera de nuevos caracteres en el buffer de recepción.
printf(usb_cdc_putc, "Recibido: ");
dato=usb_cdc_getc();
valor=strtol(dato,&letra,10);
printf(usb_cdc_putc,"%Ld\n",valor);
}
}
output_low(pin_b0);
}while (TRUE); // bucle infinito.
}
Saludos