3

初めてのポスターの長年の読者。

Bluetooth GPSユニットからデータを読み込んで遊んでいます。ハイパータームを使用して接続し、データを表示できます

次のログはハイパータームからのものです

$GPRMC,195307.109,A,5208.2241,N,00027.7689,W,000.0,345.8,310712,,,A*7E
$GPVTG,345.8,T,,M,000.0,N,000.0,K,A*07
$GPGGA,195308.109,5208.2242,N,00027.7688,W,1,04,2.1,58.9,M,47.3,M,,0000*7E
$GPGSA,A,3,19,03,11,22,,,,,,,,,5.5,2.1,5.0*3F
$GPRMC,195308.109,A,5208.2242,N,00027.7688,W,000.0,345.8,310712,,,A*73
$GPVTG,345.8,T,,M,000.0,N,000.0,K,A*07
$GPGGA,195309.109,5208.2243,N,00027.7688,W,1,04,2.1,58.9,M,47.3,M,,0000*7E

ログ終了

次のログは私の C++ プログラムからのものです

$GPGSV,3,3,12,14,20,105,16,28,18,323,,08,07,288,,16,01,178,*7A

$GPRMC,195,3,2ÿþÿÿÿL.š945.109,A,5208.2386,N,00027.7592,W,000.0,169.5,8,323,,08,07,288,,16,01,178,*7A

$GPRMC,195,3,2ÿþÿÿÿL.š310712,,,A*70

$GPVTG,169.5,T,,M,000.0,N,000.0,K,A*06

8,07,288,,16,01,178,*7A

$GPRMC,195,3,2ÿþÿÿÿL.š310712,,,A*70

$GPVTG,169.5,T,,M,000.0,N,000.0,K,A*06

8,07,288,,16,01,178,*7A

$GPRMC,195,3,2ÿþÿÿÿL.š$GPGGA,195946.109,5208.2386,N,00027.7592,W,1.0,K,A*06

8,07,288,,16,01,178,*7A

ログ終了

問題 改行をそのまま残しました。C++ の出力には余分な改行があります。理由がわかりません。C++ ログにも変な文字がいくつかあります...?

コード

    for (int n=0;n<100;n++) {
        char INBUFFER[100];
        cv::waitKey(1000);
        bStatus = ReadFile(comport,   // Handle
                &INBUFFER,            // Incoming data
                100,                  // Number of bytes to read
                &bytes_read,          // Number of bytes read
                NULL);

        cout << "bStatus " << bStatus << endl;
        if (bStatus != 0)
        {
            // error processing code goes here
        }
        LogFile << INBUFFER;
    }

設定を使っている...

    comSettings.BaudRate = 2400;
    comSettings.StopBits = ONESTOPBIT;
    comSettings.ByteSize = 8;
    comSettings.Parity   = NOPARITY;
    comSettings.fParity  = FALSE;

...私が知る限り、ハイパータームで使用される設定と同じです。私が間違っていることについてのヒントはありますか?

乾杯!

UPDATE したがって、bytes_read を使用するように更新し、NMEA データの末尾にある余分な LF を考慮するように更新した後、私は今持っています...

    if (bytes_read!=0) {
        for (int i=0; i < bytes_read; i++) {
            LogFile << INBUFFER[i];
        }
    }

固定されているようです。

$GPGGA,215057.026,5208.2189,N,00027.7349,W,1,04,6.8,244.6,M,47.3,M,,0000*41
$GPGSA,A,3,32,11,01,19,,,,,,,,,9.7,6.8,7.0*3D
$GPRMC,215057.026,A,5208.2189,N,00027.7349,W,002.0,208.7,310712,,,A*74
$GPVTG,208.7,T,,M,002.0,N,003.8,K,A*09
$GPGGA,215058.026,5208.2166,N,00027.7333,W,1,04,6.8,243.1,M,47.3,M,,0000*42

皆様、ご協力ありがとうございました。

4

1 に答える 1

4

あなたは変数を持っていますが、bytes_readそれで何もしませんか?INBUFFER実際に何バイト/数バイトがファイルにロードされていても、ファイル全体をダンプしているように見えますか?

于 2012-07-31T20:48:18.373 に答える