8个版本
新 0.1.7 | 2024年8月16日 |
---|---|
0.1.6 | 2024年5月11日 |
0.1.5 | 2024年3月9日 |
0.1.4 | 2024年2月18日 |
0.1.1 | 2023年10月30日 |
#236 在 硬件支持
237 每月下载量
52KB
1.5K SLoC
mlua-periphery
为 lua-periphery 和 mlua 实现的Rust原生版本。
lua-periphery 是一个用于用户空间Linux中GPIO、LED、PWM、SPI、I2C、MMIO和串行外设I/O接口访问的库。在嵌入式Linux环境(包括Raspberry Pi、BeagleBone等平台)中,它用于与外部外设接口。
使用Python或C?请查看 python-periphery 和 c-periphery 项目。
安装
使用MLua的某个功能将以下内容添加到您的Rust项目中:[lua51, lua52, lua53, lua54, luajit, luajit52]。
$ cargo add mlua-periphery --features luajit
使用
use mlua::Lua;
let lua = Lua::new();
mlua_periphery::preload(&lua);
let script = r#"
local LED = require('periphery.LED')
local led = LED('led0')
return led:read(), led.brightness, led.max_brightness
"#;
let (value, brightness, max_brightness): (bool, u32, u32) = lua.load(script).eval()?;
测试
每个子模块中存在一个 integration_tests.rs
文件,展示了
- 通过串行从 BitScope Cluster Blade 读取BMC的指标
- 通过I²C从 Sixfab UPS HAT 读取电池电压
- 通过I²C控制 Argon Fan HAT 的风扇速度
- 与GPIO和LED引脚交互
运行i2cdetect示例
$ cargo run -v --example i2cdetect --features lua54
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- 1a -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
依赖关系
~3.5–5MB
~92K SLoC