我的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()
行,则会发生相同的效果。我仍然只收到一条随机类型的消息。只有第一个代码块显示长消息。
答案 0 :(得分:0)
我设法通过不接收整个字符串来解决问题,但总是得到一个字符。使用此代码,它适用于我。
while(serialGPS.dataAvailable(10))
{
message += serialGPS.readStr(1);
}