GPS parser function doesn't work with new receiverHow do you pass a function as a parameter in C?Best XML parser for JavaWhat is a “static” function?How do function pointers in C work?Which HTML Parser is the best?lexers vs parsersHTML-parser on Node.jsGet total distance travelled using GPS doesn't update my locationAndroid GPS using old locationsWhile moving GPS Lat/Long values intermittantly don't change
Why does Canada require bilingualism in a lot of federal government posts?
Connection Between Liver & Honor?
How can chaotic entities be prevented from spreading beyond their domain?
Should I let a company know I've reverse engineered and rebuilt their app?
What is a good example for artistic ND filter applications?
How can Paypal know my card is being used in another account?
Why did some Apollo missions carry a grenade launcher?
Was Donald Trump at ground zero helping out on 9-11?
Employer stores plain text personal data in a 'data warehouse'
Assuring luggage isn't lost with short layover
Get string from array or set default value in a one liner
What is the general way to say something like "in your room?" without a verb?
How to store my pliers and wire cutters on my desk?
What is an Accessible Word?
Is there any app for reduce battery draining for ios 12?
Surviving a planet collision?
What are the closest international airports in different countries?
Omnidirectional LED, is it possible?
What language is Raven using for her attack in the new 52?
How well would the Moon protect the Earth from an Asteroid?
What is this presumably parasitic plant in an Oak Hickory forest in Eastern Long Island, New York?
Is Project Image immune to any types of damage?
Why did House of Representatives need to condemn Trumps Tweets?
Why put copper in between battery contacts and clamps?
GPS parser function doesn't work with new receiver
How do you pass a function as a parameter in C?Best XML parser for JavaWhat is a “static” function?How do function pointers in C work?Which HTML Parser is the best?lexers vs parsersHTML-parser on Node.jsGet total distance travelled using GPS doesn't update my locationAndroid GPS using old locationsWhile moving GPS Lat/Long values intermittantly don't change
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I'm using an old device (2006 - extremely trimmed embedded Linux) to get GPS latitude and longitude from an external receiver. GPS coordinates are displayed on device's LCD display. It used to work fine until the original GPS receiver failed. They replaced it with a new receiver but now it doesn't work anymore, all I see on LCD is: Latitude: - / Longitude: -.
I tried to see if the new GPS receiver is operational. And it seems the GPGGA packets are there. The old device expects GPGGA packets for parsing/processing.
char GPSLatBuf[12], GPSLonBuf[12];
int parseGPSData(char * gpsBuffer)
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
p += 7; // UTC time
if(*p != ',')
p += 10; // Latitude
if(*p != ',')
memcpy(&GPSLatBuf[1], p, 9);
p += 10; // N/S Hemisphere
if(*p != ',')
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
p += 2; // Longitude
if(*p != ',')
memcpy(&GPSLonBuf[1], p, 10);
p += 11; // E/W Hemisphere
if(*p != ',')
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
p += 2; // GPS quality
if(*p != ',')
gpsQuality = *p;
if(gpsQuality == '0')
return -1;
return 0;
Expected to see non-void fields like before: +4916.4600 / -12311.1200 (just an example as I see nothing on display right now).
c parsing gps
|
show 3 more comments
I'm using an old device (2006 - extremely trimmed embedded Linux) to get GPS latitude and longitude from an external receiver. GPS coordinates are displayed on device's LCD display. It used to work fine until the original GPS receiver failed. They replaced it with a new receiver but now it doesn't work anymore, all I see on LCD is: Latitude: - / Longitude: -.
I tried to see if the new GPS receiver is operational. And it seems the GPGGA packets are there. The old device expects GPGGA packets for parsing/processing.
char GPSLatBuf[12], GPSLonBuf[12];
int parseGPSData(char * gpsBuffer)
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
p += 7; // UTC time
if(*p != ',')
p += 10; // Latitude
if(*p != ',')
memcpy(&GPSLatBuf[1], p, 9);
p += 10; // N/S Hemisphere
if(*p != ',')
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
p += 2; // Longitude
if(*p != ',')
memcpy(&GPSLonBuf[1], p, 10);
p += 11; // E/W Hemisphere
if(*p != ',')
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
p += 2; // GPS quality
if(*p != ',')
gpsQuality = *p;
if(gpsQuality == '0')
return -1;
return 0;
Expected to see non-void fields like before: +4916.4600 / -12311.1200 (just an example as I see nothing on display right now).
c parsing gps
This is impossible to answer with the available information. You’ll need to know what the interface to the old receiver was, and how the new receiver behaves differently. Since you’ve not identified the new model, there’s nothing we can do to help. Even if you did specify it, there’d be a lot of questions to be answered. Have you obtained the programming manuals for the new device? If not, do so.
– Jonathan Leffler
Mar 26 at 20:26
Figure out which string is not parsable, generate a test case based on it and debug.
– Eugene Sh.
Mar 26 at 20:26
I thought about debug too, but it's an old device and it provides no debug info, no logs. Luckily we have the source code.
– scuberula
Mar 26 at 20:31
The code seem to be portable enough to be debugged even not on the target.
– Eugene Sh.
Mar 26 at 20:35
@JonathanLeffler: But afaik, GPGGA should be standard NMEA message, right? Or are there variations, different implementations allowed?
– scuberula
Mar 26 at 20:38
|
show 3 more comments
I'm using an old device (2006 - extremely trimmed embedded Linux) to get GPS latitude and longitude from an external receiver. GPS coordinates are displayed on device's LCD display. It used to work fine until the original GPS receiver failed. They replaced it with a new receiver but now it doesn't work anymore, all I see on LCD is: Latitude: - / Longitude: -.
I tried to see if the new GPS receiver is operational. And it seems the GPGGA packets are there. The old device expects GPGGA packets for parsing/processing.
char GPSLatBuf[12], GPSLonBuf[12];
int parseGPSData(char * gpsBuffer)
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
p += 7; // UTC time
if(*p != ',')
p += 10; // Latitude
if(*p != ',')
memcpy(&GPSLatBuf[1], p, 9);
p += 10; // N/S Hemisphere
if(*p != ',')
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
p += 2; // Longitude
if(*p != ',')
memcpy(&GPSLonBuf[1], p, 10);
p += 11; // E/W Hemisphere
if(*p != ',')
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
p += 2; // GPS quality
if(*p != ',')
gpsQuality = *p;
if(gpsQuality == '0')
return -1;
return 0;
Expected to see non-void fields like before: +4916.4600 / -12311.1200 (just an example as I see nothing on display right now).
c parsing gps
I'm using an old device (2006 - extremely trimmed embedded Linux) to get GPS latitude and longitude from an external receiver. GPS coordinates are displayed on device's LCD display. It used to work fine until the original GPS receiver failed. They replaced it with a new receiver but now it doesn't work anymore, all I see on LCD is: Latitude: - / Longitude: -.
I tried to see if the new GPS receiver is operational. And it seems the GPGGA packets are there. The old device expects GPGGA packets for parsing/processing.
char GPSLatBuf[12], GPSLonBuf[12];
int parseGPSData(char * gpsBuffer)
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
p += 7; // UTC time
if(*p != ',')
p += 10; // Latitude
if(*p != ',')
memcpy(&GPSLatBuf[1], p, 9);
p += 10; // N/S Hemisphere
if(*p != ',')
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
p += 2; // Longitude
if(*p != ',')
memcpy(&GPSLonBuf[1], p, 10);
p += 11; // E/W Hemisphere
if(*p != ',')
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
p += 2; // GPS quality
if(*p != ',')
gpsQuality = *p;
if(gpsQuality == '0')
return -1;
return 0;
Expected to see non-void fields like before: +4916.4600 / -12311.1200 (just an example as I see nothing on display right now).
c parsing gps
c parsing gps
edited Mar 27 at 18:20
scuberula
asked Mar 26 at 20:21
scuberulascuberula
54 bronze badges
54 bronze badges
This is impossible to answer with the available information. You’ll need to know what the interface to the old receiver was, and how the new receiver behaves differently. Since you’ve not identified the new model, there’s nothing we can do to help. Even if you did specify it, there’d be a lot of questions to be answered. Have you obtained the programming manuals for the new device? If not, do so.
– Jonathan Leffler
Mar 26 at 20:26
Figure out which string is not parsable, generate a test case based on it and debug.
– Eugene Sh.
Mar 26 at 20:26
I thought about debug too, but it's an old device and it provides no debug info, no logs. Luckily we have the source code.
– scuberula
Mar 26 at 20:31
The code seem to be portable enough to be debugged even not on the target.
– Eugene Sh.
Mar 26 at 20:35
@JonathanLeffler: But afaik, GPGGA should be standard NMEA message, right? Or are there variations, different implementations allowed?
– scuberula
Mar 26 at 20:38
|
show 3 more comments
This is impossible to answer with the available information. You’ll need to know what the interface to the old receiver was, and how the new receiver behaves differently. Since you’ve not identified the new model, there’s nothing we can do to help. Even if you did specify it, there’d be a lot of questions to be answered. Have you obtained the programming manuals for the new device? If not, do so.
– Jonathan Leffler
Mar 26 at 20:26
Figure out which string is not parsable, generate a test case based on it and debug.
– Eugene Sh.
Mar 26 at 20:26
I thought about debug too, but it's an old device and it provides no debug info, no logs. Luckily we have the source code.
– scuberula
Mar 26 at 20:31
The code seem to be portable enough to be debugged even not on the target.
– Eugene Sh.
Mar 26 at 20:35
@JonathanLeffler: But afaik, GPGGA should be standard NMEA message, right? Or are there variations, different implementations allowed?
– scuberula
Mar 26 at 20:38
This is impossible to answer with the available information. You’ll need to know what the interface to the old receiver was, and how the new receiver behaves differently. Since you’ve not identified the new model, there’s nothing we can do to help. Even if you did specify it, there’d be a lot of questions to be answered. Have you obtained the programming manuals for the new device? If not, do so.
– Jonathan Leffler
Mar 26 at 20:26
This is impossible to answer with the available information. You’ll need to know what the interface to the old receiver was, and how the new receiver behaves differently. Since you’ve not identified the new model, there’s nothing we can do to help. Even if you did specify it, there’d be a lot of questions to be answered. Have you obtained the programming manuals for the new device? If not, do so.
– Jonathan Leffler
Mar 26 at 20:26
Figure out which string is not parsable, generate a test case based on it and debug.
– Eugene Sh.
Mar 26 at 20:26
Figure out which string is not parsable, generate a test case based on it and debug.
– Eugene Sh.
Mar 26 at 20:26
I thought about debug too, but it's an old device and it provides no debug info, no logs. Luckily we have the source code.
– scuberula
Mar 26 at 20:31
I thought about debug too, but it's an old device and it provides no debug info, no logs. Luckily we have the source code.
– scuberula
Mar 26 at 20:31
The code seem to be portable enough to be debugged even not on the target.
– Eugene Sh.
Mar 26 at 20:35
The code seem to be portable enough to be debugged even not on the target.
– Eugene Sh.
Mar 26 at 20:35
@JonathanLeffler: But afaik, GPGGA should be standard NMEA message, right? Or are there variations, different implementations allowed?
– scuberula
Mar 26 at 20:38
@JonathanLeffler: But afaik, GPGGA should be standard NMEA message, right? Or are there variations, different implementations allowed?
– scuberula
Mar 26 at 20:38
|
show 3 more comments
1 Answer
1
active
oldest
votes
Hope this is not too late.
The idea is: the number of decimal digits of data inside GPGGA message is somehow specific to GPS module.
Hence, your code has an issue here, as it uses fixed offsets to search for latitude, longitude, etc.
It is easy to fix that: instead of using fixed offsets, you should search for the delimiter ("," in this case) using strstr() function.
Here's the corrected code:
int parseGPSData(char * gpsBuffer)
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
if((p = strstr(p, ",")) != NULL)
p++; // there is UTC time
if((p = strstr(p, ",")) != NULL)
p++; // Latitude
memcpy(&GPSLatBuf[1], p, 9);
if((p = strstr(p, ",")) != NULL)
p++; // N/S Hemisphere
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
p++; // Longitude
memcpy(&GPSLonBuf[1], p, 10);
if((p = strstr(p, ",")) != NULL)
p++; // E/W Hemisphere
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
gpsQuality = p[1];
if(gpsQuality == '0')
return -1;
return 0;
I'm pretty sure this will solve your issue :)
Thanks, this solved the issue :) Sorry I dont have enough rep to vote your answer :(
– scuberula
Jun 30 at 8:14
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55365638%2fgps-parser-function-doesnt-work-with-new-receiver%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Hope this is not too late.
The idea is: the number of decimal digits of data inside GPGGA message is somehow specific to GPS module.
Hence, your code has an issue here, as it uses fixed offsets to search for latitude, longitude, etc.
It is easy to fix that: instead of using fixed offsets, you should search for the delimiter ("," in this case) using strstr() function.
Here's the corrected code:
int parseGPSData(char * gpsBuffer)
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
if((p = strstr(p, ",")) != NULL)
p++; // there is UTC time
if((p = strstr(p, ",")) != NULL)
p++; // Latitude
memcpy(&GPSLatBuf[1], p, 9);
if((p = strstr(p, ",")) != NULL)
p++; // N/S Hemisphere
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
p++; // Longitude
memcpy(&GPSLonBuf[1], p, 10);
if((p = strstr(p, ",")) != NULL)
p++; // E/W Hemisphere
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
gpsQuality = p[1];
if(gpsQuality == '0')
return -1;
return 0;
I'm pretty sure this will solve your issue :)
Thanks, this solved the issue :) Sorry I dont have enough rep to vote your answer :(
– scuberula
Jun 30 at 8:14
add a comment |
Hope this is not too late.
The idea is: the number of decimal digits of data inside GPGGA message is somehow specific to GPS module.
Hence, your code has an issue here, as it uses fixed offsets to search for latitude, longitude, etc.
It is easy to fix that: instead of using fixed offsets, you should search for the delimiter ("," in this case) using strstr() function.
Here's the corrected code:
int parseGPSData(char * gpsBuffer)
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
if((p = strstr(p, ",")) != NULL)
p++; // there is UTC time
if((p = strstr(p, ",")) != NULL)
p++; // Latitude
memcpy(&GPSLatBuf[1], p, 9);
if((p = strstr(p, ",")) != NULL)
p++; // N/S Hemisphere
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
p++; // Longitude
memcpy(&GPSLonBuf[1], p, 10);
if((p = strstr(p, ",")) != NULL)
p++; // E/W Hemisphere
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
gpsQuality = p[1];
if(gpsQuality == '0')
return -1;
return 0;
I'm pretty sure this will solve your issue :)
Thanks, this solved the issue :) Sorry I dont have enough rep to vote your answer :(
– scuberula
Jun 30 at 8:14
add a comment |
Hope this is not too late.
The idea is: the number of decimal digits of data inside GPGGA message is somehow specific to GPS module.
Hence, your code has an issue here, as it uses fixed offsets to search for latitude, longitude, etc.
It is easy to fix that: instead of using fixed offsets, you should search for the delimiter ("," in this case) using strstr() function.
Here's the corrected code:
int parseGPSData(char * gpsBuffer)
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
if((p = strstr(p, ",")) != NULL)
p++; // there is UTC time
if((p = strstr(p, ",")) != NULL)
p++; // Latitude
memcpy(&GPSLatBuf[1], p, 9);
if((p = strstr(p, ",")) != NULL)
p++; // N/S Hemisphere
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
p++; // Longitude
memcpy(&GPSLonBuf[1], p, 10);
if((p = strstr(p, ",")) != NULL)
p++; // E/W Hemisphere
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
gpsQuality = p[1];
if(gpsQuality == '0')
return -1;
return 0;
I'm pretty sure this will solve your issue :)
Hope this is not too late.
The idea is: the number of decimal digits of data inside GPGGA message is somehow specific to GPS module.
Hence, your code has an issue here, as it uses fixed offsets to search for latitude, longitude, etc.
It is easy to fix that: instead of using fixed offsets, you should search for the delimiter ("," in this case) using strstr() function.
Here's the corrected code:
int parseGPSData(char * gpsBuffer)
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
if((p = strstr(p, ",")) != NULL)
p++; // there is UTC time
if((p = strstr(p, ",")) != NULL)
p++; // Latitude
memcpy(&GPSLatBuf[1], p, 9);
if((p = strstr(p, ",")) != NULL)
p++; // N/S Hemisphere
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
p++; // Longitude
memcpy(&GPSLonBuf[1], p, 10);
if((p = strstr(p, ",")) != NULL)
p++; // E/W Hemisphere
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
if((p = strstr(p, ",")) != NULL)
gpsQuality = p[1];
if(gpsQuality == '0')
return -1;
return 0;
I'm pretty sure this will solve your issue :)
answered Jun 27 at 8:21
סטנלי גרונןסטנלי גרונן
1,7978 gold badges26 silver badges47 bronze badges
1,7978 gold badges26 silver badges47 bronze badges
Thanks, this solved the issue :) Sorry I dont have enough rep to vote your answer :(
– scuberula
Jun 30 at 8:14
add a comment |
Thanks, this solved the issue :) Sorry I dont have enough rep to vote your answer :(
– scuberula
Jun 30 at 8:14
Thanks, this solved the issue :) Sorry I dont have enough rep to vote your answer :(
– scuberula
Jun 30 at 8:14
Thanks, this solved the issue :) Sorry I dont have enough rep to vote your answer :(
– scuberula
Jun 30 at 8:14
add a comment |
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55365638%2fgps-parser-function-doesnt-work-with-new-receiver%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
This is impossible to answer with the available information. You’ll need to know what the interface to the old receiver was, and how the new receiver behaves differently. Since you’ve not identified the new model, there’s nothing we can do to help. Even if you did specify it, there’d be a lot of questions to be answered. Have you obtained the programming manuals for the new device? If not, do so.
– Jonathan Leffler
Mar 26 at 20:26
Figure out which string is not parsable, generate a test case based on it and debug.
– Eugene Sh.
Mar 26 at 20:26
I thought about debug too, but it's an old device and it provides no debug info, no logs. Luckily we have the source code.
– scuberula
Mar 26 at 20:31
The code seem to be portable enough to be debugged even not on the target.
– Eugene Sh.
Mar 26 at 20:35
@JonathanLeffler: But afaik, GPGGA should be standard NMEA message, right? Or are there variations, different implementations allowed?
– scuberula
Mar 26 at 20:38