Autor Tema: cadenas de caracteres pc a pic  (Leído 4594 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado krakc

  • PIC10
  • *
  • Mensajes: 29
cadenas de caracteres pc a pic
« en: 06 de Junio de 2009, 15:37:36 »
Hola a todos

Bueno gente tengo un problemita con los datos recibidos... les explico...

Envio UN caracter cualquiera desde la PC al pic y este es capaz (con mi programa) de tomarlo mostrarlo por LCD y reenviarlo a la PC para mostrar en el monitor del puerto serie...

Si envio DOS caracteres el pic me muestra solo por la LCD el ultimo caracter enviado y en el PC me muestra caracter por caracter.

por ejemplo si envio el numero 1: (31 en hexa)
la LCD muestra: 1
la PC muestra: Dato: 1

pero si envio los numeros 09 (30 39 en hexa)
la LCD muestra: 9
la pc muestra: Dato: 0Dato: 9

entonces lo que no quiero es eso, quiero poder unir todo lo que envio desde la PC en una sola cadena de caracteres y poder contar cuantos caracteres fueron recibidos y que me muestre:
en la LCD: 09
en la PC: Dato: 09

el programa es el siguiente....


Código: [Seleccionar]
#include <16F877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_C6, rcv=pin_C7)
#define use_portb_lcd TRUE         //definir portb lcd
#include <lcd.c>                 //libreria manejo lcd

void main(void)
{

   char dePC=' ';
   lcd_init();
   lcd_gotoxy(1,1);
   printf(lcd_putc,"J.Tafur");
   
   while(true)
   {
     
      dePC=getc(); // PIC<-PC
     
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%c",dePC); // PIC->LCD
      printf("Dato: %c",dePC); // PIC->PC

   }
   
}

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: cadenas de caracteres pc a pic
« Respuesta #1 en: 06 de Junio de 2009, 15:57:15 »
Estas reescribiendo el valor recibido siempre en (1,2). Osea, recibes el 0, lo escribes, y al recibir el 9 escribes 9 en la misma posición.

Mira aquí se ha tratado el tema.
« Última modificación: 06 de Junio de 2009, 16:00:57 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado krakc

  • PIC10
  • *
  • Mensajes: 29
Re: cadenas de caracteres pc a pic
« Respuesta #2 en: 06 de Junio de 2009, 16:48:54 »
gracias por la pronta respuesta

mira he modificado mi while y no me hace nada, ahora no muestra nada en la LCD ni en la PC ¿que estoy haciendo mal?

agregue la libreria string.h


Código: [Seleccionar]
 
char dePC[32];

 while(true)
   {
    
      gets(dePC); // PIC<-PC  --> !creo que este es el problema!
      ndatos=strlen(dePC);
    
      lcd_gotoxy(1,2);
      for(i=0;i<ndatos;i++)
      {
         printf(lcd_putc,"%c",dePC[i]);  
         delay_ms(25);
      }
      printf("Dato: %c",dePC); // PIC->PC
      printf("\n\n");
      puts(dePC);

   }
« Última modificación: 06 de Junio de 2009, 16:55:19 por krakc »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: cadenas de caracteres pc a pic
« Respuesta #3 en: 06 de Junio de 2009, 17:27:39 »
De esta manera funciona. Acuérdate que para que gets de como terminada la recepción se debe enviar un salto de linea (\n, Enter)

Código: C
  1. while(true)
  2.    {
  3.      
  4.       gets(dePC); // PIC<-PC
  5.      
  6.       lcd_gotoxy(1,2);
  7.       printf(lcd_putc,"%s",dePC); // PIC->LCD
  8.       puts(dePC); // PIC->PC
  9.    }
No contesto mensajes privados, las consultas en el foro

Desconectado krakc

  • PIC10
  • *
  • Mensajes: 29
Re: cadenas de caracteres pc a pic
« Respuesta #4 en: 06 de Junio de 2009, 19:23:02 »
tampoco me funciono

T_T

 :(

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: cadenas de caracteres pc a pic
« Respuesta #5 en: 06 de Junio de 2009, 21:38:09 »
Si deshabilitas esta linea printf(lcd_putc,"%s",dePC); reenvía los datos recibidos por el PIC? Si no es así estas enviando mal la linea, te falta \n.
« Última modificación: 06 de Junio de 2009, 21:40:13 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: cadenas de caracteres pc a pic
« Respuesta #6 en: 06 de Junio de 2009, 23:37:22 »
tampoco me funciono

T_T

 :(

Krakc al parecer no has leido el link que dijeron que visitaras, primero recuerda que debes declarar la variable asi:

Código: [Seleccionar]
char ds[30];//si necesitas mas caracteres cambias el 30
y luego si puedes hacer el:

Código: [Seleccionar]
puts(ds);
listo, acuerdate de ver la pagina que te recomendaron ahi sale todo esto...

Desconectado jhonastad

  • PIC10
  • *
  • Mensajes: 34
Re: cadenas de caracteres pc a pic
« Respuesta #7 en: 09 de Junio de 2009, 00:20:34 »
Para recibir los datos desde el PC deberías guardarlos en un vector y luego convertirlo a entero con atoi o atol según el tamaño del    dato, aqui te dejo un ejemplo. saludos.

Código: [Seleccionar]
void main(void){

char dePC[8];
char data;

while(true){

gets(dePC);
data = (char)atoi(dePC);

printf(lcd_putc,"%i",data);
}
}


 

anything