You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebUSB对接热敏小票打印机如何发送小票切纸指令

WebUSB连接热敏打印机实现小票切纸方案

绝大多数桌面热敏POS打印机兼容标准ESC/POS指令集,切纸功能不需要依赖系统打印驱动配置,直接通过WebUSB发送原始控制指令即可实现,完全适配Zadig替换驱动后的使用场景。

核心指令说明

  • 全切纸(完全切断小票):指令字节为十六进制 0x1D 0x56 0x00,对应ESC/POS指令 GS V 0
  • 半切(小票留少量连接点,方便撕取):指令字节为十六进制 0x1D 0x56 0x01,对应ESC/POS指令 GS V 1

注意:发送切纸指令前需要额外输出3-5个换行,把最后一行打印内容推送至切刀位置,避免切到打印内容。

代码修改方式

直接修改现有代码中的print函数,将打印文本和切纸指令合并后通过transferOut发送即可,修改后的代码如下:

function print() {
    const printText = document.getElementById("printContent").value;
    const encoder = new TextEncoder();
    // 打印文本后加4个换行,预留切纸位置
    const textBytes = encoder.encode(printText + "\n\n\n\n");
    // 全切纸指令,需要半切就替换为[0x1D, 0x56, 0x01]
    const cutCommand = new Uint8Array([0x1D, 0x56, 0x00]);
    // 合并文本数据和切纸指令
    const sendBuffer = new Uint8Array(textBytes.length + cutCommand.length);
    sendBuffer.set(textBytes, 0);
    sendBuffer.set(cutCommand, textBytes.length);

    device.transferOut(1, sendBuffer)
    .catch(error => { console.log(error); })
}

异常排查

如果发送指令后切纸无响应,按以下顺序检查:

  • 确认当前使用的输出端点号正确:可在device.configurations的接口配置中查找Bulk OUT类型的端点,部分打印机输出端点号不是1,替换为实际端点号即可
  • 若使用的是小众非通用品牌打印机,可联系厂商索要切纸指令的字节码,替换上述代码中的cutCommand即可
  • 适当增加打印内容后的换行数量,避免因为走纸距离不足导致切刀未触发

内容的提问来源于stack exchange,提问作者Fathy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:45:45