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
每月439次下载
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::AsyncWrite
的tokio
支持。
这需要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