13个不稳定版本 (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日 |
#21 in #friends
每月下载量144次
在serial-sensors-proto中使用
17KB
266 代码行
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);
}
依赖项
~0.6–1MB
~24K SLoC