Autor Tema: cadena de caracteres rs_232  (Leído 2589 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado sluguer

  • PIC10
  • *
  • Mensajes: 4
cadena de caracteres rs_232
« en: 18 de Agosto de 2004, 09:01:00 »
tengo un problema cuando envio una cadena de caracteres desde el pic por rs_232 me recibe el pc " hiperterminal" me llega solo parte de la cadena por ejemplo pepitoperez solo me llega pepitopepitopepitopepitopepitopepitopepitopepitopepito me podrian decir en estare fallando gracias

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: cadena de caracteres rs_232
« Respuesta #1 en: 18 de Agosto de 2004, 09:13:00 »
Si no pones el código no podremos ayudarte...

Desconectado T0ni0

  • PIC16
  • ***
  • Mensajes: 196
RE: cadena de caracteres rs_232
« Respuesta #2 en: 18 de Agosto de 2004, 09:46:00 »
Pues opino lo mismo, si pones el codigo le hecharemos un vistazo,

aunque asegurate antes de vigilar que el Hiperterminal esté bien configurado a veces parece que repita strings o que se los coma y es por eso, mira en propiedades->configuración->configuración ASCII y asegurate que está marcada la casilla "agregar avance..."  taluego
- T0ni0 -
30RCF112

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: cadena de caracteres rs_232
« Respuesta #3 en: 19 de Agosto de 2004, 02:51:00 »
Seguramente será un bug de windows, si pones "José Pérez" seguro que no falla, jejeje

Desconectado sluguer

  • PIC10
  • *
  • Mensajes: 4
RE: cadena de caracteres rs_232
« Respuesta #4 en: 27 de Agosto de 2004, 23:02:00 »
Escrito originalmente por sluguer
tengo un problema cuando envio una cadena de caracteres desde el pic por rs_232 me recibe el pc " hiperterminal" me llega solo parte de la cadena por ejemplo pepitoperez solo me llega pepitopepitopepitopepitopepitopepitopepitopepitopepito me podrian decir en estare fallando gracias

#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=n, bits=8)
//#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

int i=0;
char a[30]="jhonnyslugueraranazambrano";
char buffer[30]="jhonnyslugueraranazambrano";

const char menu[6][30]={"jhonnyslugueraranazambrano","QUE","TAL","como","estas","Exec"};

void enviar(int punter)
{
char texto[30]="jhonnyslugueraranazambrano";
printf(texto);
delay_ms(1000);
}

void main()
{

while (true){

//for(i=0; i<10; i++)
//printf("\%u",i);


 /*for(i=0; i<10; i++)
    putc(buffer);
    putc("*");
    i=i+1;
    printf("\%C",(buffer));
    mostramenu(0);
    delay_ms(1000);
    delay_us(100);
    putc(i);//(buffer);*/
   
   }
}

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: cadena de caracteres rs_232
« Respuesta #5 en: 28 de Agosto de 2004, 00:09:00 »
He hecho algunos cambios y ya funciona:
Codigo:
#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)

#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7, bits=8, parity=N)
//#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

int i=0;

const char menu[6][30]={"jhonnyslugueraranazambrano","QUE","TAL","como","estas","Exec"};


void main()
{
printf ("f");
for (i=0;i<6;++i) {
   printf ("%S
",menu);
};

while (true){ };

}

Míralo y ya me contarás. Si sigue sin funcionarte debe ser un error de conexiones. Yo también me quebré la cabeza la primera vez que quise poner de acuerdo el PC con el micro.

Desconectado pendexgabo

  • PIC16
  • ***
  • Mensajes: 222
    • www.SosaGabriel.com.ar
RE: cadena de caracteres rs_232
« Respuesta #6 en: 28 de Agosto de 2004, 13:34:00 »
buenas, en la parte que dice:

printf ("f " ) ;
for (i=0;i<6;++i) {
   printf ("%S
",menu ) ; ////// en esta linea no seria printf ("%S
",menu[ i ] ) ;
};

while (true){ };

}

por que creo yo que de la forma que estaba puesto siempre imprime el primer string porque no hay incremento, por favor si me equivoco avisen

adios

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: cadena de caracteres rs_232
« Respuesta #7 en: 28 de Agosto de 2004, 13:43:00 »
Un inciso.
Cuando peguen código aquí,si hay por el medio algún array al que accedamos con la típica variable "i" entre corchetes,el código no se pegará bien.
Parece que la i entre corchetes es un código mi@ que pone el texto en cursiva,además de comerse trozos del código.
Usen la j,que también va muy bien!!!!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: cadena de caracteres rs_232
« Respuesta #8 en: 28 de Agosto de 2004, 15:40:00 »
Bien visto Modulay.
Pendexgabo, efectivamente es como tú planteas porque la i no ha salido.

Bueno, aún no me sentía seguro como para hacerlo, pero voy a tener que evolucionar de i a j.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: cadena de caracteres rs_232
« Respuesta #9 en: 28 de Agosto de 2004, 15:56:00 »
A propósito,yo como lo tengo aprendido es poniendo i++...
He visto por ahí que en el for está al revés.
¿funciona bien?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: cadena de caracteres rs_232
« Respuesta #10 en: 28 de Agosto de 2004, 17:00:00 »
Sin problemas, yo creía que era ++i

Qué raro es este C.

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: cadena de caracteres rs_232
« Respuesta #11 en: 28 de Agosto de 2004, 18:39:00 »
Existen diferencies entre ++i e i++, cuidadín cuidadín....

Por poner un ejemplo:

Tenemos la variable i de valor 2. y otras dos llamadas temp1 y temp2 donde almacenaremos el resultado.

i=2;

temp1=i++;    //1er caso
temp2=++i;    //2º caso

En el primer caso lo que ejecuta el compilador es:

1º Almaceno la variable i en temp1

temp1=i;   //temp1=2

2º incremento la variable i en una unidad

i=i+1;      //i=3

Resultado temp1=2 la variable i sólo es incrementada despues de ser usada en la expresión

Sin embargo si el ++ va delante de la variable ésta se incrementa antes de usarla en la expresión

En el segundo caso:

1º Incremento la variable i

i=i+1;   //i=3

2º Ahora almaceno el resultado en la variable temp2.

temp2=i;   //como i ya valia 3 pues temp2=3


Resultado temp2=3 la varible i es incrementada antes de ser usada en la expresión de asignación a temp2

Yo por costumbre suelo utilizar el i++, siempre incremento la variable después de utilizar la expresión.Como veis no deja de tener cierta lógica la colocación del ++.

En el ejemplo que tenéis aquí arriba da igual usar cualquiera de las dos expresiones, porque como veis no se usa ninguna variable para almacenar el resultado del incremento (variable i), si os fijáis en los dos casos que os puse mas arriba, la variable i tiene el mismo valor (3) independientemente de la precedencia o no de los ++, de lo que se deduce que esto se puede tener en cuenta solo en ciertos casos.

Saludos.

PD: No  se si os ha quedado muy claro el ejemplo socios, a veces no me explico muy bien...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: cadena de caracteres rs_232
« Respuesta #12 en: 29 de Agosto de 2004, 00:07:00 »
Ha quedado impecable, Oshow.
Y no tenía ni idea de que eso era así, por lo que probablemente algunos fallos en mis pruebas han podido venir ocasionados por esto.
Muchas gracias.