Y++ 社区

【Y++】小票类使用-商店/便利店/超时打印功能

示例 基础示例 精选 浏览 43 下载 1 管理员

IDE v4.1 · 系统 window 10 x64

Y++小票打印

【Y++】小票类使用-商店/便利店/超时打印功能

约 1162 字 · 3 分钟阅读

Y++使用扩展类库:小票类实现打印。

Y++实现代码:

小票类 g_票

函数 置状态 (文本 s) {
    标签状态.标题 = s
}

函数 组装小票 () {
    g_票.清缓冲()
    // 本机 escpos-emulator 按 UTF-8 显示;国内真机热敏多数用 3=GBK

    g_票.置编码(1)
    g_票.初始化()

    g_票.置对齐(1)
    g_票.置加粗(真)
    g_票.置字号(2, 2)
    g_票.输出文本(编辑店名.标题)
    g_票.置加粗(假)
    g_票.置字号(1, 1)
    g_票.换行()

    g_票.置对齐(0)
    g_票.输出文本("-----------------------------------------------")
    g_票.换行()
    // 多行明细里的换行会编进缓冲(机子按 LF 换行)

    g_票.输出文本(编辑明细.标题)
    g_票.换行()
    g_票.输出文本("-----------------------------------------------")
    g_票.换行()
    g_票.置加粗(真)
    g_票.输出文本("合计: " + 编辑合计.标题)
    g_票.置加粗(假)
    g_票.换行(2)

    g_票.置对齐(1)
    如果 (编辑二维码.标题 != "") {
        g_票.输出二维码(编辑二维码.标题, 3)
        g_票.换行()
    }
    如果 (编辑条码.标题 != "") {
        g_票.输出条码(编辑条码.标题, 0)
        g_票.换行()
    }
    g_票.走纸(48)
    g_票.切纸()
}

函数 按钮组装.单击 () {
    组装小票()
    字节集 包 = g_票.取字节集()
    置状态("已组装 " + 到文本(字节集长度(包)) + " 字节(尚未发送)")
}









函数 按钮打印模拟器.单击 () {
    组装小票()
    文本 地址 = 编辑地址.标题
    如果 (地址 == "") {
        地址 = "127.0.0.1"
    }
    整数 端口 = 到整数(编辑端口.标题)
    如果 (端口 <= 0) {
        端口 = 9100
    }
    如果 (!g_票.打印到网口(地址, 端口)) {
        置状态("失败: " + g_票.取错误())
        信息框(g_票.取错误(), 0)
        返回
    }
    置状态("已发送到 " + 地址 + ":" + 到文本(端口) + "(请看模拟器预览)")
}

函数 按钮存盘.单击 () {
    组装小票()
    字节集 包 = g_票.取字节集()
    文本 路径 = 取运行目录() + "\\ticket_raw.bin"
    如果 (!写出文件(路径, 包)) {
        置状态("存盘失败")
        返回
    }
    置状态("已写入 " + 路径 + "(" + 到文本(字节集长度(包)) + " 字节)")
}


函数 程序入口 () {
    置状态("先开模拟器监听 9100,再点「打印到模拟器」。详见 README。")
    载入(主窗口)
    // 多行默认值在代码里写真实换行,避免窗体 XML 属性把 &#10; 存成字面量

    编辑明细.标题 = "可乐  x1    3.00" + "\n" + "面包  x2    8.00" + "\n" + "矿泉水 x1  2.00"
}

 

 

没有真机测试,使用的是模拟器打印效果。

源码下载:

📎 小票打印.zip(6.08 MB)