рефакторинг библиотеки.

This commit is contained in:
Кобелев Андрей Андреевич
2026-08-15 23:53:45 +05:00
parent 896670b62f
commit efc53e6ef5
13 changed files with 584 additions and 371 deletions
+12 -28
View File
@@ -1,13 +1,11 @@
//! Демонстрирует мигание произвольного текста в выбранной позиции через `print_at`.
mod common;
use anyhow::Result;
use std::time::Duration;
use m::vfd::VfdConfig;
use m::worker::VfdWorker;
fn spaces(n: usize) -> String {
" ".repeat(n)
}
fn main() -> Result<()> {
// args:
// 1) port (default: /dev/cu.usbmodem101)
@@ -16,28 +14,14 @@ fn main() -> Result<()> {
// 4) x (default: 1) 1-based
// 5) y (default: 1) 1-based line
// 6) text (default: "BLINK")
let mut args = std::env::args().skip(1);
let port_name = args.next().unwrap_or("/dev/cu.usbmodem101".into());
let width: usize = args.next().as_deref().unwrap_or("20").parse().unwrap_or(20);
let delay_ms: u64 = args
.next()
.as_deref()
.unwrap_or("400")
.parse()
.unwrap_or(400);
let x: u8 = args.next().as_deref().unwrap_or("1").parse().unwrap_or(1);
let y: u8 = args.next().as_deref().unwrap_or("1").parse().unwrap_or(1);
let text = args.next().unwrap_or("BLINK".into());
let mut args = common::ExampleArgs::from_env();
let delay_ms: u64 = args.parse_or(400);
let x: u8 = args.parse_or(1);
let y: u8 = args.parse_or(1);
let text = args.string_or("BLINK");
let text_len = text.chars().count();
let cfg = VfdConfig::new(port_name).with_width(width);
let worker = VfdWorker::start(cfg)?;
let worker = VfdWorker::start(args.config)?;
let vfd = worker.handle();
vfd.clear();
@@ -47,7 +31,7 @@ fn main() -> Result<()> {
let _ = vfd.print_at(1, y, ""); // просто чтобы “активировать” строку у некоторых дисплеев
}
let blank = spaces(text_len);
let blank = " ".repeat(text_len);
let mut on = false;
loop {
@@ -57,6 +41,6 @@ fn main() -> Result<()> {
let _ = vfd.print_at(x, y, &text);
}
on = !on;
std::thread::sleep(Duration::from_millis(delay_ms));
common::sleep_ms(delay_ms);
}
}