//! Минимальный синхронный старт через пресет Epson20x2Cp866. use escpos_vfd::{Preset, Vfd, VfdConfig}; use std::error::Error; use std::thread; use std::time::Duration; fn main() -> Result<(), Box> { // Первый аргумент - имя 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(()) }