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.
34 lines
1.7 KiB
Rust
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(())
|
|
}
|