【发布时间】:2018-11-14 20:24:19
【问题描述】:
我正在尝试使用 Xamarin 本机 android 从蓝牙打印机 (INTERMEC PB51) 打印。
我已经根据以下链接编写了代码。
How can I print an image on a Bluetooth printer in Android?
我的代码如下。
private static byte[] SELECT_BIT_IMAGE_MODE = { 0x1B, 0x2A, 33, (byte)255, 0 };
如下制作位图。
Bitmap sigImage = BitmapFactory.DecodeResource(Resources, Resource.Drawable.icn_logo_jpg);
创建蓝牙插座。
BluetoothSocket socket = null;
BufferedReader inReader = null;
BufferedWriter outReader = null;
string bt_printer = address; //AdminSettings.PrinterMACAddr;
if (string.IsNullOrEmpty(bt_printer)) bt_printer = "00:13:7B:49:D1:8C";
BluetoothDevice mmDevice = BluetoothAdapter.DefaultAdapter.GetRemoteDevice(bt_printer);
UUID applicationUUID = UUID.FromString("00001101-0000-1000-8000-00805F9B34FB");
socket = mmDevice.CreateRfcommSocketToServiceRecord(applicationUUID);
socket.Connect();
调用方法
PrintImage(bitMap, socket);
创建的打印方法
public void PrintImage(Bitmap bitmap, BluetoothSocket _socket)
{
try
{
if (!_socket.IsConnected)
{
_socket.Connect();
}
MemoryStream stream = new MemoryStream();
//IMAGE
byte[] imageData = ImageToByte2(bitmap);
stream.Write(imageData, 0, imageData.Length);
stream.Write(SELECT_BIT_IMAGE_MODE, 0, SELECT_BIT_IMAGE_MODE.Length);
var bytes = stream.ToArray();
_socket.OutputStream.Write(bytes, 0, bytes.Length);
// Java.Lang.Thread.Sleep(2000);
//END IMAGE
Java.Lang.Thread.Sleep(2000);
}
catch (Exception ex)
{
throw new Exception("Unable to print. Please re-configure the printer and try again!");
}
}
public static byte[] ImageToByte2(Bitmap bitmap)
{
MemoryStream stream = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
byte[] bitmapData = stream.ToArray();
return bitmapData;
}
但得到的标志打印如下图。
【问题讨论】:
-
我也有同样的问题
-
你好 Rakesh 你解决了这个问题。我也面临同样的问题。
-
您好,我已经从名为 bar 投标的第三方应用程序生成了图像打印代码,我将此代码作为 .prn 文件保存在解决方案的资产文件夹中,然后我发送到打印机,它得到了工作。
-
你好 Rakesh 你能给我一些代码吗
-
嗨@Rakesh,你能帮忙吗?我有类似的问题,无法打印图像。请帮帮我。
标签: c# xamarin xamarin.forms xamarin.android bluetooth-printing