2个不稳定版本
0.2.0 | 2024年3月10日 |
---|---|
0.1.0 | 2024年3月1日 |
#1013 in 解析器实现
17KB
234 代码行
Forza_dataout_parse
这是一个专门用于解析Forza DataOut输出消息的Rust库,目前支持解析《Forza MotorSport》仪表盘的消息。
安装
编辑Cargo.toml
- 编辑您的
Cargo.toml
- 添加
forza_dataout_parse
后面跟着[dependencies]
. like[dependencies] # ... forza_dataout_parse = "x"
- 执行shell
cargo update
或者使用shell命令
cd /your/project/path
cargo add forza_dataout_parse
使用方法
这是一个简单的示例,用于监听ForzaMotorsport UPD。
use std::net::UdpSocket;
use std::thread;
use std::time::Duration;
use std::io::{self, Write};
extern crate forza_dataout_parse;
use forza_dataout_parse::dash_parser;
fn main() {
let socket = UdpSocket::bind("0.0.0.0:5300").expect("Couldn't bind to address");
let stdout = io::stdout();
let mut handle = stdout.lock();
loop {
let mut buffer = [0; 1024];
match socket.recv_from(&mut buffer) {
Ok((amt, _)) => {
let datagram = dash_parser::parse(&buffer[..amt]);
if datagram.is_race_on == 1 {
print!("\rspeed = {:#?}, current_lap={:#?}", datagram.get_speed_by_kmh(), datagram.current_lap);
// println!("{:#?}", datagram.accel);
let _ = handle.flush();
}
thread::sleep(Duration::from_micros(10));
}
Err(e) => {
eprintln!("Error receiving data: {}", e);
thread::sleep(Duration::from_micros(10));
continue;
}
}
}
}
功能映射
- 😄支持 to_json() 和由 serde @0.1.1 提供的序列化能力
- 👌对 dash 数据报的基本解析 @0.1.0
依赖项
~0.7–1.6MB
~35K SLoC