GP635T GPS传感器输出数据

时间:2015-08-07 19:11:31

标签: c++ gps sensor intel-edison

我的GP635T GPS传感器连接到我的英特尔爱迪生,我有一个相当奇怪的问题。我使用C ++和Eclipse对其进行编程。

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

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

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

我得到一个长输出,包含从$GPGGA$GPTXT的所有类型的支持消息(请参阅数据表 - &gt; 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;

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

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

1 个答案:

答案 0 :(得分:0)

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

        while(serialGPS.dataAvailable(10))
          {
              message += serialGPS.readStr(1);
          }
相关问题