Crates.io | thermal-print |
lib.rs | thermal-print |
version | 0.2.0 |
source | src |
created_at | 2022-07-01 11:15:00.543651 |
updated_at | 2024-04-01 15:08:00.71181 |
description | An almost fully featured, no-std-compatible embedded-hal driver for the CSN-A2 thermal printer |
homepage | |
repository | https://git.sr.ht/~doesnotcompete/thermal-print |
max_upload_size | |
id | 617085 |
size | 64,381 |
thermal-print
thermal-print
provides a serial interface driver for the ESC/POS implementation of the CSN-A2 thermal printer sold by Adafruit and others. The crate should be supported on all platforms targeted by embedded-hal
which possess a dynamic allocator, and it is #![no_std]
-compatible.
thermal-print
still lacks some minor functionality, but already supports
tinybmp
crate).Just depend on the crate in your Cargo manifest:
[dependencies]
thermal-print = "0.2"
Now you can bring the crate into scope:
use thermal_print::*
Bitmap printing depends on the TinyBMP crate. See the example on printing bitmaps below.
This example initializes the printer, configures font B
, sets the justification to center and prints Hello, world!
onto the paper.
// Configure the serial interface for your platform
let config = serial::config::Config::default()
.baudrate(Hertz(19_200));
let mut serial: serial::Serial<serial::UART1, _, _> = serial::Serial::new(
peripherals.uart1,
serial::Pins {
tx: peripherals.pins.gpio21,
rx: peripherals.pins.gpio19,
cts: None,
rts: None,
},
config
).expect("Error while configuring UART!");
// Construct a new `Printer` with the serial interface and a `delay` implementation for
// blocking while the printer prints
let mut printer = Printer::new(serial, delay::FreeRtos);
printer.init();
printer.set_print_mode(
PrintModeBuilder::default()
.font(Font::FontB)
.build()
.unwrap()
);
printer.set_justification(Justification::Center);
writeln!(printer, "Hello, world!");
This example prints a bitmap embedded via the include_bytes!
macro. It assumes you have added tinybmp
as a dependency to your manifest, and that a suitable bitmap file ./resources/ferris.bmp
is present in your project. See the documentation on further information on bitmap printing.
use tinybmp::RawBmp;
printer.print_bitmap(
RawBmp::from_slice(
include_bytes!("../resources/ferris.bmp")
).unwrap(),
RasterBitImageMode::Normal
);
std
: This enables linking against the Rust standard library. It is disabled by default.embedded-hal-nb
: Use embedded-hal-nb traits for UARTembedded-io
: Use embedded-io traits for UARTContributions to this project are welcome. You can find the issue tracker and the code repository at sourcehut. You may also submit bug reports or feature requests via email to ~doesnotcompete/thermal-print@todo.sr.ht.