How do I set the data rate of the NEMA messages used?

Here is the function call:

/* Set the rate of the NMEA messages used */

PSRF103("00", "00", "01", "02");                        // GGA at 1 sec rate

Here is the function:

//-----------------------------------------------------------------------------

// Function:    PSRF103

// Description: Send SiRF msg 103 to GPS

//-----------------------------------------------------------------------------

//where:        $PSRF103,05,00,01,01*20

//   $PSRF103

//   05         00=GGA

//              01=GLL

//              02=GSA

//              03=GSV

//              04=RMC

//              05=VTG

//   00         mode, 0=set rate, 1=query

//   01         rate in seconds, 0-255

//   01         checksum 0=no, 1=yes

//   *20        checksum

void PSRF103(char nmeamsg[], char mode[], char rate[], char chksum[])

{

char msg[25] = "$PSRF103";                              // NMEA msg

char csum[2];

unsigned short checksum = 0;

int i;

strcat(msg,",");

strcat(msg,nmeamsg);                                    // Add NMEA msg

strcat(msg,",");

strcat(msg,mode);                                       // Add mode

strcat(msg,",");

strcat(msg,rate);                                       // Add rate

strcat(msg,",");

strcat(msg,chksum);                                     // Add checksum mode

for (i=1;i<strlen(msg);i++)

checksum ^= msg[i];                                   // XOR

sprintf(csum,"%02X",checksum);                          // Convert hex string

strcat(msg,"*");                                        // Add checksum delimeter

strcat(msg, csum);                                      // Add checksum

strcat(msg,"\r\n");                                     // Add CR, LF

USART_SendString(GPS_USART,msg);                        // Send msg

DPRINT(msg);

}

Posted in: GPS, Sirf IV

2012-11-08T11:28:22-05:00 2018-06-27T02:21:27-04:00