类对象支持库。路径:支持库 → 扩展类库 → 小票类。
类型名写「小票类」。声明时自动创建。
把热敏小票常用动作(对齐、加粗、切纸、条码等)编成 ESC/POS 字节,再发到打印机或模拟器。开通票位后才能编译;发行程序不再验票。
能力包:plugins/supportlib.receipt/(须在 YStudio.exe 旁 plugins/,重启 IDE 后出现)。
先搞清三件事
- 小票类 ≠ 打印类
- 打印类:按页排版(GDI),适合 A4/对账单;另有「打开原始/发送原始」发任意字节。
- 小票类:按 ESC/POS 指令流拼内容,适合 58/80mm 热敏。 - 先组装,再投递
调用初始化/输出文本/切纸等只是往内存缓冲里写字节;真正出纸要调打印到网口/打印到串口/打印到打印机,或取字节集后自己发。 - 指令偏 Epson
市面多数机兼容;个别品牌切纸/二维码码字不同。乱码先改置编码;二维码不显示可试真机或换模拟器。
推荐测试路径(无真机)
Windows 上没有「打印预览」能画出 ESC/POS,要用监听 9100 的模拟器:
- 下载并运行 CrossEscPosEmulator(Windows x64 自包含包),确认 TCP 监听 9100。
- 本工程点「打印到模拟器」→
打印到网口("127.0.0.1", 9100)。 - 模拟器窗口应出现小票预览(可导出 PNG)。
其它可选:
| 方案 | 说明 |
|---|---|
本仓库 tools/escpos-emulator |
双击 启动模拟器.bat(已打 UTF-8 中文补丁);浏览器 localhost:3000,TCP 9100 |
| escpos-emulator 上游 | 原版无中文码表,UTF-8 会乱码;请用本仓库目录 |
| virtual-printer.online | 网页虚拟机,给公网 TCP 口(注意隐私) |
| 写文件排查 | 写出文件("ticket.bin", 票.取字节集()),用十六进制查看器对照指令 |
不要用「Microsoft Print to PDF」测小票类:那是 GDI 排版通道,不会解析 ESC/POS。
示例工程:examples/小票打印。
快速开始(网口 / 模拟器)
小票类 票
票.置编码(1) // 本机 Node 模拟器用 UTF-8;国内真机多数改 3=GBK
票.清缓冲()
票.初始化() // 每张票开头复位
票.置对齐(1)
票.置加粗(真)
票.置字号(2, 2)
票.输出文本("某某商店")
票.置加粗(假)
票.置字号(1, 1)
票.换行()
票.置对齐(0)
票.输出文本("可乐 x1 3.00")
票.换行()
票.输出文本("合计: 3.00")
票.换行(2)
票.置对齐(1)
票.输出二维码("https://example.com/o/1", 3)
票.换行()
票.走纸(48) // 切纸前多空一点
票.切纸()
如果 (!票.打印到网口("127.0.0.1", 9100)) {
信息框(票.取错误(), 0)
}
三种投递怎么选
| 方法 | 适用 |
|---|---|
打印到网口 |
网口热敏、本机模拟器(127.0.0.1:9100)——开发首选 |
打印到串口 |
USB 显示为 COMx 的机子 |
打印到打印机 |
已在 Windows 安装驱动且支持 RAW 的队列名 |
发完默认保留缓冲(方便连打多份);换新内容前请 清缓冲()。
也可交给打印类:
打印类 打
打.打开原始("XP-58")
打.发送原始(票.取字节集())
打.关闭()
方法说明
置编码 / 取编码
- 签名:
无 置编码([整数 编码=3])·整数 取编码() - 说明:控制文本写入缓冲时的编码。
3=GBK(默认),1=UTF-8。真机中文乱码先改这里。
清缓冲 / 取字节集
- 签名:
无 清缓冲()·字节集 取字节集() - 说明:清掉已组装指令;或取出副本用于存盘、自建发送、对接打印类 RAW。
初始化
- 签名:
逻辑 初始化() - 说明:写入复位指令。每张小票开头建议调用,避免上次的加粗/对齐残留。
置对齐 / 置加粗 / 置字号 / 置下划线
- 对齐:
0左 ·1中 ·2右 - 字号:宽倍、高倍各
1~8;店名常用2,2,正文1,1 - 样式对之后的
输出文本生效,直到再次修改或初始化
输出文本 / 换行 / 走纸
输出文本:不自动换行,需再调换行换行(n):空 n 行(按字符行高)走纸(点数):按「点」微调空白(约 8~12 点≈1mm)。切纸前、图文之间留白用它;整行空白用换行
切纸 / 开钱箱
- 切纸:
0全切 ·1半切;无刀口机器可能忽略 - 开钱箱:钱箱须接到打印机;
0/1对应不同脉冲针脚,无反应可换试
输出条码 / 输出二维码
| 条码类型 | 含义 |
|---|---|
| 0 | CODE128(默认) |
| 1 | CODE39 |
| 2 | EAN13 |
| 3 | EAN8 |
| 4 | UPC-A |
二维码模块大小 1~16,58mm 纸常见 3~5。指令偏 Epson,机型差异大。
打印到打印机 / 打印到网口 / 打印到串口 / 取错误
见上表;失败时 取错误() 看原因(连接失败、OpenPrinter、串口占用等)。
命令摘要
| 方法 | 一句话 |
|---|---|
置/取编码 |
文本编码 GBK/UTF-8 |
清缓冲 / 取字节集 |
清空 / 取出指令 |
初始化 |
每张票开头复位 |
置对齐 · 置加粗 · 置字号 · 置下划线 |
后续文字样式 |
输出文本 · 换行 · 走纸 |
正文与空白 |
切纸 · 开钱箱 |
收尾与钱箱 |
输出条码 · 输出二维码 |
码类 |
打印到打印机 · 打印到网口 · 打印到串口 |
投递 |
取错误 |
失败原因 |