Rename crate to escpos-vfd and add tokio support

Rename crate to escpos-vfd and add tokio support

Introduce a configurable crate-ready API with presets, typed errors,
optional Tokio async support, and expanded documentation.
This commit is contained in:
Кобелев Андрей Андреевич
2026-08-16 11:24:20 +05:00
parent efc53e6ef5
commit 244d907cc2
25 changed files with 3823 additions and 782 deletions
+33
View File
@@ -0,0 +1,33 @@
//! Минимальный синхронный старт через пресет Epson20x2Cp866.
use escpos_vfd::{Preset, Vfd, VfdConfig};
use std::error::Error;
use std::thread;
use std::time::Duration;
fn main() -> Result<(), Box<dyn Error>> {
// Первый аргумент - имя serial-порта. Значение по умолчанию удобно для локального
// macOS-стенда; на Linux чаще будет `/dev/ttyUSB0`, на Windows - `COM3`.
let port_name = std::env::args()
.nth(1)
.unwrap_or_else(|| "/dev/cu.usbmodem101".to_string());
// Пресет содержит все параметры текущего дисплея: serial 9600 8N1,
// геометрию 20x2, CP866, `ESC @` и `ESC t 6`.
let config = VfdConfig::preset(port_name, Preset::Epson20x2Cp866)?;
let mut display = Vfd::open(config)?;
// Низкоуровневый `Vfd` пишет команды сразу в serial-порт в текущем потоке. Это
// самый простой путь для CLI-утилит и smoke-test на железе.
display.clear()?;
display.set_brightness(2)?;
// `print_line` дополняет строку пробелами до ширины дисплея, поэтому старый текст
// справа не остаётся на экране.
display.print_line(1, "Пресет CP866")?;
display.print_line(2, "escpos-vfd")?;
// Даём физическому дисплею время показать результат до завершения процесса.
thread::sleep(Duration::from_secs(2));
Ok(())
}