#embedded-hal-driver #serial #adafruit #no-std #thermal-printer

no-std thermal-print

一个几乎功能齐全、兼容 no-std 的嵌入式 hal 驱动程序,用于 CSN-A2 热敏打印机

4 个版本

0.2.0 2024 年 4 月 1 日
0.1.2 2022 年 7 月 17 日
0.1.1 2022 年 7 月 1 日
0.1.0 2022 年 7 月 1 日

#9 in #adafruit

GPL-3.0+

30KB
497 行代码(不包括注释)

thermal-print

Crates.io Crates.io

摘要

thermal-print 提供了 Adafruit 和其他公司销售的 CSN-A2 热敏打印机 ESC/POS 实现的串行接口驱动程序。该软件包应该支持所有 embedded-hal 目标平台,这些平台具有动态分配器,并且与 #![no_std] 兼容。

功能

thermal-print 尚缺乏一些小的功能,但已支持

  • 文本格式化(例如,对齐、选择打印模式和选择字体),
  • 打印条形码,
  • 位图打印(通过 tinybmp 软件包)。

使用方法

只需在 Cargo 清单中依赖该软件包

[dependencies]
thermal-print = "0.2"

现在您可以将软件包引入作用域

use thermal_print::*

位图打印依赖于 TinyBMP 软件包。请参阅下面的打印位图的示例。

示例

设置、格式化和打印文本

此示例初始化打印机,配置字体 B,设置对齐方式为居中,并在纸上打印 Hello, world!

  // 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!");

打印位图

此示例通过 include_bytes! 宏打印嵌入的位图。它假定您已将 tinybmp 添加为依赖项到您的清单中,并且项目中有适当的位图文件 ./resources/ferris.bmp。请参阅有关位图打印的文档以获取更多信息。

use tinybmp::RawBmp;

printer.print_bitmap(
  RawBmp::from_slice(
    include_bytes!("../resources/ferris.bmp")
  ).unwrap(),
  RasterBitImageMode::Normal
);

功能标志

  • std:此功能使您能够链接到 Rust 标准库。默认情况下是 禁用 的。
  • embedded-hal-nb:使用嵌入式-hal-nb 特性进行 UART
  • embedded-io:使用嵌入式-io 特性进行 UART

错误报告和功能请求

欢迎为此项目做出贡献。您可以在 sourcehut 上找到 问题跟踪器代码仓库。您还可以通过电子邮件向 ~doesnotcompete/[email protected] 提交错误报告或功能请求。

依赖项

~5.5MB
~86K SLoC