#gps #serial #hardware #serial-port #system

app gps-share

在本地网络中共享您的GPS设备的小工具

2个版本

使用旧的Rust 2015

0.3.1 2021年5月4日
0.3.0 2021年4月28日

#1271硬件支持

GPL-2.0+

1.5MB
744

gps-share

在本地网络中共享您的GPS设备的小工具。

Git master构建状态:构建状态

目标

gps-share有以下目标

  • 在本地网络中共享您的GPS设备,以便您家或办公室中的所有计算机都可以使用它。
  • 在Geoclue中启用对独立(即不是移动网络调制解调器的一部分)GPS设备的支持。由于Geoclue自2015年以来已经能够使用网络NMEA源,因此gps-share与Geoclue无缝配合工作。
  • 启用多个应用程序在相同计算机上共享GPS流。

这意味着它是GPSD和Gypsy的替代品。虽然"为什么不是GPSD?"已经记录在案,但现在Gypsy已经停止维护多年了。我不打算复活一个已死的项目,我真的想用Rust编程,所以我决定创建gps-share。

Screenshot of gps-share in action

依赖项

开发者使用最新的rustc版本,如果您使用较旧的编译器版本,可能会遇到问题。虽然cargo管理gps-share依赖的Rust包,但您还需要在主机上安装以下内容

  • libudev

支持设备

gps-share目前仅支持以串行端口(RS232)形式呈现的GPS设备。许多USB设备应该可以即插即用,但蓝牙设备需要通过rfcomm命令手动干预才能作为串行端口设备安装。以下命令在我的Fedora 25机器上对TomTom Wireless GPS MkII有效。

sudo rfcomm connect 0 00:0D:B5:70:54:75

gps-share 可以自动检测作为串行端口已挂载的设备,但默认波特率为 38400。您可以通过传递设备节点路径作为参数来手动设置要使用的设备节点,并使用 '-b' 命令行选项来设置波特率。例如,对于 TomTom 无线 GPS MkII 设备,您需要将波特率设置为 115200。

输入 '--help' 查看支持的完整命令行选项列表。

权限

gps-share 需要读取和写入设备节点的访问权限。将您的用户添加到 'dialout' 组可以为 Fedora 主机上的 USB 设备提供这种访问权限,但对于上述命令创建的 /dev/rfcomm0 设备则不适用。对于这些设备,您需要以 root 用户身份运行 gps-share 或设置 /dev/rfcomm0 的权限。

支持的操作系统

gps-share 专门针对 Linux 设计。它可能在其他 POSIX 主机上正常或异常工作。欢迎提交补丁以添加/修复对非 Linux 系统的支持。

请记得配置防火墙,以便在需要的情况下允许您的服务在本地网络上可访问。

从源码构建

就像大多数 Rust 项目一样,gps-share 使用 cargo 构建系统,因此构建过程非常简单

cargo build

构建完成后,二进制文件位于 target/debug/gps-share。如果您想为生产环境构建 gps-share(启用所有优化)

cargo build --release

这会将二进制文件放置在 target/release/gps-share。您还可以直接运行二进制文件(无需先构建)

cargo run

如果您需要向命令行传递任何参数或选项,请这样做

cargo run -- [ARGUMENT1 [ARGUMENT2 [..]]]

要查看所有支持选项和参数,请运行

cargo run -- --help

命令行使用方法

gps-share 的一般调用如下

gps-share [FLAGS] [OPTIONS] [device]

device 是相关 GNSS 设备的路径,或 - 表示标准输入。

选项

  • -b, --baudrate <BAUDRATE> 用于与 GPS 设备通信的波特率
  • -n, --network-interface <INTERFACE> 将侦听 TCP 套接字放置在特定的网络接口上(默认:所有接口)
  • -p, --port <PORT> 运行 TCP 服务的端口(默认:10110)
  • -s, --socket-path <SOCKET> 在指定路径的本地套接字上侦听(默认:不侦听本地套接字)

标志

  • -a, --disable-announce 禁用通过 Avahi 发布
  • -h, --help 打印帮助信息
  • -x, --no-tcp 完全不侦听 TCP 套接字
  • -V, --version 打印版本信息

测试

测试套件包括端到端测试。它们共享套接字,应该按顺序运行

cargo test

许可协议

gps-share 采用 GNU GPLv2+ 许可证。请参阅许可文件获取详细信息。

硬件捐赠

如果您希望 gps-share 支持某些特定设备,我接受硬件捐赠。请通过电子邮件(在我的 GitHub 个人资料和 git 提交中)联系我,以请求我的邮寄地址发送硬件。如果您可以通过 DHL 发送,请使用以下地址:

DHL 客户:904 538 947 德国 DHL Packstation 179

请注意:此地址仅适用于通过 DHL 发送。

谢谢。

依赖项

~10–23MB
~305K SLoC