GP635T GPS-传感器数据输出

GP635T GPS-sensor output of data

我的 GP635T GPS 传感器连接到我的英特尔爱迪生时遇到了一个相当奇怪的问题。我使用 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 消息。所以我调整了代码以找到该消息开头和结尾的索引:

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

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

但是使用该代码,变量 'message' 始终只包含一条随机类型的消息。我不知道为什么会这样,因为我没有在代码中的任何地方触及变量 'message'。

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

我现在设法通过不接收整个字符串但始终接收单个字符来解决问题。使用此代码,它对我有用。

        while(serialGPS.dataAvailable(10))
          {
              message += serialGPS.readStr(1);
          }