Autor Tema: DUDA RECEPCIÓN DE DATOS EN PIC16F887 USANDO RS232 ENVIADOS POR VISUAL BASIC 2010  (Leído 1085 veces)

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

Desconectado gbo117

  • PIC10
  • *
  • Mensajes: 1
Hola como les va a todos en "todo pic" soy estudiante de ing. mecatrónica y algo nuevo en esto de los pic actual mente estoy trabajando un proyecto que consiste en una interfaz HMI usando visual basic para el control de un ascensor de 4 pisos voy a trabajar en el compilador ccs,
se que mediante visual basic puedo mandar caracteres ascii por el puerto serial los cuales corresponden a un numero endecimal o hexadecimal y eh aqui mi duda aclaro que no eh trabajado con rs232.

Mi duda es que si mando un carácter ya sea la letra "d" que corresponde al 64 hexadecimal o al 100 decimal como puedo interpretarla a la entrada del pic(usando un max232) ¿como puedo interpretar ese dato o compararlo ya sea haciendo una conversión del dato recibido  o tal cual el dato para que me mande a alguna parte de la rutina o cumpla con algún caso dentro de mi programa.

Un ejemplo en visual basic tengo mi interfaz para el control del ascensor pulso un boton con la funcion de subir pero en realidad en la programación solo mando el caracter ascii "d" por el puerto serial y quiero que al llegar al pic lo traduzca como un numero o el caracter en si para que haga parte de la rutina  (que haga la funcion de como si en realidad pulsara un boton corriera el programa o las condiciones en el)

Esa es mi duda de como se puede leer y comparar esos datos de entrada y si puedo hacerlo de igual manera si mando una palabra completa(si se puede)

 :)
« Última modificación: 07 de Diciembre de 2015, 23:42:13 por gbo117 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:DUDA RECEPCIÓN DE DATOS EN PIC16F887 USANDO RS232 ENVIADOS POR VISUAL BASIC 2010
« Respuesta #1 en: 08 de Diciembre de 2015, 05:10:47 »
Lo que harias, es si es una sola letra, simplemente leer el buffer de recpcion y compararlo con ese valor, supongamos:

char buff;

buff=getc();
if ( buff == 'd' ) {  //Hago algo   }


Ojo esto es para una interrupcion, pero es para que se entienda.
Si fuera mas letras deberias guardarlas en un array, cada ves que entra a la interrupcion de la recepcion es por que llega un byte. entonces supongamos que esperas siempre siempre 5 caracteres.

char buff[6]; // 6 por que necesitas el caracter nulo
int8 i=0;

interrupcion(){
   buff=getc()
   if ( i == 4) {  i=0; buff[5] = '\0';  // Y hago algo aca }
}

No es mucho pero aunque sea espero que te sirva para investigar mas. darte una idea de como realizarlo


 

anything