Autor Tema: Pregunta sobre transmicion de datos con tensiometro digital y gps  (Leído 6783 veces)

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

Desconectado santi.sl

  • PIC10
  • *
  • Mensajes: 26
Re: Pregunta sobre transmicion de datos con tensiometro digital y gps
« Respuesta #15 en: 04 de Octubre de 2006, 03:02:09 »
Hola a todos, Ayala08 te contesté en la otra zona sin ver tu post de aquí, pero sí, con eso es con lo que estoy yo, con los stream.
Por cierto un apunte que me indicó  Red_Pic, sobre   la inserción del código para que no se pierda ningún trozo y sea bien visible,  puedes hacerlo si lo deseas con   
Código: C
  1. .......
     en lugar de los puntos va tu código sin espacios en blanco.

Venga a seguir cacharreando, gracias y saludos a todos.


Desconectado santipic_9

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 36
Re: Pregunta sobre transmicion de datos con tensiometro digital y gps
« Respuesta #16 en: 04 de Octubre de 2006, 16:52:47 »
Lo siento Ayala08, al subirlo al foro se transforma pero lo tienes aquí http://www.todopic.com.ar/foros/index.php?topic=13977.0
Saludos

Desconectado ayala08

  • PIC10
  • *
  • Mensajes: 8
Re: Pregunta sobre transmicion de datos con tensiometro digital y gps
« Respuesta #17 en: 05 de Octubre de 2006, 13:21:23 »
Hola a todos!!! Gracias redpic , eso no lo habia tenido en cuenta, ahora tengo una pregunta es posible recibir por un canal a una velocidad y transmitir por otro a otra velocidad:
por ejemplo :
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,STREAM=CANAL1)  // RS232 Estándar
#use rs232(baud=4800, xmit=PIN_B4, rcv=PIN_B5,STREAM=CANAL2)
// CONSTANTES /////////////////////////////////////////////////////////////////
int const lenbuff=70;                  // Longitud de buffer, Ajustar
                                       // a lo que desees (o te sea posible)

// VARIABLES EN RAM ///////////////////////////////////////////////////////////

int  xbuff=0x00;                       // Índice: siguiente char en cbuff
char cbuff[lenbuff];                   // Buffer
char rcvchar=0x00;                     // último caracter recibido
int1 flagcommand=0;                    // Flag para indicar comando disponible

// Declaración de Funciones ///////////////////////////////////////////////////

void inicbuff(void);                   // Borra buffer
int addcbuff(char c);             // añade caracter recibido al buffer
void echos(char c);                    // Eco selectivo sobre RS232
void procesa_comando(void);            // Procesa comando

// INTERRUPCIONES /////////////////////////////////////////////////////////////

#int_rda
void serial_isr() {                    // Interrupción recepción serie USART 
  rcvchar=0x00;                       // Inicializo caracter recibido 
  if(kbhit()){                        // Si hay algo pendiente de recibir ...     
    rcvchar=fgetc(canal1);                  // lo descargo y ...     
    addcbuff(rcvchar);               // lo añado al buffer y ...   
  }
}

// Desarrollo de Funciones ////////////////////////////////////////////////////

int addcbuff(char c){                  // Añade a cbuff -----------------------
switch(c){         
   case 0x03:                    // Enter -> Habilita Flag para procesar
        flagcommand=1;             // Comando en Main                   
        break;         
    default:           
        cbuff[xbuff++]=c;          // Añade caracter recibido al Buffer               
   }
}

void inicbuff(void){                   // Inicia a \0 cbuff ------------------- 
 int i;   
 for(i=0;i<lenbuff;i++){             // Bucle que pone a 0 todos los     
   cbuff=0x00;                   // caracteres en el buffer   
   }   
   xbuff=0x00;                         // Inicializo el indice de siguiente                                       
                           // caracter
}
// Programa Principal /////////////////////////////////////////////////////////

void main() {   
   fprintf(canal2,"\r\n\** prueba buffer **\r\n\r\n");  // Presenta menú   
   enable_interrupts(int_rda);                   // Habilita Interrupción RDA                                           //// declaramos el puerto B como salidas   
   enable_interrupts(global);                    // Habilita interrupciones   
   do {   
         if(flagcommand){
        procesa_comando();         // Si hay comando pendiente de procesar ... lo procesa.       
          //printf("..\r");      // printf CR                 
      }} while (TRUE);
   SLEEP();
 }
// Procesador de Comandos /////////////////////////////////////////////////////

void procesa_comando(void){ 
int i, j;
char salida[lenbuff];                   // Argumento de comando (si lo tiene)   
disable_interrupts(int_rda);
flagcommand=0;                       // Desactivo flag de comando pendiente.     
    j=0;     
   for (i=0;i<xbuff;i++){       
    if (cbuff == '')       
      while((cbuff != 0x4A) & (i<xbuff))         
       {           
       salida[j++]=cbuff[i++];           
       fprintf (canal2,"%c",salida[j-1]); // Monitorizamos el argunmento.   
        }         
         i++;         
        }                                 
 inicbuff();                          // Borro buffer.   
 for(i=0;i<lenbuff;i++){             // Bucle que pone a 0 todos los     
    salida=0x00;                     // caracteres en el argumento   
}    

enable_interrupts(int_rda); 
}

muchas gracias

saludos

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Pregunta sobre transmicion de datos con tensiometro digital y gps
« Respuesta #18 en: 05 de Octubre de 2006, 13:49:28 »
Hola a todos!!! Gracias redpic , eso no lo habia tenido en cuenta, ahora tengo una pregunta es posible recibir por un canal a una velocidad y transmitir por otro a otra velocidad:
por ejemplo :
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,STREAM=CANAL1)  // RS232 Estándar
#use rs232(baud=4800, xmit=PIN_B4, rcv=PIN_B5,STREAM=CANAL2)

Ayala, eso ya me lo podrás decir tú mismo: compila, prueba y si funciona me los dices ... ja, ja, ja  :D  :D  :D

Edito: No lo he hecho nunca, pero no veo por qué no ha de funcionar.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania