如何用热敏打印机打印二维码

问题描述 投票:0回答:1

任何人都可以帮助我解决这种情况吗?我需要帮助使用 Xamarin.Forms(iOS 和 Android)打印二维码(我只需要 Android 版本)。

打印机型号:Eurosys POSIMPT9BT02(通用打印机/支持ESC POS打印方式) 语言:Xamarin.Forms (C#)

我通过 Xamarin.Forms 中的 BluetoothSocket 发送此信息。

我有一台热敏打印机,并且我已经通过BluetoothSocket打印文本,并且我可以打印QRCode,但只能打印小QRCode,如果我打印超过500个字符的QRCode,它将发送格式不正确的QRCode并且相机无法读取它。这是我到目前为止的代码。

var byteslist = new List<byte>();
    
byte[] qrBytes = System.Text.Encoding.ASCII.GetBytes("HERE IS THE TEXT FOR THE QRCODE");
int dataLength = qrBytes.Length + 3;
byte dataPL = (byte)(dataLength % 256);
byte dataPH = (byte)(dataLength / 256);
var bytes = new List<byte>();

bytes.AddRange(new byte[] { 0x1D, 0x28, 0x6b, 0x04, 0x00, 0x31, 0x41, 0x33, 0x00 });
bytes.AddRange(new byte[] { 0x1D, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x43, 0x05 });
bytes.AddRange(new byte[] { 0x1D, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x45, 0x30 }); 
bytes.AddRange(new byte[] { 0x1D, 0x28, 0x6B, dataPL, dataPH, 0x31, 0x50, 0x30 }); 
bytes.AddRange(qrBytes);
bytes.AddRange(new byte[] { 0x1D, 0x28, 0x6b, 0x03, 0x00, 0x31, 0x51, 0x30 });
    
           
await socket.OutputStream.WriteAsync(bytes.ToArray(), 0, bytes.Count);
socket.Close();

**

我用来打印此 QRCode 的字符串示例: A:503745561B:C:D:FTE:NF:20211027G:21 /H:I1:ESN:0O:0*Q:fH3HRTUk2V7rlYr1xdpc8lfrEVZCxTrR7ylpzKRv0KWtyBAmESRzl33Qq0Etb6RQcuHo9boupsp6 S20gtjLCjVg6sA4qEZfQ9uBaDtB4Au2jyQeFdmm5HAo0GPUSILpRy5fcq0jI2FgNVANnpcV4RbvI BkgFGCEQc6xbx1HhiDw=*R:0008

**

这是我当前的输出,显示了一个无法正常工作的 QRCode:

c# xamarin xamarin.forms qr-code
1个回答
0
投票

对于 .Net Maui 的 Sunmi 打印问题,我建议使用以下链接中提供的 SunmiPOSLib 库:https://www.nuget.org/packages/SunmiPOSLib/.

该库提供了与商米打印机配合使用的功能,应该可以帮助您成功打印二维发票。您可以通过安装 NuGet 包并按照提供的文档将其集成到您的项目中。我将很快在下一次更新中启用图像打印

© www.soinside.com 2019 - 2024. All rights reserved.