私はMio P550デバイスを持っています。これにはGPSが付属しています。私は、単にSerialPort.Read()を使って、NMEA文を得るためにSerialPortを使用しようとします。データはいくつかの奇妙なエンコーディングで返されます。 GPSはASCIIでNMEA文を返すべきですが、そうではありません。ここで読書のための私のコードは次のとおりです。GPSからNMEA文を読んでください
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());
}
そして、ここでは、私がリターンに入るサンプル値です。xæææxfæ`æxæføøøxxxøx
私はASCIIでNMEAセンテンスを返すも、第二のデバイス(のAsus A636N)を、持っていると私コードは素晴らしい作品です。
NMEA文をASCII形式で取得するにはどうすればよいですか?または、デバイスから返されたデータのエンコードを取得する方法は?私はSystem.Text.Encoding.xxx.GetString()からすべてのクラスを読み込みバイトから文字列を取得しようとしますが、正しいデータを返しません。上記のサンプルと同様のデータを返します。
ありがとうございます!それがこれだった。 Asusデバイスのすべての機能が、ボーレートをコードに設定せずにうまく動作するのはなぜかと思います。 – GTD
私にとっては、ストップビットを1に設定していないということでした。しかし、あなたは答えてくれました。ありがとう。 – wiggily