Autor Tema: RS232 SOFT y HARD al mismo tiempo, ayuda  (Leído 2446 veces)

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

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
RS232 SOFT y HARD al mismo tiempo, ayuda
« en: 30 de Noviembre de 2009, 21:37:13 »
Disculpen si este tema existe pero no encontré en el buscador.
Estoy intentando usar 2 rs232 en un mismo PIC, uno por hardware y otro soft.
Mi problema es que el que trabaja por soft quiero que espere datos de un lector de código de barras y luego los almacene en un buffer y lo entregue al PC por rs232.

mi problema es que se queda esperando que el rs232 por soft envie algo y no lo lee y cuando no envia nada se queda esperando y el tiempo no corre.

Código: [Seleccionar]
#use rs232 (baud=9600,XMIT=PIN_C6,RCV=PIN_C7)
void enviar(void){
  for(j=0;j<41;j++)
      putc(BM[j]);
}

#use rs232 (baud=9600,RCV=PIN_D0,FORCE_SW)

void bandamagnetica(void){
   unsigned int16 timeout;
   int j;
   char t0[]="Deslizar Tarjeta";
   char t1[]="No se pudo leer dato";
     
      borrarlcd;
      imprimir(1,1,t0,1,1);
   
   while(!kbhit()&&(++timeout<50000)) delay_us(10);

   if(kbhit()){
      for(j=0;j<41;j++)
      getc(BM[j]);
   }

   else {
      borrarlcd;
      imprimir(1,1,t1,1,1);
   }

}

en el programa principal sencillamente mando a bandamagnetica primero y despues a enviar, no se que pasa pero se queda esperando el pic a que envien algo... estoy omitiendo algun campo?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: RS232 SOFT y HARD al mismo tiempo, ayuda
« Respuesta #1 en: 01 de Diciembre de 2009, 01:11:08 »
Debes asignar a cada bus de comunicación un nombre (stream), cuando escribas o leas un Bus debes indicarlo con el nombre. Fíjate que en la ayuda del CCS da la sintaxis de los 2 casos, por ejemplo para fputc(data, stream);


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: RS232 SOFT y HARD al mismo tiempo, ayuda
« Respuesta #2 en: 01 de Diciembre de 2009, 02:50:05 »
Para optimizar tu programa, podrías implementar la recepción por software mediante un Timer.

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: RS232 SOFT y HARD al mismo tiempo, ayuda
« Respuesta #3 en: 01 de Diciembre de 2009, 11:08:25 »
Debes asignar a cada bus de comunicación un nombre (stream), cuando escribas o leas un Bus debes indicarlo con el nombre. Fíjate que en la ayuda del CCS da la sintaxis de los 2 casos, por ejemplo para fputc(data, stream);


Saludos!

Gracias por sus respuestas!

si le doy un stream a cada comunicacion rs232 no importa si pongo las dos lineas de #use rs232 de seguido, es decir:
Código: [Seleccionar]
#use rs232 (baud=9600,XMIT=PIN_C6,RCV=PIN_C7,STREAM=com1)
#use rs232 (baud=9600,RCV=PIN_D0,FORCE_SW,STREAM=com2)

void main(){
dato=fgetc(com2);
fputc(dato,com1);
}

y solucionado el problema?

Para optimizar tu programa, podrías implementar la recepción por software mediante un Timer.

gracias por el dato lo revisare..


Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: RS232 SOFT y HARD al mismo tiempo, ayuda
« Respuesta #4 en: 01 de Diciembre de 2009, 12:04:46 »
Gracias por sus respuestas!

si le doy un stream a cada comunicacion rs232 no importa si pongo las dos lineas de #use rs232 de seguido, es decir:
Código: [Seleccionar]
#use rs232 (baud=9600,XMIT=PIN_C6,RCV=PIN_C7,STREAM=com1)
#use rs232 (baud=9600,RCV=PIN_D0,FORCE_SW,STREAM=com2)

void main(){
dato=fgetc(com2);
fputc(dato,com1);
}

y solucionado el problema?

Exacto, es asignarle un nombre al Bus para saber cual vas a utilizar en cada caso.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: RS232 SOFT y HARD al mismo tiempo, ayuda
« Respuesta #5 en: 01 de Diciembre de 2009, 18:29:22 »
y cuando quiero preguntar si tengo un bit por recibir?

por ejemplo:

while(!kbhit(COM2)).....



« Última modificación: 01 de Diciembre de 2009, 18:31:30 por fidodido18 »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: RS232 SOFT y HARD al mismo tiempo, ayuda
« Respuesta #6 en: 01 de Diciembre de 2009, 18:34:43 »
Así como lo colocas está bien, revisa la ayuda de CCS, que da las sintaxis.


Saludos!
No contesto mensajes privados, las consultas en el foro


 

anything