Did you ever get this resolved? If not, perhaps I can help.
I recently received my GPS. It happens to be a SkyLab SKM53, but your GPS may be compatible.
First, grab a copy of the document at:
http://api.ning.com/files/L30xp1HTxtEUhhmBj4yYWIB31IDKs*xJNecJYvcEKZofuHJcZ3wnTMuZL5FeJC535I6DJbBZZE7FpJwnQPxgT9yKLCibZaZj/NMEA_Packet_Userl.pdf
It shows a lot of packet types, and what they mean. One packet type is to set the frequency of updates for each packet type, which is exactly what you want. It's packet type 314. It allows you to disable any of the 17 sentences, or to set them to output every 1, 2, 3, 4, or 5 position fixes.
It also allows you to do such things as changing the GPS baud rate, and many more.
One packet type they missed is 220., which takes a value that appears to be in milliseconds, and sets the frequency of updates.
One of the problems you will run into is that the GPS will not act on your configuration packet unless it has a proper checksum. Once I realized that, I decided to write a small Arduino sketch to configure a GPS using the Serial Monitor (or terminal program). It takes a packet, from $ to *, calculates the checksum, and sends it to the GPS.
It's pretty simple.. no real error checking, so I can't be responsible if you send your GPS something that locks it up, etc.
/*
Enter a packet starting with $PMTK, and ending with a *
In this sketch the * indicates the end of transmission.
The sketch takes the packet, adds a checksum and sends it to
the GPS.
Note: If you change the baud rate of the GPS, you will have to
close the Serial monitor, change the baud rate in Serial1
(or whatever Serial port you use) and restart it.
This sketch assumes you are running an Arduino Mega2560, and
have a serial GPS on Serial1. Change this to suit your own
congiguration.
One packet type not mentioned in the document at
http://api.ning.com/files/L30xp1HTxtEUhhmBj4yYWIB31IDKs*xJNecJYvcEKZofuHJcZ3wnTMuZL5FeJC535I6DJbBZZE7FpJwnQPxgT9yKLCibZaZj/NMEA_Packet_Userl.pdf
is packet type 220. Here are a couple of samples, as you
would enter them into the Serial Monitor
$PMTK220,200*
$PMTK220,500*
$PMTK220,1000*
$PMTK220,2000*
These will set the reporting interval to 200, 500, 1000,
and 2000 milliseconds respectively.
*/
char sentence[80];
int idx = 0;
void setup() {
// initialize both serial ports:
Serial.begin(57600);
Serial1.begin(38400);
}
void loop() {
// read from Serial1, send to Serial:
if (Serial1.available()) {
Serial.write(Serial1.read());
}
if (Serial.available()) {
char inbyte = Serial.read();
sentence[idx++] = inbyte;
sentence[idx] = 0;
if (inbyte == '*') {
for (int i=0; i < strlen(sentence); i++) {
Serial.print(sentence[i]);
}
Serial.println();
sendConfig ();
sentence[0] = 0;
idx = 0;
}
}
}
void sendConfig () {
unsigned char CS = 0;
for (int i=1; i< strlen(sentence)-1; i++) {
CS ^= sentence[i];
}
Serial1.print(sentence);
if (CS < 10) Serial1.print("0");
Serial1.print(CS,HEX);
Serial1.println();
}
Hope this helps.