#printing #thermal #pos #bindings #tokio #interface #synchronous

epson

支持与爱普生品牌热敏POS打印机通信

8个版本

0.1.7 2024年3月28日
0.1.6 2024年3月28日
0.1.4 2024年2月23日
0.1.3 2024年1月23日

#3 in #thermal

Download history 138/week @ 2024-03-08 20/week @ 2024-03-15 132/week @ 2024-03-22 219/week @ 2024-03-29 18/week @ 2024-04-05

每月439次下载

MIT许可

33KB
410 行代码(不含注释)

epson: 爱普生热敏打印机系列编码方案的Rust绑定

epson-rs是爱普生销售点(POS)热敏打印机打印格式的Rust绑定。

当前,此库支持有限数量的命令,并通过tokio提供同步和异步Rust的基本接口,在tokio特性之后。

文档可以在docs.rs上找到,最新版本的信息可以在crates.io上找到。

示例程序

请查看examples目录中的程序,这些程序使用epson库将内容打印到打印机。


lib.rs:

epson包包含对爱普生销售点(POS)热敏打印机打印格式的Rust绑定。

当前,此库支持有限数量的命令,并通过tokio提供同步和异步Rust的基本接口,在tokio特性之后。

文档可以在docs.rs上找到,最新版本的信息可以在crates.io上找到。

支持型号

随着我获得这些打印机或有人为包维护型号,特定的打印机品牌/型号将被添加。如果你的品牌/型号不受支持,你可以使用models::Model::Generic

型号 类型 描述
T20II models::Model::T20II 爱普生TM-T20II热敏打印机

写入到std::io::Write

我们可以将数据写入一个实现了std::io::Write特质的对象(例如TcpStream,但也可能是类似串行设备的东西),我们可以使用[Writer]来处理写入打印机命令。

// IP address of the printer
let stream = TcpStream::connect("192.168.0.12:9100").unwrap();
let mut pos = epson::Writer::open(Model::T20II, Box::new(stream)).unwrap();

pos.speed(5).unwrap();
pos.write_all(b"HACK THE PLANET\n").unwrap();
pos.feed(5).unwrap();
pos.cut().unwrap();

写入到tokio::io::AsyncWrite

除了std::io支持外,epson包还包含使用[AsyncWriter]写入tokio::io::AsyncWritetokio支持。

这需要tokio特性。

let stream = TcpStream::connect("192.168.0.12:9100").await.unwrap();
let mut pos = epson::AsyncWriter::open(Model::T20II, Box::new(stream)).await.unwrap();

pos.speed(5).await.unwrap();
pos.write_all(b"HACK THE PLANET\n").await.unwrap();
pos.feed(5).await.unwrap();
pos.cut().await.unwrap();

依赖关系

~12MB
~71K SLoC