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硬件支持

Download history 4/week @ 2024-04-28 147/week @ 2024-05-05 47/week @ 2024-05-12 28/week @ 2024-05-19 13/week @ 2024-06-02 3/week @ 2024-06-09 65/week @ 2024-06-16 7/week @ 2024-06-23 99/week @ 2024-06-30 46/week @ 2024-07-07 93/week @ 2024-07-14 3/week @ 2024-07-21 35/week @ 2024-07-28 5/week @ 2024-08-04 169/week @ 2024-08-11

237 每月下载量

MIT 许可证

52KB
1.5K SLoC

mlua-periphery

lua-peripherymlua 实现的Rust原生版本。

License Arch Lua

源自 lua-periphery

lua-periphery 是一个用于用户空间Linux中GPIO、LED、PWM、SPI、I2C、MMIO和串行外设I/O接口访问的库。在嵌入式Linux环境(包括Raspberry Pi、BeagleBone等平台)中,它用于与外部外设接口。

使用Python或C?请查看 python-peripheryc-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 文件,展示了

运行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