Так что я был писать Android приложение для принтера Bluetooth на некоторое время, и я понял, что это на самом деле ESC/POS стандарт: http://nicholas.piasecki.name/blog/wp-content/uploads/2009/12/ESC-POS-Command-Guide.pdfAndroid POS ESC принтера/POS
Теперь документ я использую для мой принтер ограниченное подмножество этих команд и их можно найти здесь: https://dl.dropboxusercontent.com/u/88265006/%E4%BA%A7%E5%93%81/Printer «s% 20user% 20manual/SP-MP-300-технический% 20Manual.pdf
private void initPrinter() {
byte[] init = new byte[2];
init[0] = 0x1B;
init[1] = 0x40;
mService.write(init);
}
private void printText(String message){
byte[] send;
try{
send = message.getBytes("UTF8");
}
catch(UnsupportedEncodingException e){
send = "Error".getBytes();
}
initPrinter();
mService.write(send);
}
Я могу подключиться к принтеру, инициализируется он с командой «ESC @», и я могу писать с помощью приведенных выше команд, но я не могу получить никаких «визуальных» эффектов с точки зрения ЛЮБОГО вида штрих-кода. Это моя попытка для кода 1D EAN13 (0000000000000):
byte[] height = new byte[3];
height[0] = 0x1D;
height[1] = 0x68;
height[2] = (byte)30;
//height[3] = 0;
byte[] width = new byte[3];
width[0] = 0x1D;
width[1] = 0x77;
width[2] = (byte)3;
byte[] textPos = new byte[3];
textPos[0] = 0x1D;
textPos[1] = 0x48;
textPos[2] = (byte)2;
byte[] level = new byte[3];
level[0] = 0x1D;
level[1] = 0x51;
level[2] = (byte)32;
byte[] code = new byte[18];
code[0] = 0x1D;
code[1] = 0x6B;
code[2] = 0x02;
code[3] = 0x0D;
code[4] = 0x30;//1
code[5] = 0x30;//2
code[6] = 0x30;//3
code[7] = 0x30;//4
code[8] = 0x30;//5
code[9] = 0x30;//6
code[10] = 0x30;//7
code[11] = 0x30;//8
code[12] = 0x30;//9
code[13] = 0x30;//10
code[14] = 0x30;//11
code[15] = 0x30;//12
code[16] = 0x30;//13
code[17] = 0x00;//end
mService.write(height);
mService.write(width);
mService.write(textPos);
mService.write(level);
mService.write(code);
Где mService фактически записывает данные. Лучший результат, который я получаю, - 0█0█0█0█0█0█0█0█0█0█0█0█0█0█ - после отправки данных много раз подряд.
Если я удаляю конечный конечный байт после нескольких отправлений, я получаю 14 0, и я также попытался добавить конец 0 в массивы height, width, textPosition и level, без каких-либо аффектов.
Я также посмотрел в следующих местах: http://www.manualslib.com/manual/689542/Axiohm-A795.html?page=91
http://pyramidacceptors.com/phoenix-printer/esc-pos-command-set/
http://www.vbforums.com/showthread.php?754493-RESOLVED-Printing-Barcode-with-ESC-POS-on-Epson-Printers
http://www.manualslib.com/manual/753647/Axiohm-A630.html?page=51
https://www.sparkfun.com/datasheets/Components/General/Driver%20board.pdf
Where can I find a "ESC/POS" Epson Barcode Test Program?
Вы уверены, что правили правильно. Java имеет странный способ использования hex-байта (двоичное преобразование). Возможно, это и приводит к вашей проблеме. – SeahawksRdaBest
Я закончил создание констант для удобства чтения, например. частный статический байт GS = 0x1d; Но представление байтов Java не было проблемой, но спасибо за попытку помочь :) –