【问题标题】:ERROR_WRONG_LABEL when trying to print wireless using Android Brother Sdk for label printer尝试使用用于标签打印机的 Android Brother Sdk 进行无线打印时出现 ERROR_WRONG_LABEL
【发布时间】:2014-05-13 13:33:23
【问题描述】:

我尝试使用我的 Android 应用程序中的标签进行打印,该应用程序使用 wifi 命令 Brother QL-720NW 标签打印机。由于我在打印机上执行了出厂重置,因此出现此错误

问题: ERROR_WRONG_LABEL(表示 sdk 指南中指定的错误卷)错误在打印命令中抛出,因为我执行了工厂 在打印机上重置。

代码:

void printTemplateSample() 
    {
        Printer myPrinter = new Printer();
        PrinterInfo myPrinterInfo = new PrinterInfo();

        try{
            // Retrieve printer informations
            myPrinterInfo = myPrinter.getPrinterInfo();

            // Set printer informations
            myPrinterInfo.printerModel = PrinterInfo.Model.QL_720NW;
            myPrinterInfo.port=PrinterInfo.Port.NET;
            myPrinterInfo.printMode=PrinterInfo.PrintMode.FIT_TO_PAGE;
//                  :
            myPrinterInfo.paperSize = PrinterInfo.PaperSize.A4;


            myPrinterInfo.ipAddress="192.168.1.13";
            myPrinterInfo.macAddress="00:80:92:BD:35:7D";


            myPrinter.setPrinterInfo(myPrinterInfo);

            // Start creating P-touch Template command print data
//          myPrinter.startPTTPrint(1, null);
           Boolean val= myPrinter.startPTTPrint(6, null);
            Log.i("print", "startPTTPrint "+val);

            // Replace text
            myPrinter.replaceText("abcde");
//          myPrinter.replaceText("12345");

            // Trasmit P-touch Template command print data
            PrinterStatus status=myPrinter.flushPTTPrint();//ERROR thrown here
            Log.i("print", "PrinterStatus  err"+status.errorCode);

        }catch(Exception e){    
            e.printStackTrace();
        }
    }
  • 我正在使用来自here 的示例代码
  • 目标 - 我的最终目标是替换模板中的文本并打印,但目前我无法打印任何内容
  • 我正在使用this Brother SDK。
  • 我尝试了兄弟的android示例代码,它也给出了同样的错误
  • 但是兄弟我的打印应用和Ptouch软件打印成功,没有任何错误。

请帮忙!

谢谢

【问题讨论】:

  • 检查您的打印机的设置..可能是您更改了设置.. :D
  • 我只是想看看您是否在 WiFi 打印机连接进入关闭模式时遇到问题,以及您是否找到了从代码重新连接的方法。谢谢。

标签: android printing brother-print-sdk


【解决方案1】:

TL;DR 我通过设置workPath 属性解决了:

printerInfo.workPath = context.cacheDir.Path

我注意到setPrinterInfo 返回错误,并且在尝试打印时收到了WRONG_LABEL 错误代码。调试代码我发现它与Brother SDK所需的文件写入权限有关。该文档令人困惑,并提到需要WRITE_EXTERNAL_STORAGE if workPath 未设置。即使拥有此权限,我也无法使其工作。我通过设置workPath属性解决了如上图。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,发现您应该将labelNameIndex 字段指定给PrinterInfo 对象。 我有QL-810W 打印机。我尝试了许多值,但在将其设置为之前没有任何效果:

       printerInfo.labelNameIndex = LabelInfo.QL700.W62RB.ordinal // -> 17
    

    我通过使用从 0 到 100 的所有整数创建一个 for 循环并记录结果直到使用该值成功打印,找出了正确的值。我知道这不是最佳解决方案,但我找不到这些代码的任何文档或参考。

    这是我用来指定 PrinterInfo 对象的代码:

        val printerInfo = PrinterInfo()
        printerInfo.printerModel = PrinterInfo.Model.QL_810W
        printerInfo.port = PrinterInfo.Port.NET
        printerInfo.orientation = PrinterInfo.Orientation.PORTRAIT
        printerInfo.paperSize = PrinterInfo.PaperSize.CUSTOM
        printerInfo.align = PrinterInfo.Align.CENTER
        printerInfo.valign = PrinterInfo.VAlign.MIDDLE
        printerInfo.printMode = PrinterInfo.PrintMode.ORIGINAL
        printerInfo.numberOfCopies = 1
        printerInfo.labelNameIndex = LabelInfo.QL700.W62RB.ordinal // -> 17
        printerInfo.isAutoCut = true
        printerInfo.isCutAtEnd = false
        return printerInfo
    

    【讨论】:

      【解决方案3】:

      我通过创建LabelInfo 对象解决了这个问题,因为您有一台标签打印机。文档中根本不清楚。您需要在打印机信息之后设置标签信息。

      PrinterInfo info = myPrinter.getPrinterInfo();
      info.paperSize = PrinterInfo.PaperSize.CUSTOM;
      
      LabelInfo mLabelInfo = new LabelInfo();
      mLabelInfo.labelNameIndex = 5;
      mLabelInfo.isAutoCut = true;
      mLabelInfo.isEndCut = true;
      mLabelInfo.isHalfCut = false;
      mLabelInfo.isSpecialTape = false;
      
      myPrinter.setPrinterInfo(info);
      myPrinter.setLabelInfo(mLabelInfo);
      

      ERROR_WRONG_LABEL 表示您在paperSizelabelNameIndex 中的值有误。 我有一台带有 24 英寸纸张的 P750W 标签打印机。我发现 5 的值适合这种尺寸,但我不知道你的打印机。

      【讨论】:

      • 关于labelNameIndex的值,我终于找到了值的来源。这是LabelInfo.PT.valueOf("W24").ordinal()的结果
      • 嗨,Mathieu,我正在使用 QL_710W,我的代码与您完全相同,但我仍然收到以下错误:ERROR_WRONG_LABEL 我们应该为第一个参数设置什么值:Boolean val = myPrinter .startPTTPrint(1, null);
      • 24 毫米标签约半英寸
      • 我使用了和你描述的一样的方法,但还是出现同样的错误,请你帮帮我吗?
      • 我已经按照您的建议进行了尝试,但仍然无法打印stackoverflow.com/questions/50251424/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多