3个不稳定版本
0.7.1 | 2024年3月4日 |
---|---|
0.7.0 | 2024年3月2日 |
0.6.0 | 2021年3月3日 |
在 #sign 中排名 4
每月下载量 114
150KB
1.5K SLoC
flipdot
一个用于通过RS-485与Luminator翻转点阵和LED标牌交互的Rust库。
提供了一种连接到标牌、定义跨越一个或多个页面的消息、将这些页面发送到标牌以及在这些页面之间切换的方式。不提供特殊的图形或文本功能;您需要自己设置页面上的像素。
已在MAX3000 90 × 7侧标牌上测试。应该适用于任何使用7针圆形连接器的翻转点阵或LED标牌,但不能保证。
仅适用于爱好者和教育目的。与Luminator没有任何关联。
用法
以下是一个通过串行连接到标牌、发送页面并显示它们的完整示例
use std::cell::RefCell;
use std::rc::Rc;
use flipdot::{Address, PageFlipStyle, PageId, Sign, SignType, SerialSignBus};
// Set up bus. Because the bus can be shared among
// multiple signs, it must be wrapped in an Rc<RefCell>.
let port = serial::open("/dev/ttyUSB0")?;
let bus = SerialSignBus::try_new(port)?;
let bus = Rc::new(RefCell::new(bus));
// Create a sign with the appropriate address and type.
let sign = Sign::new(bus.clone(), Address(3), SignType::Max3000Side90x7);
// First, the configuration data must be sent to the sign.
sign.configure()?;
// Next, we can create some pages, turn on pixels, and send them to the sign.
let mut page1 = sign.create_page(PageId(0));
page1.set_pixel(0, 0, true);
let mut page2 = sign.create_page(PageId(1));
page2.set_pixel(1, 1, true);
// We only need to explicitly flip pages if PageFlipStyle::Manual is returned,
// otherwise the sign will automatically show and flip pages.
if sign.send_pages(&[page1, page2])? == PageFlipStyle::Manual {
// The first page is now loaded in the sign's memory and can be shown.
sign.show_loaded_page()?;
// Load the second page into memory, then show it.
sign.load_next_page()?;
sign.show_loaded_page()?;
}
子库
除了 Sign
的高级API之外,还提供了一些低级组件,可以组合起来用于更专业的用例。
flipdot-core
(重新导出为core
) 包含描述协议的基本类型,如果您想实现自定义SignBus
或在其他层面上操作,则很有用。flipdot-serial
(重新导出为serial
) 包含配置串行端口的函数以及SerialSignBus
的实现。flipdot-testing
包含一些与直接与标牌通信无关的工具,但用于测试和调试很有用。
许可证
在 MIT 许可证 下分发。
依赖关系
~2.7–4.5MB
~77K SLoC