一、前言(整個(gè)流程除了調(diào)整打印模板位子,操作下來還是挺快的 幾分鐘就搞定,文章圖片比較多大家可能感覺操作比較麻煩,其實(shí)挺簡單的)
因甲方需求,需要對現(xiàn)項(xiàng)目進(jìn)行升級,需要增加移動手持終端進(jìn)行巡檢,巡檢時(shí)還需要對商品進(jìn)行抽檢并打印熱敏不干膠標(biāo)簽進(jìn)行貼到抽樣樣品上。在這樣的背景下便在JD進(jìn)行了采樣,進(jìn)行技術(shù)性研究。本文章將一步一步教大家如何使用.NET MAUI 來集成java printerx 來實(shí)現(xiàn)使用MAUI 在移動終端上進(jìn)行標(biāo)簽打印。 下方是采購的移動終端設(shè)備。
二、下載AAR 開發(fā)SDK
通過官方文檔我們得知 設(shè)備的打印SDK包是?printerx,開發(fā)包是JAVA開發(fā)的,這種情況如何使用MAUI進(jìn)行對接呢?這難不倒我們,我們今天就用.NET MAUI 來進(jìn)行集成?printerx
? 1、打開https://mvnrepository.com 網(wǎng)站,搜索 printerx
? https://mvnrepository.com/search?q=printerx?
?2、點(diǎn)擊?printerx 進(jìn)去后,我們選擇最新版 “1.0.14”
3、然后點(diǎn)擊?View All?,將看到如下界面。
?4、第一個(gè)?printerx-1.0.14.aar 是我們需要下載的文件,點(diǎn)擊將來文件下載到本地桌面。
三、在MAUI中集成AAR SDK
1、是用VS2022 新建MAUI項(xiàng)目(.NET 7),然后添加新項(xiàng)目“Android 綁定庫(Xmarin)”,沒有“Android 綁定庫(Xmarin)”的在installer中選擇安裝 Xmarin。
2、打開“Android 綁定庫(Xmarin)”項(xiàng)目,打開 Jars文件夾,將之前下載的?printerx-1.0.14.aar 拷貝進(jìn)文件夾內(nèi)。
?3、右擊?printerx-1.0.14.aar 選擇屬性,將生成操作選擇 “LibraryProjectZip”。
?4、查看項(xiàng)目屬性,和我的保持一致。
?5、將MAUI項(xiàng)目中 安卓端引用?“Android 綁定庫(Xmarin)”項(xiàng)目。
6、應(yīng)為前幾次測試的時(shí)候,WIndows、IOS端有報(bào)錯提示不兼容發(fā)生,我將其他端都刪掉了,只保留了安卓端。
四、調(diào)試移動終端
1、為了方便測試 我把代碼寫到了"MainPage.xaml.cs",MAUI自動生成的代碼沒有刪除,也再文件中。以下是完整代碼,應(yīng)為是技術(shù)性測試所以代碼寫的不是很規(guī)范,打印標(biāo)簽的位子也是寫的很隨意,正式放到項(xiàng)目中將優(yōu)化。
using Android.Icu.Text; using Com.Sunmi.Printerx; using Java.Interop; using Java.Util; namespace MauiApp1 { public partial class MainPage : ContentPage { int count = 0; public MainPage() { InitializeComponent(); } public Com.Sunmi.Printerx.PrinterSdk.Printer Printer; private void OnCounterClicked(object sender, EventArgs e) { var listen = new PrinterListen(); Com.Sunmi.Printerx.PrinterSdk.Instance.GetPrinter( Android.App.Application.Context, listen ); count++; if (count == 1) CounterBtn.Text = $"Clicked {count} time"; else CounterBtn.Text = $"Clicked {count} times"; SemanticScreenReader.Announce(CounterBtn.Text); } public class PrintResult2 : Com.Sunmi.Printerx.Api.PrintResult { public override void OnResult(int p0, string p1) { } } //獲取打印機(jī)監(jiān) public class PrinterListen : Java.Lang.Object, Com.Sunmi.Printerx.PrinterSdk.IPrinterListen { public Com.Sunmi.Printerx.PrinterSdk.Printer Printer; public void OnDefPrinter(PrinterSdk.Printer p0) { this.Printer = p0;//獲取到打印機(jī) var api = Printer.CanvasApi(); api.InitCanvas(Com.Sunmi.Printerx.Style.BaseStyle.Style.SetWidth(52*8).SetHeight(35*8));//初始化 api.RenderArea(Com.Sunmi.Printerx.Style.AreaStyle.Style.SetWidth(49*8).SetHeight(33*8)//設(shè)置打印區(qū)域 .SetStyle(Com.Sunmi.Printerx.Enums.Shape.RectWhite) .SetPosX(0).SetPosY(0)); api.RenderText("標(biāo)題", //打印字符串 Com.Sunmi.Printerx.Style.TextStyle.Style .SetAlign(Com.Sunmi.Printerx.Enums.Align.Center) .SetTextSize(32) .SetPosX(208).SetPosY(16) ); api.RenderText("商品名稱(車牌號)", Com.Sunmi.Printerx.Style.TextStyle.Style .SetAlign(Com.Sunmi.Printerx.Enums.Align.Center) .SetTextSize(30) .SetPosX(208).SetPosY(40 + 10) .EnableBold(true) ); api.RenderBarCode("2311202003400013",//打印條形碼 Com.Sunmi.Printerx.Style.BarcodeStyle.Style .SetAlign(Com.Sunmi.Printerx.Enums.Align.Center) .SetPosX(208).SetPosY(38+12+30) .SetBarHeight(80).SetDotWidth(3) .SetWidth(350) ); api.RenderText("2311202003400013", Com.Sunmi.Printerx.Style.TextStyle.Style .SetAlign(Com.Sunmi.Printerx.Enums.Align.Center) // .SetTextSize(24) .SetPosX(208).SetPosY(38+32+95) ); api.RenderText("商戶姓名:姓名007", Com.Sunmi.Printerx.Style.TextStyle.Style // .SetAlign(Com.Sunmi.Printerx.Enums.Align.Center) // .SetTextSize(20) .EnableBold(true) .SetPosX(30).SetPosY(38 + 32 + 100 +23) ); api.RenderText("抽樣時(shí)間:2023-11-02 13:00", Com.Sunmi.Printerx.Style.TextStyle.Style .EnableBold(true) .SetPosX(30).SetPosY(38 + 32 + 100 +25+25) ); var printReuslt = new PrintResult2(); api.PrintCanvas(1, printReuslt); } public void OnPrinters(IList<PrinterSdk.Printer> p0) { this.Printer.Dispose(); } } } }
五、完成對接
?通過以上操作便可以打印出標(biāo)簽了,以下是測試效果。
?
文章來源:http://www.zghlxwxcb.cn/news/detail-747539.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-747539.html
到了這里,關(guān)于.NET MAUI Android 對接商米移動手持終端打印JAVA SDK的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!