This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

GPS buffer size ?

Dear Members ?

What's the best size for GPS Rxbuffer from UART with speed 9600 baud ?

I'm using Neo 6M GPS module,

Thanks

Parents
  • Data from GPS :

    $GPGSV,3,2,11,13,38,221,22,14,78,058,23,15,04,228,,17,10,025,*7E

    $A,151045.00,3207.99912,S,11559.30940,E,1,04,7.21,10.1,M,-30.6,M,,*56

    $GPGSA,A,2,30,07,05,13,,,,,,,,,7.28,7.21,1.00*08

    $GPGSV,3,1,11,05,47,269,25,07,24,119,23,08,10,130,,09,14,058,177775,47,269,25,07
    ,24,119,24,08,10,130,,09,14,058,16*74

    $GPGSV,3,2,11,13,38,221,21,14,78,058,23,15,04,228,,17,10,025,*7D

    $GPGSV,3,3,11,19,00,009,,28,72,016,16,30,55,148,22*49

    $GPGLL,3207.99923,S,11559.30946,E,151050.00,A,A*7B

    I reckon it's 512 bytes for buffer, but it's truncated when I transmitted to UART0 in I used 512 bytes buffer,

    currently I used 256 bytes,

    How can I increse it to 512 bytes without truncating it ? thanks

  • I am not sure I understand your setup. Are you using 512 or 256 bytes buffer? And what is the GPS module spitting out? How is it truncated? How did you set up your UART? 

  • currently I'm using 256 bytes,

    Here's the callback,

    if(GPS.rxIndex < sizeof(GPS.rxBuffer)-2)
    	{
    	
    		GPS.rxBuffer[GPS.rxIndex] = GPS.rxTmp; //originally
    		 
    		GPS.rxIndex++;
    		memcpy((void *)line_buffer_GPS, GPS.rxBuffer, GPS.rxIndex); 
    	
    			
    	}

    I try using memcpy to keep the buffer for processing,

    I got "null" all the time

    str=strstr((char*)line_buffer_GPS,"$GPGGA,");

    or
    ==> always gone (empty buffer / astable ) str=strstr((char*)GPS.rxBuffer,"$GPGGA,");

    ?? any ideas

Reply
  • currently I'm using 256 bytes,

    Here's the callback,

    if(GPS.rxIndex < sizeof(GPS.rxBuffer)-2)
    	{
    	
    		GPS.rxBuffer[GPS.rxIndex] = GPS.rxTmp; //originally
    		 
    		GPS.rxIndex++;
    		memcpy((void *)line_buffer_GPS, GPS.rxBuffer, GPS.rxIndex); 
    	
    			
    	}

    I try using memcpy to keep the buffer for processing,

    I got "null" all the time

    str=strstr((char*)line_buffer_GPS,"$GPGGA,");

    or
    ==> always gone (empty buffer / astable ) str=strstr((char*)GPS.rxBuffer,"$GPGGA,");

    ?? any ideas

Children
Related