You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将NMEA数据导入gpsfake以配合gpsd运行测试?

问题

我有一个包含GPS点位的NMEA测试数据文件,内容如下:

$GPGGA,170358.132,5230.704,N,01324.262,E,1,12,1.0,0.0,M,0.0,M,,*63
$GPGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30
$GPRMC,170358.132,A,5230.704,N,01324.262,E,4152.6,050.1,150822,000.0,W*4B
$GPGGA,170359.132,5231.634,N,01325.380,E,1,12,1.0,0.0,M,0.0,M,,*6D
$GPGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30
$GPRMC,170359.132,A,5231.634,N,01325.380,E,2369.6,047.3,150822,000.0,W*4D
$GPGGA,170400.132,5232.183,N,01325.977,E,1,12,1.0,0.0,M,0.0,M,,*6C
$GPGSA,A,3,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30
$GPRMC,170400.132,A,5232.183,N,01325.977,E,1313.3,288.5,150822,000.0,W*40

我第一次使用gpsd,尝试用这个文件的数据通过gpsfake导入,配合自己的演示脚本测试,但单独运行gpsfake、管道连接gpsd、单独运行gpsd都没成功。之前用物理GPS dongle时运行正常,命令和输出如下:

~$ /usr/sbin/gpsd -n -G -b /dev/ttyUSB0 &
[1] 4514
~$ ./demo
WARNING: Opening interface localhost:gpsd
WARNING: Entering GPS poll loop (2000000us)
Speed: 0.017
Speed: 0.018
Speed: 0.018
Speed: 0.021
speed: 0.046976
{
  "timestamp": 1660331437857,
  "latitude": 33.6973963,
  "longitude": -117.7707148,
  "eph": 4.563,
  "speed": 0.047,
  "eps": 0.460,
  "track": 0.000,
  "satellites_used": 8,
  "hdop": 0.000000,
  "vdop": 0.000000
}
Speed: 0.021
[1]+  Done                    /usr/sbin/gpsd -n -G -b /dev/ttyUSB0

想知道怎么用gpsfake导入虚拟数据替代物理GPS dongle。

解决方案

方法一:一键式gpsfake+gpsd联动

  1. 清理现有gpsd进程:
sudo killall gpsd
  1. 让gpsfake自动启动并连接gpsd,直接加载你的NMEA文件:
gpsfake -P /tmp/gpsd.sock -U your_nmea_file.txt
  • -P 指定gpsd的套接字路径,确保脚本能正常连接
  • -U 参数让gpsfake自动启动gpsd并绑定到模拟数据源
  1. 运行你的演示脚本:
./demo

方法二:手动创建虚拟串口分离模拟与监听

  1. 安装虚拟串口工具(未安装时执行):
sudo apt-get install socat
  1. 创建一对互相连通的虚拟串口:
socat PTY,link=/tmp/vgps0,raw,echo=0 PTY,link=/tmp/vgps1,raw,echo=0 &
  1. 启动gpsfake向其中一个串口发送数据(-c 1表示每秒发送一组,匹配你的数据时间间隔):
gpsfake -c 1 your_nmea_file.txt /tmp/vgps0 &
  1. 启动gpsd监听另一个虚拟串口,参数和物理设备一致:
/usr/sbin/gpsd -n -G -b /tmp/vgps1 &
  1. 运行演示脚本:
./demo

注意事项

  • 确保NMEA文件每行都是有效语句,无多余空行或格式错误
  • 若gpsfake命令找不到,尝试使用完整路径/usr/bin/gpsfake
  • 测试完成后清理进程:sudo killall gpsd gpsfake socat

内容的提问来源于stack exchange,提问作者wiswasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:57:22