Bluetooth термопринтер распечатать символ GBP £ - PullRequest
0 голосов
/ 02 мая 2019

Как правильно напечатать символ фунта в термопринтере?

Я использую следующий код для написания принтера:

String pound = "\u00a3";
opstream = BluetoothPrinter.btSocket.getOutputStream();

//Tried
outputStream.write(pound.getBytes(StandardCharsets.UTF_8));

//Tried
outputStream.write(pound.getBytes(Charset.forName("UTF-8")));

Я пробовал, как и £ . Какая альтернатива этому в термопринтере?

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Это действительно 00 A3 например.в кодовой странице 1252 или 437.

Для переключения это ESC t n, где n равно 16 например.для кодовой страницы 1252.

Выберите таблицу кодов символов.

  ASCII  ESC   t   n
   Hex.  1B   74  0F
Decimal  27  116  16

Это должно закодировать ее в соответствующий формат:

String gbp = "£";
byte[] b = gbp.getBytes(Charset.forName("Windows-1252"));

Вывод b должен в каждом случае быть 00 A3 и , чтобы принтер знал, какая это кодовая страница .Если принтер не будет переключен на кодовую страницу с £, он не будет печатать £, независимо от того, каким значением он представлен (кроме как в виде графики).См. Технические характеристики команды режима ESC / POS , стр. 4-47.В Юникоде это также U + 00A3 (что, скорее всего, принтер не будет поддерживать).

Вся последовательность будет: 1B 74 0F 00 A3

и довернитесь к кодовой странице по умолчанию: 1B 74 00


Обратитесь к руководству по эксплуатации вашего принтера , какие кодовые страницы он даже поддерживает (также 0F может отличаться).

0 голосов
/ 02 мая 2019

Пожалуйста, попробуйте это:

String pound = "£ 20.00";
outputStream.write(BitmapAsEuro(pound));

public byte[] BitmapAsEuro(String poundValue){
        Bitmap image = Bitmap.createBitmap(600, 200, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(image);
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setTextSize(26);
        paint.setColor(Color.BLACK);
        paint.setTextSize(26);
        paint.setFlags(Paint.EMBEDDED_BITMAP_TEXT_FLAG);

        canvas.drawText(poundValue,0,60,paint);

        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteArray = stream.toByteArray();
        image.recycle();
        return byteArray;
    }
...