67 lines
3.2 KiB
Rust
67 lines
3.2 KiB
Rust
use anyhow::Result;
|
||
use std::time::Duration;
|
||
|
||
use m::vfd::VfdConfig;
|
||
use m::worker::VfdWorker;
|
||
|
||
fn main() -> Result<()> {
|
||
// args:
|
||
// 1) port (default: /dev/cu.usbmodem101)
|
||
// 2) width (default: 20)
|
||
// 3) cps (chars per second, default: 8)
|
||
// 4) end_pause_ms (default: 1500)
|
||
// 5) brightness 1..4 (default: 2)
|
||
let port_name = std::env::args()
|
||
.nth(1)
|
||
.unwrap_or("/dev/cu.usbmodem101".into());
|
||
|
||
let width: usize = std::env::args()
|
||
.nth(2)
|
||
.as_deref()
|
||
.unwrap_or("20")
|
||
.parse()
|
||
.unwrap_or(20);
|
||
|
||
let cps: u32 = std::env::args()
|
||
.nth(3)
|
||
.as_deref()
|
||
.unwrap_or("8")
|
||
.parse()
|
||
.unwrap_or(8);
|
||
|
||
let end_pause_ms: u64 = std::env::args()
|
||
.nth(4)
|
||
.as_deref()
|
||
.unwrap_or("1500")
|
||
.parse()
|
||
.unwrap_or(1500);
|
||
|
||
let brightness: u8 = std::env::args()
|
||
.nth(5)
|
||
.as_deref()
|
||
.unwrap_or("2")
|
||
.parse()
|
||
.unwrap_or(2);
|
||
|
||
let cfg = VfdConfig::new(port_name).with_width(width);
|
||
let worker = VfdWorker::start(cfg)?;
|
||
let vfd = worker.handle();
|
||
|
||
vfd.clear();
|
||
vfd.set_brightness(brightness);
|
||
|
||
let text = String::from(
|
||
"Однозначно, базовые сценарии поведения пользователей призывают нас к новым свершениям, которые, в свою очередь, должны быть объявлены нарушающими общечеловеческие нормы этики и морали. С другой стороны, понимание сути ресурсосберегающих технологий не даёт нам иного выбора, кроме определения экономической целесообразности принимаемых решений. Задача организации, в особенности же укрепление и развитие внутренней структуры обеспечивает актуальность соответствующих условий активизации. Предварительные выводы неутешительны: укрепление и развитие внутренней структуры однозначно фиксирует необходимость укрепления моральных ценностей. Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: повышение уровня гражданского сознания представляет собой интересный эксперимент проверки поэтапного и последовательного развития общества.",
|
||
);
|
||
// “рыба” + бесконечный цикл
|
||
vfd.set_marquee_text(text);
|
||
vfd.start_marquee(2, cps, Duration::from_millis(end_pause_ms));
|
||
|
||
// можно подсветить вторую строку статикой
|
||
let _ = vfd.print_line_diff(1, "Бегущая строка");
|
||
|
||
loop {
|
||
std::thread::sleep(Duration::from_secs(3600));
|
||
}
|
||
}
|