thermal-print

Crates.io Crates.io

Summary

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.

Functionality

thermal-print still lacks some minor functionality, but already supports

Usage

Minimum Supported Rust Version: 1.56.0

Just depend on the crate in your Cargo manifest: [dependencies] thermal-print = "0.1"

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.

Examples

Setup, Formatting, and Printing Text

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::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.setprintmode( PrintModeBuilder::default() .font(Font::FontB) .build() .unwrap() ); printer.set_justification(Justification::Center);

writeln!(printer, "Hello, world!"); ```

Printing Bitmaps

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.printbitmap( RawBmp::fromslice( include_bytes!("../resources/ferris.bmp") ).unwrap(), RasterBitImageMode::Normal ); ```

Feature Flags