我尝试使用 wifi 命令 Brother QL-720NW标签打印机从我的Android应用程序中使用标签进行打印。由于我在打印机上执行了出厂重置,我收到此错误
问题: ERROR_WRONG_LABEL(表示sdk指南中指定的错误卷)在打印命令上引发错误,因为我执行了工厂 在打印机上重置。
CODE:
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();
}
}
请帮忙!
由于
答案 0 :(得分: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
表示您在paperSize
或labelNameIndex
中的值不正确。
我有一台带有24'的P750W标签打印机。纸。我发现价值5
是这个尺寸的好价值,但我不知道你的打印机。
答案 1 :(得分:1)
我遇到了同样的问题,并且发现应该为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
答案 2 :(得分:1)
TL; DR
我通过设置workPath
属性来解决:
printerInfo.workPath = context.cacheDir.Path
我注意到setPrinterInfo
返回false,并且在尝试打印时收到了WRONG_LABEL
错误代码。调试代码后,我发现它与Brother SDK所需的文件写入权限有关。该文档令人困惑,并且提到需要设置WRITE_EXTERNAL_STORAGE
如果未设置workPath 。即使获得此许可,我也无法使其正常工作。我通过设置workPath
属性来解决,如上所示。