Xamarin在蓝牙打印机中打印图像

时间:2018-06-05 11:06:16

标签: c# xamarin xamarin.forms xamarin.android bluetooth-printing

我正在尝试使用Xamarin原生android从蓝牙打印机(INTERMEC PB51)进行打印。

我已根据以下链接编写了代码。

How can I print an image on a Bluetooth printer in Android?

我的代码如下。

IllegalArgumentException

如下所示制作位图。

private static byte[] SELECT_BIT_IMAGE_MODE = { 0x1B, 0x2A, 33, (byte)255, 0 };

创建Blutooth Socket。

 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);

但是如下图所示打印徽标。

enter image description here

1 个答案:

答案 0 :(得分:1)

  1. 可以使用几种不同的打印机语言设置Intermec PB51。 IPL,指纹,直接协议,ZSim,DSim,CSim和ESC / P。因此,首先您必须知道要使用哪种打印机语言。 {0x1B,0x2A,33,(byte)255,0}是ESC / P的命令,因此打印机必须处于ESC / P模式。

  2. 好像您正在将PNG图像数据发送到打印机。我只在ESC / P模式下使用了Intermec PB51,在ESC / P模式下,图像必须转换为1位图像字节数组(每个打印机“像素”一位)。

相关问题