labelo/p710bt/examples/p710bt.rs

95 lines
2.6 KiB
Rust

use eyre::{bail, Context};
use labelo_p710bt::commander::P710btCommander;
use labelo_p710bt::protocol::{AdvancedModeSettings, VariousModeSettings};
use labelo_p710bt::usb::UsbP710bt;
use tracing::info;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
pub fn main() -> eyre::Result<()> {
tracing_subscriber::registry()
.with(
tracing_subscriber::EnvFilter::try_from_default_env()
.unwrap_or_else(|_| "p710bt=debug,info".into()),
)
.with(tracing_subscriber::fmt::layer())
.init();
let mut devices = UsbP710bt::list_devices()?;
if devices.len() != 1 {
bail!("Found {} P710BT devices, aborting.", devices.len());
}
let device = UsbP710bt::open(devices.remove(0))?;
let mut printer = P710btCommander::new(device)?;
printer.invalidate_and_initialise()?;
let status = printer.status()?;
info!("Printer status: {status:?}");
printer.set_raster_mode_and_automatic_notification()?;
// printer.print_information(status.media_type.unwrap(), status.media_width_mm, 128, true)
// .context("PIC")?;
//
// printer.set_mode_settings(
// VariousModeSettings::AUTO_CUT,
// AdvancedModeSettings::HIGH_RES_PRINTING,
// 4
// )?;
// for i in 0u16..128u16 {
// let mut line = [0u8; 16];
// for bit in 0..16 {
// if (i >> bit) & 1 == 1 {
// line[bit as usize] = 0xFF;
// }
// }
//
// //eprintln!("ln = {line:?}");
//
// printer.raster_line(line)
// .with_context(|| format!("line {line:?}"))?;
// }
//
// printer.finish_printing(true)?;
for page in 0..3 {
printer
.print_information(
status.media_type.unwrap(),
status.media_width_mm,
512,
page == 0,
)
.context("PIC")?;
printer.set_mode_settings(
VariousModeSettings::AUTO_CUT,
AdvancedModeSettings::HIGH_RES_PRINTING
| AdvancedModeSettings::NO_BUFFER_CLEARING_WHEN_PRINTING,
4,
)?;
for i in 0u16..512u16 {
let mut line = [0u8; 16];
for bit in 0..16 {
if ((i + page * 512) >> bit) & 1 == 1 {
line[bit as usize] = 0xFF;
}
}
//eprintln!("ln = {line:?}");
printer
.raster_line(line)
.with_context(|| format!("line {line:?}"))?;
}
printer.finish_printing(page == 3)?;
}
Ok(())
}