J'ai un appareil Mio P550, qui a un GPS inclus. J'essaie d'utiliser SerialPort pour obtenir des phrases NMEA, en utilisant simplement SerialPort.Read(). Les données sont renvoyées dans un codage bizarre. Le GPS devrait renvoyer des phrases NMEA en ASCII, mais ce n'est pas le cas. Voici mon code pour la lecture:lire des phrases NMEA de GPS
dataLength = this.serialPort.Read(buffor, 0, Gps.BUFFOR_LENGTH);
Debug.WriteLine("data length: " + dataLength);
if (dataLength > 0)
{
for (int i = 0; i < dataLength; i++)
{
char c = Convert.ToChar(buffor[i]);
if (c == '\r' || c == '\n')
{
string data = stringBuilder.ToString();
Debug.WriteLine("data readed: " + data);
if (data.StartsWith("$GPGGA"))
{
this.OnLocationChanged(data);
}
stringBuilder.Length = 0;
}
else
{
stringBuilder.Append(c);
}
Debug.WriteLine("readed data: " + stringBuilder.ToString());
}
Et voici la valeur échantillon je reçois en retour: xæææxfæ`æxæføøøxxxøx
Je possède également un second dispositif (Asus A636N), qui renvoient des phrases NMEA en ASCII et mon le code fonctionne très bien.
Qu'est-ce que j'ai à faire avec un périphérique Mio pour obtenir des phrases NMEA en ASCII? Ou comment je peux obtenir l'encodage pour les données retournées par l'appareil? J'essaie d'utiliser toutes les classes de System.Text.Encoding.xxx.GetString() pour obtenir la chaîne à partir des octets lus mais il ne renvoie pas de données correctes - il renvoie des données similaires à l'exemple ci-dessus.
Merci! C'était ça. Je me demande maintenant pourquoi tout sur l'appareil Asus fonctionne très bien sans régler le débit en bauds dans le code. – GTD
Pour moi c'était que je n'avais pas mis les bits d'arrêt à 1. Mais votre réponse m'a donné l'idée de vérifier aussi. Merci. – wiggily