我正在尝试使用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);
但是如下图所示打印徽标。
答案 0 :(得分:1)
可以使用几种不同的打印机语言设置Intermec PB51。 IPL,指纹,直接协议,ZSim,DSim,CSim和ESC / P。因此,首先您必须知道要使用哪种打印机语言。 {0x1B,0x2A,33,(byte)255,0}是ESC / P的命令,因此打印机必须处于ESC / P模式。
好像您正在将PNG图像数据发送到打印机。我只在ESC / P模式下使用了Intermec PB51,在ESC / P模式下,图像必须转换为1位图像字节数组(每个打印机“像素”一位)。