95 lines
2.6 KiB
Rust
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(())
|
|
}
|