#gpsd #client #gps #satellite #information #coordinates #devices

gpsd_client

简单的gpsd客户端,用于从GPS设备获取信息

3个版本

0.1.6 2024年6月11日
0.1.5 2024年2月8日
0.1.3 2024年1月9日

1920网络编程

MITGPL-2.0 许可证

23KB
376

gpsd_client 模块包含连接到[gpsd] https://gpsd.io/index.html以获取GPS坐标、接收到的卫星数量以及使用到的卫星数量的类型和函数。

gps-client 使用TcpStream连接到gpsd套接字服务器,以读取和写入到gpsd的信息。此包是从python3 gpsd包建模的。

测试

gpsd_client 在Linux Debian发行版上与gpsd: 3.22进行了测试。有关gpsd的更多信息,请查阅https://gpsd.io/index.html的文档。

示例

use gpsd_client::*;
use std::thread;
use std::time::Duration;
use std::process;

fn main() {
      // Connecting to the gpsd socket server.
      let mut gps: GPS = match GPS::connect() {
          Ok(t) => t,
          Err(e) => {
              println!("{e}");
              process::exit(1);
          }
      };

      let mut count: i32 = 0;

      loop {
          count += 1;
          // Getting the data from the gps device.
          let data: GPSData = gps.current_data().unwrap();
          println!("{data:#?}");
          let my_time: String = data.convert_time("America/Chicago").unwrap();
          let mph: f32 = data.convert_speed(true);
          let direction: String = data.travel_direction();
          println!(
              "Lat: {}, Lon: {}, Time: {}, Speed: {:.1}, Direction: {}",
              data.lat, data.lon, my_time, mph, direction
          );
          if count == 5 { break; }
          thread::sleep(Duration::from_millis(500));
      }

      // Closing the TcpStream and BufReader to the gpsd socket server.
      gps.close();
}

依赖关系

~1.9–3MB
~48K SLoC