Printing 打印机没有';接收esc/p命令时不能工作

Printing 打印机没有';接收esc/p命令时不能工作,printing,command,label,escpos,Printing,Command,Label,Escpos,我正在尝试使用标签打印机Brother TD-4000使用ESC/p命令。 我已经测试了打印机的正确软件P-touch Editor 5.1,我可以制作多个标签,打印机工作正常,但当我试图用Java代码制作自己的标签时,打印机根本不工作,没有响应。 我曾经使用EZPL与其他标签打印机一起工作过,我对这种方法没有任何问题。 我现在可以试试什么 我的代码非常简单,如下所示: public class PrintESC_P { public static void main(String

我正在尝试使用标签打印机Brother TD-4000使用ESC/p命令。 我已经测试了打印机的正确软件P-touch Editor 5.1,我可以制作多个标签,打印机工作正常,但当我试图用Java代码制作自己的标签时,打印机根本不工作,没有响应。 我曾经使用EZPL与其他标签打印机一起工作过,我对这种方法没有任何问题。 我现在可以试试什么

我的代码非常简单,如下所示:

public class PrintESC_P {   
    public static void main(String[] args) {
        PrintService printService = null;
        String printerName = "Brother TD-4000";
        HashAttributeSet attributeSet = new HashAttributeSet();
        attributeSet.add(new PrinterName(printerName, null));
        PrintService[] services = PrintServiceLookup.lookupPrintServices(null, attributeSet);
        if (services.length == 0) {
            throw new IllegalArgumentException("Printer not found.");
        } else if (services.length > 1) {
            System.out.println("Found more than one printer. Only the first printer will be used.");
        }
        printService = services[0];
        System.out.println("Printer found: "+printService.getName());
        try {
            DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;          
            String _ESC_P_Code = "ESC i a 00h\r\n"  +
                    "ESC @\r\n" +
                    "ESC i L 01h\r\n" +
                    "ESC ( C 02h 00h FCh 02h\r\n" +
                    "ESC $ 2Bh 00h\r\n" +
                    "ESC ( V 02h 00h 6Dh 01h\r\n" +
                    "ESC k 0bh\r\n" +
                    "ESC X 00h 64h 00h\r\n" +
                    "PRINTER TEST\r\n" +
                    "ESC i C\r\n" +
                    "FF\r\n";
            SimpleDoc doc = new SimpleDoc(_ESC_P_Code.getBytes(), flavor, null);
            DocPrintJob job = printService.createPrintJob();
            job.print(doc, null);
        } catch (Exception e) {
        e.printStackTrace();
        }
    }
}

提前谢谢

最后,我不得不改变将代码发送到打印机的方式。 我必须以十六进制格式的字节数组发送代码,而不是字符串。
现在打印机工作正常,可以识别命令。

我认为您的问题是字符串中包含空格,这在ESC/p语言中是不允许的

而不是(不正确的)字符串:

你必须写:

String _ESC_P_Code = "\x1Bia\x00" // that is 4 bytes: 0x1B, 0x69, 0x61, 0x00
您不必遵循我编写字符串的方式,只需确保发送的是原始数据


我解决了在ESC/p中打印的问题,首先调试程序并查看以二进制形式发送到打印机的字符串,然后手动检查是否没有额外的字节-打印机不会接受任何此类错误。

我对相同的
Brother TD-4000
也有同样的问题,我也尝试使用十六进制,但不起作用,你能发布你的解决方案吗?非常感谢,我将不胜感激
String _ESC_P_Code = "\x1Bia\x00" // that is 4 bytes: 0x1B, 0x69, 0x61, 0x00