Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在没有修复时从gpsd获取时间(ublox lea-6T gps)_Python_Gps - Fatal编程技术网

Python在没有修复时从gpsd获取时间(ublox lea-6T gps)

Python在没有修复时从gpsd获取时间(ublox lea-6T gps),python,gps,Python,Gps,我正在使用gpsd。我有一个UBlox LEA-6T gps。当它冷启动时,我在得到第一个位置修正之前很久就得到了时间信息。时间信息如下所示(使用gpspipe-r): 查看$GPRMC,您可以看到时间(191917)和日期(050415)。从第四位到最后一位的“N”表示“无固定” 我正在使用Python并打开GPS,如下所示: from gps import gps, WATCH_ENABLE, WATCH_NEWSTYLE session = gps() session.stream(WAT

我正在使用gpsd。我有一个UBlox LEA-6T gps。当它冷启动时,我在得到第一个位置修正之前很久就得到了时间信息。时间信息如下所示(使用gpspipe-r):

查看$GPRMC,您可以看到时间(191917)和日期(050415)。从第四位到最后一位的“N”表示“无固定”

我正在使用Python并打开GPS,如下所示:

from gps import gps, WATCH_ENABLE, WATCH_NEWSTYLE
session = gps()
session.stream(WATCH_ENABLE | WATCH_NEWSTYLE)

但是,在修复之前,我不会获取任何数据。当我没有固定位置时,有没有办法从gpsd获取gps时间?

使用gpsd项目中的
gps
模块从gpsd获取的时间来自实例中的
self.utc
self.fix.time
,或者来自您创建的某个实例,或者来自某个实例中的某个实例

打印(“UTC&time”,gpsdata.UTC,,,gpsdata.fix.time)

我记得,
utc
是通过从
misc.py
导入的函数
isotime
转换的历元时间,
self.fix.time
是ISO8601字符串

但是,您看到的是NMEA语句,而不是新的批评,ESR在6年前提出的,大约与gpsd采用JSON协议的时间相同。竞选活动继续进行

GPSD将大量JSON对象TPV(Time-pPOSITION-Velocity)、SKY(卫星数据)等作为一种简洁、直接的协议输出

由于JSON协议,以及将来与Python世界的集成,我推荐使用gpsd和Python

虽然它仍然是Alfa,但它并没有拖入太多的历史积垢,对派生的Python字典使用相同的JSON命名结构,并且可以与Python2和Python3一起使用

当它与项目放在同一个目录中时,它也很简单<代码>TPV={'time','alt','tag','gramb','device','epc','epd','eps','ept','epv','epx','epy','lat','lon','mode','track','speed'}

SKY={'hdop','vdop','pdop','gdop','tdop','xdop','ydop',}
…等等

import gps3

gps_connection = gps3.GPSDSocket()
gps_fix = gps3.Fix()

try:
    for new_data in gps_connection:
        if new_data:
            gps_fix.refresh(new_data)
            print(gps_fix.TPV['time'])
            print(gps_fix.TPV['lat'])
            print(gps_fix.TPV['lon'])
            print(gps_fix.SKY['gdop'])
except KeyboardInterrupt:
    gps_connection.close()
    print('\nTerminated by user\nGood Bye.\n')

在我将代码切换到gps3之前,您能否确认这将在没有修复的情况下为我提供GPS时间?我相信我的问题是GPSD没有修复程序就不会向我发送数据。(即,我认为我当前的代码提供了它从GPSD获得的所有信息,GPSD正在过滤掉无修复数据。)您的代码示例没有显式地显示与GPSD不同的连接配置,所以我认为它的行为会是相同的?或者gps3是否在不使用过滤器的情况下打开到GPSD的更“原始”的连接?还是我遗漏了什么?@proximous,gps3和gpsd一样,不会创建不存在的东西,但如果被要求,也不会隔离存在的东西。我现在无法确认任何事情,因为我测试的两个gps装置都很热,在我从键盘上看之前,它们都有一个补丁。通过下载gps3.py并使用上面粘贴的代码,您可以自己查看。它能满足你的需要吗?当gps被识别时,总是有gpsd的JSON对象,
device:activated
一个时间戳,但随后进入系统时间。
import gps3

gps_connection = gps3.GPSDSocket()
gps_fix = gps3.Fix()

try:
    for new_data in gps_connection:
        if new_data:
            gps_fix.refresh(new_data)
            print(gps_fix.TPV['time'])
            print(gps_fix.TPV['lat'])
            print(gps_fix.TPV['lon'])
            print(gps_fix.SKY['gdop'])
except KeyboardInterrupt:
    gps_connection.close()
    print('\nTerminated by user\nGood Bye.\n')