- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试编写一个简单的应用程序,该应用程序将根据已获取的 *.nmea
日志文件模拟 GPS 硬件设备。我选择的技术是Qt5.4.1。因为它已经有了应该处理我正在尝试做的任务的类(class)。类名是 QNmeaPositionInfoSource
。我想通过设置适当的更新间隔超时 QNmeaPositionInfoSource
实例会通知我新位置。但是,当我将间隔设置为 1s
时,我只会获得一个位置,并且会在超时后收到通知。当我将间隔设置为 0
时,我会立即收到所有关于位置的通知。
请在下面找到我的程序代码:
主窗口.cpp
#include <QDebug>
#include <QFile>
#include <QNmeaPositionInfoSource>
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
logFile = new QFile(":/files/dummy.nmea");
nmeaSource = new QNmeaPositionInfoSource(
QNmeaPositionInfoSource::SimulationMode);
nmeaSource->setDevice(logFile);
nmeaSource->setUpdateInterval(1000);
connect(nmeaSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
this, SLOT(positionUpdated(QGeoPositionInfo)));
connect(nmeaSource, SIGNAL(updateTimeout()), this, SLOT(updateTimeout()));
connect(nmeaSource,SIGNAL(error(QGeoPositionInfoSource::Error)),
this,SLOT(error(QGeoPositionInfoSource::Error)));
nmeaSource->startUpdates();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::positionUpdated(QGeoPositionInfo positionInfo)
{
qDebug() << __PRETTY_FUNCTION__;
qDebug() << QString("Lat: %1").arg(QString::number(positionInfo.coordinate().latitude()));
qDebug() << QString("Lon: %1").arg(QString::number(positionInfo.coordinate().longitude()));
}
void MainWindow::updateTimeout(void)
{
qDebug() << __PRETTY_FUNCTION__;
}
void MainWindow::error(QGeoPositionInfoSource::Error positioningError)
{
qDebug() << __PRETTY_FUNCTION__;
qDebug() << QString::number(positioningError);
}
主窗口.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QGeoPositionInfo>
#include <QGeoPositionInfoSource>
class QFile;
class QNmeaPositionInfoSource;
//class QGeoPositionInfoSource;
namespace Ui
{
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QFile *logFile;
QNmeaPositionInfoSource *nmeaSource;
private slots:
void positionUpdated(QGeoPositionInfo positionInfo);
void updateTimeout(void);
void error(QGeoPositionInfoSource::Error positioningError);
};
#endif // MAINWINDOW_H
虚拟.nmea
$GPGGA,222437.000,2734.33926,S,15305.44310,E,1,07,1.3,50.6,M,39.2,M,,*72
$GPGLL,2734.33926,S,15305.44310,E,222437.000,A,A*49
$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D
$GPGST,222437.000,13.3,7.4,6.6,85.1,6.0,6.8,13.7*56
$GPGSV,3,1,10,16,49,115,42,25,39,269,36,23,58,176,29,20,72,335,35*75
$GPGSV,3,2,10,19,02,028,,04,06,241,22,13,30,223,30,27,19,284,35*78
$GPGSV,3,3,10,11,06,337,30,03,13,055,25*7C
$GPRMC,222437.000,A,2734.33926,S,15305.44310,E,33.9,157.8,030308,11.2,W,A*0F
$GPVTG,157.8,T,169.0,M,33.9,N,62.9,K,A*22
$GPGGA,222438.000,2734.34821,S,15305.44697,E,1,07,1.2,50.8,M,39.2,M,,*79
$GPGLL,2734.34821,S,15305.44697,E,222438.000,A,A*4D
$GPGSA,A,3,16,25,23,20,13,27,03,,,,,,2.1,1.2,1.7*33
$GPGST,222438.000,12.4,6.4,9.3,16.2,6.1,8.3,16.4*5F
$GPGSV,3,1,10,16,49,115,41,25,39,269,36,23,58,176,28,20,72,335,36*74
$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,28,27,19,284,35*73
$GPGSV,3,3,10,11,06,337,28,03,13,055,25*75
$GPRMC,222438.000,A,2734.34821,S,15305.44697,E,33.8,158.3,030308,11.2,W,A*0E
$GPVTG,158.3,T,169.5,M,33.8,N,62.5,K,A*2E
$GPGGA,222439.000,2734.35696,S,15305.45072,E,1,06,1.7,51.2,M,39.2,M,,*78
$GPGLL,2734.35696,S,15305.45072,E,222439.000,A,A*43
$GPGSA,A,3,16,25,23,20,13,27,,,,,,,3.3,1.7,2.8*3A
$GPGST,222439.000,10.3,9.1,12.2,44.6,9.8,9.9,25.2*62
$GPGSV,3,1,10,16,49,115,34,25,39,269,36,23,58,175,29,20,72,335,35*77
$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,27,27,19,284,32*7B
$GPGSV,3,3,10,11,06,337,28,03,14,055,25*72
$GPRMC,222439.000,A,2734.35696,S,15305.45072,E,33.2,158.7,030308,11.2,W,A*0E
$GPVTG,158.7,T,169.9,M,33.2,N,61.5,K,A*2F
$GPGGA,222440.000,2734.36580,S,15305.45446,E,1,07,1.3,52.0,M,39.2,M,,*76
$GPGLL,2734.36580,S,15305.45446,E,222440.000,A,A*49
$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D
$GPGST,222440.000,13.0,8.0,13.4,6.2,7.4,12.2,20.9*64
$GPGSV,3,1,10,16,49,115,40,25,39,269,38,23,58,175,31,20,72,335,34*72
$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,26,27,19,284,30*78
$GPGSV,3,3,10,11,06,337,26,03,14,055,25*7C
$GPRMC,222440.000,A,2734.36580,S,15305.45446,E,33.7,159.1,030308,11.2,W,A*06
$GPVTG,159.1,T,170.3,M,33.7,N,62.4,K,A*2D
$GPGGA,222441.000,2734.37483,S,15305.45825,E,1,07,1.3,52.7,M,39.2,M,,*7A
$GPGLL,2734.37483,S,15305.45825,E,222441.000,A,A*42
$GPGSA,A,3,16,25,23,20,13,27,11,,,,,,2.3,1.3,1.9*3D
$GPGST,222441.000,14.0,7.6,14.1,17.6,7.7,12.5,21.0*51
$GPGSV,3,1,10,16,49,115,41,25,39,269,39,23,58,175,29,20,72,335,35*7A
$GPGSV,3,2,10,19,02,028,,04,06,241,20,13,30,223,24,27,19,284,30*7A
$GPGSV,3,3,10,11,06,337,28,03,14,055,25*72
$GPRMC,222441.000,A,2734.37483,S,15305.45825,E,34.6,159.4,030308,11.2,W,A*0E
$GPVTG,159.4,T,170.6,M,34.6,N,64.1,K,A*28
$GPGGA,222442.000,2734.38407,S,15305.46216,E,1,06,1.3,53.3,M,39.2,M,,*77
$GPGLL,2734.38407,S,15305.46216,E,222442.000,A,A*4B
$GPGSA,A,3,16,25,20,13,27,11,,,,,,,2.3,1.3,1.9*3C
$GPGST,222442.000,16.6,7.0,14.4,14.6,7.0,12.8,21.6*5A
$GPGSV,3,1,10,16,49,115,40,25,39,269,38,23,58,175,22,20,72,335,35*71
问题是为什么我会收到超时通知?
最佳答案
遇到同样的问题。
如果您在 NMEA 文件中只保留 $GPGGA 和 $GPRMC 行,它就会正常工作。$GPVTG 确实会导致您所描述的问题,$GPGSV - 不要(所以您也可以保留它,不重要)。我没有单独测试的其他 NMEA 消息。
“纯”NMEA 文件如帮助中所述完美工作:即使不调用 setUpdateInterval()(显然与零参数相同),您也会根据 NMEA 行中的时间戳获得更新间隔。
这显然是 Qt 错误。即使您在桌面上运行 GeoFlickr 示例(以便程序在 SimulationMode 中开始使用 QNmeaPositionInfoSource),您也会看到按下“定位和更新”按钮仅在第一次单击时显示一次纬度和经度数据。之后它显示“检索更新”并且没有任何反应,但根据代码它应该。
另一种情况可能仅在 $GPVTG 消息中得到证实:我使用 GeoFlickr 示例中的“nmealog.txt”代替您的“dummy.nmea”,并且我在超时前调用了两次 positionUpdated。一个用于 $GPGGA,一个用于 $GPRMC。然而,在您的“dummy.nmea”中,$GPVTG 之前只有一条消息 $GPRMC,因此您只通知了一次 positionUpdated 调用。
(以防万一在 Windows 7 上的 Qt5.5.1 上玩)
关于c++ - 使用 QNmeaPositionInfoSource 类解析 *.nmea 文件返回超时。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30684052/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!