0

我的 GP635T GPS 传感器连接到我的 Intel Edison 时遇到了一个相当奇怪的问题。我使用 C++ 和 Eclipse 对其进行编程。

如果我尝试接收这样的数据

          message = serialGPS.readStr(100);
          startPosition = message.find('$');
          endPosition = message.find("\n");

          std::cout << "Complete message: " << message << std::endl;

$GPGGA我得到一个很长的输出,其中包含从到的所有类型的受支持消息$GPTXT(请参阅数据表 --> http://www.cypax.dk/pdf/GP-635T-121130.pdf)。但我只想使用$GPGLL-messages。所以我调整了代码以找到该消息开头和结尾的索引:

          message = serialGPS.readStr(100);
          startPosition = message.find("$GPGLL");
          endPosition = message.find('$', startPosition+1);

          std::cout << "Complete message: " << message << std::endl;

但是使用该代码,变量“消息”始终只包含一条随机类型的消息。我不知道为什么会发生这种情况,因为我没有在代码中的任何地方触摸变量“消息”。

此外,如果我删除/注释这些行,也会发生同样的效果message.find()。我仍然只收到一条随机类型的消息。只有第一个代码块显示长消息。

4

1 回答 1

0

我现在设法通过不接收整个字符串来解决问题,但总是得到一个字符。使用此代码,它对我有用。

        while(serialGPS.dataAvailable(10))
          {
              message += serialGPS.readStr(1);
          }
于 2015-08-09T14:10:25.100 回答