5个版本 (3个重大变更)
0.4.0 | 2024年7月6日 |
---|---|
0.3.0 | 2024年7月5日 |
0.2.3 | 2024年7月4日 |
0.1.0 | 2024年7月3日 |
#215 在 硬件支持
每月下载量:159
60KB
1.5K SLoC
serial-sensors-proto
用于传输MEMS传感器数据及其相关信息的简单线格式。
方法有两方面
在接收端,整个过程是反向进行的。
除了支持一些通用传感器类型(如加速度计、磁力计、陀螺仪等)外,该格式还有一些自我描述的能力。如果实现,传感器的制造商和名称,以及线性归一化因子可以一次或定期通过线路发送,从而允许在主机上进行自动和与传感器无关的转换。
请参阅stm32f3disco-rust和serial-sensors以获取示例。以下是该项目的示例截图,显示了传感器数据的流动
设备端代码可以像这样简单
fn example() {
let value = AccelerometerI16::new(Vector3Data { x: 1, y: -2, z: 3 });
let frame = Version1DataFrame::new(u32::MAX, 12, 0, value);
// Serialize into a transmit buffer.
let mut buffer = [0_u8; 48];
let buffer = serialize(frame, &mut buffer).unwrap();
assert_eq!(buffer.len(), 21);
// ... send the buffer over the wire ...
// Deserialization the received buffer.
let data = deserialize(buffer).unwrap();
assert_eq!(data.version, Version1);
assert_eq!(data.data.global_sequence, u32::MAX);
assert_eq!(data.data.sensor_sequence, 12);
assert_eq!(data.data.sensor_tag, 0);
let data: AccelerometerI16 = data.try_into().unwrap();
assert_eq!(data.x, 1);
assert_eq!(data.y, -2);
assert_eq!(data.z, 3);
}
依赖项
~1–1.7MB
~37K SLoC