TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: GAMCH333 en 12 de Noviembre de 2025, 14:03:58

Título: GPS FUNCI0N dat= getc();
Publicado por: GAMCH333 en 12 de Noviembre de 2025, 14:03:58

Por favor Solicitando su ayuda, el presente código pretender leer los datos de un modulo Gps...Se me indica un error en la funcion data=getc()  como se muestra:


Compiling D:\GPS PIC16F877\SEGUNDO GPS RS232 PIN b1 on 12-nov.-25 at 11:02
*** Error 167 "D:\GPS PIC16F877\SEGUNDO GPS RS232 PIN b1.c" Line 62(30,31): Assignment invalid: lvalue is READ ONLY
*** Error 167 "D:\GPS PIC16F877\SEGUNDO GPS RS232 PIN b1.c" Line 64(33,34): Assignment invalid: lvalue is READ ONLY
      2 Errors,  0 Warnings.
Build Failed.

  Este es el codigo empleado; por favor me puede auxiliar que estoy mal.

//************************************************************************************************************************************************
#define LCD_RS_PIN      PIN_D1
#define LCD_RW_PIN      PIN_D2
#define LCD_ENABLE_PIN  PIN_D0
#define LCD_DATA4       PIN_D4
#define LCD_DATA5       PIN_D5
#define LCD_DATA6       PIN_D6
#define LCD_DATA7       PIN_D7


#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)

// SE DEFINE LA DIRECCION DEL PUERTO A,B,C COMO ELEMENTO DE ENTRADA SALIDA.
// ASI COMO LA DIRECCION DE MEMORIA DE CADA UNO DE LOS DEMAS PUERTOS A,B,C.
// DICHA INFORMACION SE ENCUENTRA ESPECIFICADA EN EL REGISTRO DE MEMORIA DEL PIC.
// (MAYOR INFORMACIÓN DATA SHEET DE MICROCHIP WWW.MICROCHIP.COM

#use fast_io (b)
#use fast_io (c)
#use fast_io (d)
#byte porta = 5
#byte portb = 6
#byte portc = 7


// SE DEFINE LA DIRECCION DEL PUERTO BO PARA ENTRDA GPS PARALLAX .

#use rs232(baud=4800, xmit=PIN_B0, rcv=PIN_B1, bits=8, stream=GPS)

// SE DEFINE LA DIRECCION DEL PUERTO C PARA TX RS232 A  PC

#use rs232(baud=4800, xmit=PIN_C6, rcv=PIN_C7, bits=8, stream=CENTRAL)

#include <DLCD420.c>   // include Nokia 5110 LCD driver source file
#include<stdlib.h>

void main()
{
   char data[30];
   char flag;
   int i;
   delay_ms(2000);

   
   while(true)
   {
      flag=getch();
     
      if(flag=='G')
      {
         flag=getch();
         if(flag=='G')
         {
            flag=getch();
            if(flag=='A')
            {
               for(i=0;i<30;i++)
               {
             
                  data =getch();
                  if(data==',')
                     data =getch();
               }     
                 
                  lcd_gotoxy(1,1);
                  printf(lcd_putc,"%c%c:%c%c:%c%c",data[0],data[1],data[2],data[3],data[4],data[5]);
                 lcd_gotoxy(1,2);
                  printf(lcd_putc,"%c%c %c%c%c%c%c%c%c %c",data[6],data[7],data[8],data[9],data[10],data[11],data[12],data[13],data[14],data[15]);
                  lcd_gotoxy(1,3);
                printf(lcd_putc,"%c%c%c %c%c%c%c%c%c%c %c",data[16],data[17],data[18],data[19],data[20],data[21],data[22],data[23],data[24],data[25],data[26]);
                lcd_gotoxy(1,4);
                 printf(lcd_putc,"%c, %c%c",data[27],data[28],data[29]);


//Para mandar los datos via RS232.

     
              fprintf(Central, "%c%c:%c%c:%c%c",data[0],data[1],data[2],data[3],data[4],data[5]);
                 
                  fprintf(Central,"%c%c %c%c%c%c%c%c%c %c",data[6],data[7],data[8],data[9],data[10],data[11],data[12],data[13],data[14],data[15]);
                 
                     fprintf(Central,"%c%c%c %c%c%c%c%c%c%c %c",data[16],data[17],data[18],data[19],data[20],data[21],data[22],data[23],data[24],data[25],data[26]);
               
                          fprintf(Central,"%c, %c%c",data[27],data[28],data[29]);       
                         
            }
         }     
      }       
   }
}
//**********************************************************************************************************************************************
Título: Re:GPS FUNCI0N dat= getc();
Publicado por: Eduardo2 en 13 de Noviembre de 2025, 09:20:43
Estas lineas
Código: [Seleccionar]
    for(i=0;i<30;i++)
    {
        data = getch();
        if(data==',')
            data = getch();
    }     
deberian ser
Código: [Seleccionar]
    for(i=0;i<30;i++)
    {
        data[i] =getch();
        if(data[i]==',')
            data[i] = getch();
    }