2015-04-05 121 views
0

我正在使用gpsd。我有一个UBlox LEA-6T GPS。当寒冷开始时,我会在获得第一次定位之前获得时间信息。时间信息是这样的(使用gpspipe -R):Python无法修复时从gpsd获取时间(ublox lea-6T gps)

$GPGGA,191917.60,,,,,0,00,99.99,,,,,,*66 
$GPRMC,191917.70,V,,,,,,,050415,,,N*79 
$GPVTG,,,,,,,,,N*30 
$GPGGA,191917.70,,,,,0,00,99.99,,,,,,*67 
$GPRMC,191917.80,V,,,,,,,050415,,,N*76 
$GPVTG,,,,,,,,,N*30 

望着$ GPRMC,你可以看到两个时间(191917)和日期(050415)。倒数第四位的“N”表示“No Fix”。

我使用Python和打开像GPS:

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

然而,直到我有一个修复我没有得到任何数据。有没有办法在没有修复的情况下从gpsd获得gps时间?从使用gps模块从GPSD项目GPSD

回答

0

时间是从一个实例self.utcself.fix.time,无论是从你创造的东西,或者gpsd client like Dan Mandle's从而导致类似....

print("UTC & time ", gpsdata.utc, ' ', gpsdata.fix.time)

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

但是,你所看到的是NMEA句子,虽然没有新的批评,ESR在6年前制作了some good points about NMEA,同时gpsd采用了JSON协议。该活动继续执行NMEA Revealed

GPSD流出了一些JSON对象的TPV(Ť ime- P osition- V elocity),SKY(卫星数据)等,作为一种紧凑的,直线前进协议。

由于JSON协议以及将来的Python世界集成,我建议使用gps3 project来处理gpsd和Python。

虽然它仍然是阿尔法,但它并没有拖拽那么多的历史痕迹,并且为派生的Python词典使用相同的JSON命名结构,并且与一起使用,它们都是 Python2和Python3。

与项目放置在同一目录时,它也很简单。 TPV = {'time', 'alt', 'tag', 'climb', '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') 
+0

在我将代码切换到gps3之前,您能否确认这会在没有修复的情况下给我GPS时间?我相信我的问题是GPSD不会在没有FIX的情况下向我发送数据。 (也就是说,我认为我现在的代码给了我从GPSD获得的所有东西,而GPSD则过滤掉了没有FIX的数据。)您的代码示例没有明确显示与GPSD不同的连接配置,因此我认为它的行为相同?或者,gps3在没有过滤器的情况下打开一个更“原始”的GPSD连接?还是我错过了别的? – proximous 2015-04-15 18:18:48

+0

@proximous,gps3,就像gpsd一样,不会创建不存在的东西,但如果要求的话,既不会隔离那些东西。我目前无法确认任何事情,因为我测试的两个gps设备都很热,在我从键盘上查找之前有一个修复。您可以通过下载gps3.py并使用上面粘贴的代码来查看。它是做你想做的吗?总是有gpsd的JSON对象,'device:activated'是gps被识别时的时间戳,但是接着你进入了系统时间。 – Nodak 2015-04-16 12:21:58