一个用于搭载 u-Blox 6/7/8 系列 A-GPS 接收器并使用 UART 串行连接的开发板的 Swift 库。
该库接口连接基于 u-Blox 6/7/8 A-GPS 接收器的开发板,这些开发板使用 NMEA0183 协议通过 UART 串行连接提供 GPS 数据(对于低成本选项,可以搜索通常花费约 20 美元的基于 NEO6M 的开发板)。目前不支持 UBX 配置命令和通过 I2C 的连接。
您将能够检索您当前的location、海拔、速度、当前可连接卫星的状态数据等。
首次使用接收器时,它需要几分钟才能找到一些卫星并提供位置,但在此之后,只需几秒钟即可获得有效位置。
所有 SwiftyGPIO 支持且支持 UART 接口的开发板。
要使用此库,您需要一个运行 Swift 3.x 的 Linux ARM 开发板。
下面的示例将使用 RaspberryPi 2 开发板,但您可以轻松修改示例以使用其他支持的开发板之一。在 Examples
目录中提供了一个适用于 RaspberryPi 2 的完整工作演示项目。
如果您使用的是 RaspberryPi,请运行 raspi-config
并启用串行端口,但禁用 Interfacing Options > Serial
中的 Linux 登录支持。
我们需要做的第一件事是从 SwiftyGPIO 获取 UARTInterface
的实例,并使用它来初始化 UBloxGPS
对象
import SwiftyGPIO
import UBloxGPS
let uarts = SwiftyGPIO.UARTs(for:.RaspberryPi2)!
var uart = uarts[0]
let gps = UBloxGPS(uart)
然后我们必须启动后台线程,该线程将通过调用 startUpdating
来更新 GPS 位置和其他信息。该库允许使用 printStatus
打印所有可用数据的快速概览
gps.startUpdating()
// We'll simply clear the screen and print a recap of the current gps data
while true {
system("clear")
gps.printStatus()
sleep(2)
}
UBloxGPS
对象有一些可访问的属性,您可以使用它们来检索您需要的特定数据
属性 | 描述 |
---|---|
isDataValid | 当前 GPS 数据是否有效?当获得有效位置时为 True |
datetime | 日期和时间,字符串格式 |
latitude | 纬度,以度为单位 |
longitude | 经度,以度为单位 |
satellitesNum | 可见卫星数量 |
satellitesActiveNum | 活动卫星数量(可见且信号强度足以使用的卫星) |
altitude | 海拔高度,相对于海平面 |
altitudeUnit | 海拔高度单位 |
satellites | 有关当前在视线范围内的卫星的信息(最多 12 颗),该结构包含:数字 ID、仰角(0..60 度)、方位角(0..360 度)和 snr(dB) 值,用于指示影响信号的噪声 |
当您不再需要更新位置数据或暂停更新时,只需调用 stopUpdating()
。
有关 Swift 安装说明,请参阅 SwiftyGPIO 的 readme 文件。
一旦您的开发板运行 Swift,如果您的版本支持 Swift Package Manager,您可以简单地将此库添加为项目的依赖项,并使用 swift build
进行编译
let package = Package(
name: "MyProject",
dependencies: [
.Package(url: "https://github.com/uraimo/UBloxGPS.swift.git", majorVersion: 1),
...
]
...
)
Examples
目录包含使用 SPM 的示例项目,编译它并使用 ./.build/debug/TestNEO6M
运行示例。
如果不支持 SPM,您需要手动下载该库及其依赖项
wget https://raw.githubusercontent.com/uraimo/UBloxGPS.swift/master/Sources/UBloxGPS.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SwiftyGPIO.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/Presets.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/UART.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SunXi.swift
一旦所有文件都已下载,创建一个额外的文件,其中将包含您的应用程序代码(例如 main.swift)。当您的代码准备就绪后,使用以下命令编译它
swiftc *.swift
编译器将创建一个 main 可执行文件。