Files
vfd/examples/preset_sync.rs
Кобелев Андрей Андреевич 244d907cc2 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.
2026-08-16 11:24:20 +05:00

34 lines
1.7 KiB
Rust

//! Минимальный синхронный старт через пресет 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(())
}