Closed alaindeseine closed 1 year ago
Hi @alaindeseine ,
Apologies for such a reply on this. In the case of another_brother on the Android side the best way is to look at their printer info class for the configuration of the model and use that as a reference. In the case of your printer it would have been something around the lines of TD_2125NWB(82, RJ_4030)
so in another_brother it looks like static final TD_2125NWB = Model._internal2("TD_2125NWB", 82, RJ_4030);
We just released 0.0.34 on GitHub with support for this printers as well as all the new printers added on the Brother Android SDK v4. We'll be releasing that later this week into pub.dev but since we don't currently own that printer we cannot verify on our end. Could we trouble you to use this latest version on main and test with your printer to double confirm the update works on it?
Thanks in advance,
Hi @CodeMinion I will take a try with your new version 0.0.34. If you want me to make some test with the TD-2125NWB, no problem. It's a pleasure. Just tell me what you want me to test.
@CodeMinion I give a try with 0.0.34. I get same error that i have with my fork : ERROR_WRONG_CUSTOM_INFO
Maybe it's my on my side.
I use 51X26mmm labels (2X1inch).
Here is my test code :
...
brother.Printer printer = brother.Printer();
brother.PrinterInfo printInfo = brother.PrinterInfo();
printInfo.printerModel = brother.Model.TD_2125NWB;
printInfo.printMode = brother.PrintMode.FIT_TO_PAGE;
printInfo.isAutoCut = true;
printInfo.port = brother.Port.NET;
printInfo.binCustomPaper = BinPaper_TD2120N.RD_W51H26mm;
await printer.setPrinterInfo(printInfo);
List<brother.NetPrinter> printers = await printer.getNetPrinters(
[
brother.Model.TD_2125NWB.getName(),
],
);
printInfo.ipAddress = printers.first.ipAddress;
printer.setPrinterInfo(printInfo);
final ui.ParagraphBuilder paragraphBuilder = ui.ParagraphBuilder(
ui.ParagraphStyle(
textAlign: TextAlign.center,
fontSize: 12.0,
fontWeight: FontWeight.w500,
),
)
..pushStyle(Theme.of(context).textTheme.headlineMedium!.getTextStyle())
..addText(textToPrint);
final ui.Paragraph paragraph = paragraphBuilder.build()
..layout(
ui.ParagraphConstraints(
width: MediaQuery.of(context).size.width - 12.0 - 12.0,
),
);
await printer.printText(paragraph);
...
Here is debug informations :
E/A-Brother(27285): Printers: [Lcom.brother.ptouch.sdk.NetPrinter;@2b705bc
E/A-Brother(27285): Printer Name: Brother TD-2125NWB
E/A-Brother(27285): Out Printers: [{nodeName=BRWAC50DEBDB37F, modelName=Brother TD-2125NWB, macAddress=AC:50:DE:BD:B3:7F, serNo=L2G755268, ipAddress=192.168.1.96, location=}]
I/flutter (27285): ======> [{modelName: Brother TD-2125NWB, serNo: L2G755268, ipAddress: 192.168.1.96, macAddress:AC:50:DE:BD:B3:7F, nodeName: BRWAC50DEBDB37F, location: }]
I/GED (27285): ged_boost_gpu_freq, level 100, eOrigin 2, final_idx 29, oppidx_max 29, oppidx_min 0
E/Brother (27285): Image Bytes: [B@714e945 - Size 9004
E/Brother (27285): PrintInfo: {binCustomPaper={assetPath=packages/another_brother/custom_paper/CustomTD2120NPaper/TD2120N-RD51_26mm.bin, name=TD2120N-RD51_26mm}, isSpecialTape=false, rollPrinterCase={name=PJ_ROLLCASE_OFF, id=1}, customPaperLength=0, align={name=LEFT, id=1}, pjSpeed=2, isCutMark=false, printMode={name=FIT_TO_PAGE, id=2}, isCutAtEnd=true, savePrnPath=, isLabelEndCut=false, mirrorPrint=false, customFeed=0, overwrite=true, margin={top=0, left=0}, pjFeedMode={name=PJ_FEED_MODE_FIXEDPAGE, id=2}, isHalfCut=false, ipAddress=192.168.1.96, rotate180=false, labelMargin=0, valign={name=TOP, id=1}, customPaper=, localName=, useLegacyHalftoneEngine=false, macAddress=, port={name=NET, id=4}, lastConnectedAddress=, printQuality={name=NORMAL, id=2}, pjCarbon=false, customPaperWidth=0, printerModel={name=TD_2125NWB, id=82}, labelNameIndex=-1, skipStatusCheck=false, paperPosition={name=CENTER, id=2}, mode9=true, workPath=, timeout={connectionWaitMSec=500, receiveTimeoutSec=180, processTimeoutSec=-1, sendTimeoutSec=90, closeWaitMSec=500, closeWaitDisusingStatusCheckSec=3}, pjPaperKind={name=PJ_CUT_PAPER, id=2}, rawMode=false, useCopyCommandInTemplatePrint=false, peelMode=false, thresholdingValue=127, customPaperInfo=null, numberOfCopies=1, labelName={name=UNSUPPORT, model=QL700, id=255}, orientation={name=PORTRAIT, id=1}, isAutoCut=true, dashLine=false, rjDensity=0, softFocusing=false, scaleValue=1.0, paperSize={name=A4, id=1}, halftone={name=PATTERNDITHER, id=2}, checkPrintEnd={name=CPE_CHECK, id=3}, enabledTethering=false, banishMargin=false, trimTapeAfterData=false, pjDensity=5}
E/Brother (27285): Parsed Info: com.brother.ptouch.sdk.PrinterInfo@accc1a8
I/flutter (27285): Print Result: {isBatteryMounted: {name: Unknown, id: -1}, labelId: -1, maxOfBatteryResidualQuantityLevel: -1, labelType: -1, errorCode: {name: ERROR_WRONG_CUSTOM_INFO, id: -1}, isACConnected: {name: Unknown, id: -1}, batteryLevel: -1, batteryResidualQuantityLevel: -1}
Perharps i don't use the good bin paper ?
Hi @alaindeseine ,
Thanks for your support and thanks for all the details. From the information you provided I have a feeling the error you are facing has to do with the BinPaper. Based on my limited understanding of how the Brother printers work the bin file need to be specific to the printer model and the current version of another_brother does not include the file for your printer.
I received the bin files for your printer over the weekend and I will be updating another_brother later tonight to include bin files for the TD-2125NWB.
I'll let you know through here as soon as that's merged. Thanks again for all the help.
Hi @alaindeseine ,
I just released an update on main that includes some custom papers for TD2125NWB. You will find them under BinPaper_TD2125NWB.
Could I trouble to verify if you can print using those on your end?
Thanks in advance!
Hi @CodeMinion
I have upgraded the package this morning with flutter pub upgrade another_brother
command.
unfortunatly, i run in two problems.
First the bin label format you add does not match my label which are 51X26mm (2X1 inchs)
nevertheless, i decide to give a try with W57mm paper just to see if the ERROR_WRONG_CUSTOM_INFO dissapear or is replaced with another one.
So i replace bin paper selection line with this one :
printInfo.binCustomPaper = BinPaper_TD2125NWB.W57mm;
At run time i get this error which cause application to hang :
E/AndroidRuntime(24830): FATAL EXCEPTION: DefaultDispatcher-worker-1
E/AndroidRuntime(24830): Process: com.example.labo_brother, PID: 24830
E/AndroidRuntime(24830): java.io.FileNotFoundException: flutter_assets/packages/another_brother/custom_paper/CustomTD2125NWBPaper/TD2125NWB-57mm.bin
E/AndroidRuntime(24830): at android.content.res.AssetManager.nativeOpenAsset(Native Method)
E/AndroidRuntime(24830): at android.content.res.AssetManager.open(AssetManager.java:888)
E/AndroidRuntime(24830): at android.content.res.AssetManager.open(AssetManager.java:865)
E/AndroidRuntime(24830): at com.rouninlabs.another_brother.method.BrotherUtilsKt.binFilePathFromMap(BrotherUtils.kt:258)
E/AndroidRuntime(24830): at com.rouninlabs.another_brother.method.BrotherUtilsKt.printerInfofromMap(BrotherUtils.kt:23)
E/AndroidRuntime(24830): at com.rouninlabs.another_brother.method.GetNetPrintersMethodCall$execute$1.invokeSuspend(GetNetPrintersMethodCall.kt:33)
E/AndroidRuntime(24830): at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
E/AndroidRuntime(24830): at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
E/AndroidRuntime(24830): at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
E/AndroidRuntime(24830): at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
E/AndroidRuntime(24830): at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
E/AndroidRuntime(24830): at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
I/Process (24830): Sending signal. PID: 24830 SIG: 9
I have checked that both directory and bin file are where they need to be, and it's ok.
So i don't understand why i get a "File Not Foudn" about the bin file.
If you have any idea ...
Hi @alaindeseine ,
Thanks for testing it out and apologies for the mixup on my part. I had neglected to add the new bin directories to the pubspec in another_brother. I have updated this and pushed the changes to main.
If you have a chance could you try with the latest changes from main?
Btw, it has been a while since I worked with the bin papers but as I recall you should be able to print without them by specifying the custom paper information directly. Since your paper is not in the list of bin files it might be worth taking a look at that approach. Here is a link to a sample for that: https://github.com/CodeMinion/Demo-Another-Brother-Prime/blob/master/lib/main.dart#L208
As I recall the bin files are preconfigured values for the specific printers in a binary format but they are not required.
Thanks again for all your support with this,
Hi @CodeMinion
I have tried to print with your bin papers on my 51X26mm labels. That' not well positioned, but it print!
So from your point of view tests is ok.
I have send a mail to a man at Brother France to ask him générate bin files for labels i need.
When i will receive it i will send it to you.
For using custom paper information without using bin paper, i have tried this two weeks ago and retry when you publish the 0.0.34 version.
Here is what i do :
CustomPaperInfo customPaperInfo = CustomPaperInfo.newCustomDiaCutPaper(
printInfo.printerModel,
Unit.Mm,
51.0,
26.0,
0.0,
0.0,
0.0,
0.0,
0.0,
);
printInfo.customPaperInfo = customPaperInfo;
But this don't work.
I also try with newCustomMarkRollPaper
and newCustomRollPaper
but with no chance.
Hi @CodeMinion
I just receive the two bin files from Brother France.
You can get it at : https://nc.cabinfo.eu/index.php/s/mm43cCo3DzScQCW
Regards
Hi @alaindeseine ,
Thanks for the files and sorry to hear the custom approach didn't work out.
I have added the two files in the folder from the link and should now appear on the latest version on main under W51_H26mm and W57_H76mm in BinPaper_TD2125NWB.
If you have a chance could you test them and let me know if it works?
Thanks again for all your support with this,
Hi @CodeMinion
Unfortunatly it does not work! I get the ERROR_WRONG_CUSTOM_INFO error.
That's not you fault it is a problem with bin files i guess.
These bin files originate from Brother France, i have send them an e-mail to try understand why these bin files generates the ERROR_WRONG_CUSTOM_INFO error message.
I will tell you what they say as soon as i receive a response.
Hi @alaindeseine ,
Sorry to hear it didn't work.
Thanks! Keep me posted on what they say.
Hi @CodeMinion
Sorry for the delay, but I had to have many exchanges with Brother France, and they didn't solve my problem. We just have commercial guys in France, no Techs.
However, I finally figured out what was causing the ERROR_WRONG_CUSTOM_INFO error.
It came from the tag name in the .bin file.
So I was able to generate and test two .bin files for the 21X26mm and 57X76mm labels.
They are accessible on my cloud at this address: https://nc.cabinfo.eu/index.php/s/JM7mCbPZWbrswHp
You can add them in your package with:
static const W51H26mm = BinPaper_TD2125NWB._internal(
"W51H26",
"$_rootDir/w51h26cei.bin",
);
static const W57H76mm = BinPaper_TD2125NWB._internal(
"W57H76",
"$_rootDir/w57h76cei.bin",
);
Can you add them in the package?
If you need other label formats don't hesitate, not now that I understand the process, I can generate others for you.
Thanks again for your support.
Best regards,
Alain Deseine.
Hi @alaindeseine ,
Thanks for the new files. I have gone ahead and replaced the old bin files with the ones included in link and pushed the changes to main. If you have a chance could I trouble you to verify if they work for you?
If you would like to include support for other labels don't hesitate to send me the bin file of those and I'll be happy to include them.
Thanks again for all your support,
Hi @CodeMinion
I tested.
For the 57X76 format it works perfectly.
On the other hand, for the 51X26 format it prints but oddly it shifts.
I took a photo and uploaded it to my cloud in the same directory as the .bin files.
The two top labels are printed with the local .bin file
and the last two through the .bin file from the main branch of another_brother.
I don't understand why there is this difference.
Hi @CodeMinion ,
I have doubled check what i copy on my cloud and i make a mistake.
I have put the W57 bin file instead of the 51X26 bin file.
I have adding the good one : w51h26cei.bin
on my cloud.
Sorry for this.
Regards.
Hi @alaindeseine ,
No to worry! Thank you so much for the updated file. I have added it to another_brother and pushed the latest change to main.
If you have a chance could I trouble you to try it out to double confirm it all works out?
Thanks again for all the support,
Hi @CodeMinion
Everything is ok now.
Both the 57X76 and 51X26 are ok.
Regards.
Hi @alaindeseine ,
Thanks for all the help with this and the papers. Version 0.0.34 is now officially in pub.dev and it includes these papers.
Thanks again,
Hello,
I use your package to direct print PDF to a QL-820NWBc printer from an android app. It work like a charm. Now i need to add a new Brother model to this App And the printer model is not available in the printer list. This printer is TD-2125NWD. I have try to add it in printer_info.dart, like this :
And add it to
_values
array..This seems to wrok well as i can list printer with
But when i try to print a text or a PDF, i get this error :
Searched for
ERROR_NOT_SAME_MODEL
on Google but not really helped me. This just tell me that it seems to be a differnt printer than TD-2125.I guess i missed something, can you guide through the process of adding this new printer ?