思普瑞特,小票打印机和标签打印机java网络驱动设计与实现

网络打印走的socket连接,主流的java, php, c, c#等语言都支持socket,所以实现打印机的网络打印几乎是和语言无关的

打印机默认端口是9100 使用socket连接上打印机后,将打印内容按照打印机的指令进行编码后调用send就可以打印了

协议文档

小票打印机和标签打印机走的协议不同,所以各自都有一个协议,小票打印机使用的是esc协议,标签打印机使用的是tsc/tspl协议

小票打印机esc协议文档:

  1. sprinter.com.cn/img/up/data…
  2. blog.csdn.net/feng88724/a…
  3. www.sprt.cc/img/up/data…

标签打印机tsc/tspl协议文档:

  1. sprinter.com.cn/img/up/data…

可以看到打印机支持的指令非常多,下面找到常用的指令实现我们的打印目的

小票打印机

小票打印机已经有java驱动了,参考:github.com/SubLuLu/the… 小票打印机指令使用10进制表示了,所以难以阅读,指令对应的意思请对照文档 核心代码如下

连接打印机

public NetEscPos(String ip, int port, String encoding) throws IOException {
    Socket socket = new Socket(ip, port);
    socketOut = socket.getOutputStream();
    socket.isClosed();
    NetEscPos.encoding = encoding;
    writer = new OutputStreamWriter(socketOut, encoding);
}
复制代码

发送命令,比如发送切纸命令

private NetEscPos feedAndCut() throws IOException {
    writer.write(0x1D);
    writer.write(86);
    writer.write(65);
    writer.write(0);
    writer.flush();
    return this;
}
复制代码

对应的文档为

查看打印效果

标签打印机

参考实现:github.com/fintrace/ts… 核心指令如下

SIZE 40 mm, 30 mm
SPEED 5
DENSITY 7
DIRECTION 1
REFERENCE 0,0
OFFSET 0 mm
SHIFT 0
CLS
TEXT 20,60,"TSS24.BF2",0,2,2,"堂食   0001"
TEXT 20,120,"TSS24.BF2",0,1,1,"2019-03-22 10:05:51"
TEXT 20,150,"TSS24.BF2",0,1,1,"大鸡腿(1/3)"
TEXT 20,180,"TSS24.BF2",0,1,1,"加冰 标签备注"
PRINT 1
复制代码

查看打印效果:

对应的指令可以参考文档,比如第一行设置标签纸宽度和长度的SIZE指令

一些注意的点

可以使用redis的阻塞队列实现获取是否打印成功的状态,参考:基于List的 LPUSH+BRPOP 的实现

字符集需要设置成 gb2312

使用点阵图可以打印更清晰的图片 java参考:EscPos.java#L501 c#参考:blog.csdn.net/xiaoxian802… 核心代码如下

// 每行进行打印
for (int i = 0; i < bufImage.getHeight() / 24 + 1; i++) {
    write(escBmp);

    for (int j = 0; j < bufImage.getWidth(); j++) {
        for (int k = 0; k < 24; k++) {
            if (((i * 24) + k) < bufImage.getHeight()) {
                pixelColor = bufImage.getRGB(j, (i * 24) + k);
                if (pixelColor != -1) {
                    data[k / 8] += (byte) (128 >> (k % 8));
                }
            }
        }

        write(data);
        // 重置参数
        data[0] = (byte) 0x00;
        data[1] = (byte) 0x00;
        data[2] = (byte) 0x00;
    }
    //换行
    byte[] byteSend1 = new byte[2];
    byteSend1[0] = 0x0d;
    byteSend1[1] = 0x0a;
    write(byteSend1);
}
复制代码

c#版如下

// data
for (int i = 0; i < (bmp.Height / 24) + 1; i++)
{
    socket.Send(escBmp, escBmp.Length, 0);
 
    for (int j = 0; j < bmp.Width; j++)
    {
        for (int k = 0; k < 24; k++)
        {
            if (((i * 24) + k) < bmp.Height)   // if within the BMP size
            {
                pixelColor = bmp.GetPixel(j, (i * 24) + k);
                if (pixelColor.R == 0)
                {
                    data[k / 8] += (byte)(128 >> (k % 8));
                }
            }
        }
 
        socket.Send(data, 3, 0);
        data[0] = (byte)'\x00';
        data[1] = (byte)'\x00';
        data[2] = (byte)'\x00';    // Clear to Zero.
    }
    
    byte_send = Encoding.GetEncoding("gb18030").GetBytes("\n");
 
    //发送测试信息
    socket.Send(byte_send, byte_send.Length, 0);
} // data
复制代码

如果在编写驱动过程中遇到问题,可加作者微信探讨

转载于:https://juejin.im/post/5cd00cd16fb9a032036199ef

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EPSON TM-P2小票打印机是一款热敏打印机,常用于商业领域打印小票、发票等任务。为了能够正常使用TM-P2打印机,需要正确安装驱动程序。 首先,我们可以通过以下几种途径获得EPSON TM-P2小票打印机驱动程序。 1. 官方网站:EPSON官方网站提供了下载驱动程序的页面。我们可以在EPSON官方网站上找到相应型号的打印机驱动程序,并进行下载和安装。 2. 光盘:购买新的EPSON TM-P2小票打印机时,通常会随附驱动程序光盘。我们可以将光盘插入电脑的光驱中,按照光盘上的指示进行驱动程序的安装。 3. 更新驱动程序:如果我们已经安装了旧版本的驱动程序,可以通过EPSON官方网站或其他可靠的驱动程序下载网站,下载最新版本的驱动程序,然后进行更新。 安装驱动程序时,我们需要按照以下步骤进行操作: 1. 下载驱动程序并保存在电脑中。 2. 双击运行下载好的驱动程序安装文件,开始安装过程。 3. 按照安装向导的指示进行驱动程序的安装。 4. 在安装完成后,根据提示重新启动电脑,使驱动程序生效。 5. 之后,将EPSON TM-P2小票打印机连接到电脑上。这需要使用打印机的USB接口与电脑进行连接。 6. 打印机连接完成后,在操作系统中查找打印机设置菜单,选择EPSON TM-P2小票打印机作为默认打印机。 7. 至此,驱动程序安装完毕,我们就可以通过应用程序将需要打印的小票发送到EPSON TM-P2小票打印机进行打印了。 总的来说,安装EPSON TM-P2小票打印机驱动程序相对简单,只需按照指引进行操作即可。安装完成后,我们就可以正常使用该打印机进行小票打印等任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值