Java ESCPOS图像模式与切纸模式

Java ESCPOS图像模式与切纸模式,java,escpos,Java,Escpos,很抱歉,如果这将被视为对我的前一个问题的重复,但是。。。 我正在尝试使用ESCPOS命令发送一台打印机来写入一个图像行,然后是一个剪纸(部分剪切)命令,结果我收到了丢失的图像行(此时我尝试了两台不同的打印机,其中一台随机跳过图像行,另一台静态跳过) 整个图像打印场景取自, 稍作改动: for (int y = 0; y < image.length; y += 24) { //This part if (n == 2)

很抱歉,如果这将被视为对我的前一个问题的重复,但是。。。 我正在尝试使用ESCPOS命令发送一台打印机来写入一个图像行,然后是一个剪纸(部分剪切)命令,结果我收到了丢失的图像行(此时我尝试了两台不同的打印机,其中一台随机跳过图像行,另一台静态跳过)

整个图像打印场景取自, 稍作改动:

                for (int y = 0; y < image.length; y += 24) {
//This part
                    if (n == 2) {
                        bos.write(printerSchema.getCutPaper());
                    }
// END
                        bos.write(printerSchema.getImageMode());
                        // Set nL and nH based on the width of the image
                        bos.write(new byte[] { (byte) (0x00ff & image[y].length), (byte) ((0xff00 & image[y].length) >> 8) });
                        for (int x = 0; x < image[y].length; x++) {
                            // for each stripe, recollect 3 bytes (3 bytes = 24 bits)
                            bos.write(recollectSlice(y, x, image));
                        }

                    // Do a line feed, if not the printing will resume on the same
                    // line
                    bos.write(printerSchema.getLineFeed());
                    n++;
                }

我刚刚用我们自己的代码检查了一下,它确实有效。我们使用完全相同的序列,即设置图像模式、设置图像宽度、发送图像数据、发送换行。然而,我们观察到,对于某些打印机,我们需要页面模式。但是,您可以尝试设置“在N行更改后剪切”来测试它吗?问题是,我今天在一台新的XPrinter Xp-80上试过(甚至不知道那是什么),我收到了10/10的图像线反效果,但在上一个(Sam4S Giant100 duplicate)上,我可以收到100个好结果和一些坏结果。从这一点出发,我假设图像线绘制必须有一些完成指针,以便在继续执行下一个命令(剪切线)之前绘制线。换行符(0x0a)就是“完成指针”。在这里,使用Aures ODP-333打印机进行剪切。谢谢。那一定是打印机。我刚用我们自己的代码检查了一下,肯定能用。我们使用完全相同的序列,即设置图像模式、设置图像宽度、发送图像数据、发送换行。然而,我们观察到,对于某些打印机,我们需要页面模式。但是,您可以尝试设置“在N行更改后剪切”来测试它吗?问题是,我今天在一台新的XPrinter Xp-80上试过(甚至不知道那是什么),我收到了10/10的图像线反效果,但在上一个(Sam4S Giant100 duplicate)上,我可以收到100个好结果和一些坏结果。从这一点出发,我假设图像线绘制必须有一些完成指针,以便在继续执行下一个命令(剪切线)之前绘制线。换行符(0x0a)就是“完成指针”。在这里,使用Aures ODP-333打印机进行剪切。谢谢。那一定是打印机。
IMAGE_MODE = new byte[] { 0x1B, 0x2A, 33 }, 
LINE_FEED = new byte[] { 0x0A },
LINE_SPACE_24 = new byte[] { 0x1B, 0x33, 24 }, 
LINE_SPACE_30 = new byte[] { 0x1B, 0x33, 30 },
CUT_PAPER = new byte[] { 29, 86, 1 };