Как печатать с термопринтера в Android?
Я работаю на приложение для Android устройства, которое будет иметь встроенный принтер. Я должен взаимодействовать с этим принтером и использовать его для печати деталей при получении, а затем автоматически вырезать эту квитанцию. Я видел некоторые команды ESC в нем, но я не знаю, как выполнять эти команды ESC.
у меня есть три основные проблемы, касающиеся принтера устройства Casio:
1.Я использовал код печати для Build in принтер, но после печати резак не активируется
BuildinEx840 ex840 = new BuildinEx840();
int response = ex840.open();
System.out.println("ex840 open:" + response);
byte[] set = {
'N', 'A', 'R', 'E', 'S', 'H', 'S', 'H', 'A', 'R', 'M', 'A', (byte) 0x0d, (byte) 0x0a
};
try {
ex840.write(set);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
response = ex840.getEndStatus();
System.out.println("getEndStatus:" + response);
response = ex840.initCutter();
ex840.close();
System.out.println("initCutter:" + response);
} catch (Exception e) {
e.printStackTrace();
}
2. Я не знаю, как отправлять команды ESC на принтер в android
есть ряд команд, как показано ниже
ESC FF DataPrint,
[code] <1B>H<OC>H,
[Function] Print all the data in the print area collectively.
Как мы можем выполнить эти команды ESC в android путем программирования ??
3.Я не знаю, как распечатать квитанцию в требуемом формате
есть некоторые команды ESC доступны для предоставления поля слева и справа и некоторые другие команды. Так как я могу распечатать данные, в каком формате и можно изменить размер текста, а также некоторые другие параметры текста для печати.
любая помощь приветствуется.
1 ответов
после работы в течение последних 7 дней я получил правильный способ получить отпечаток, а затем вырезать эту квитанцию резаком. Команды ESC очень важны для получения печати и других задач, связанных с принтером. Мы должны передать эти ESC CMD в виде массива байтов на линейный принтер.
есть ряд команд, как показано ниже
ESC FF DataPrint,
[code] <1B>H<OC>H,
[Function] Print all the data in the print area collectively.
поэтому просто создайте массив байтов этой команды и передайте его на принтер.
e.g. byte[] print = {0x1b,0x0c};
Теперь передайте его в принтер. Должен быть какой-то метод, например getCmd () или writeCmd() и т. д. в зависимости от принтера.
как мы можем выполнить эти команды ESC в android путем программирования ?? Ниже приведен код для этого
BuildinEx840 lpd=new BuildinEx840();
lpd.setMulticharMode(LinePrinterDeviceBase.CHARACTERSET_USA);
//initialise Cutter
lpd.initCutter();
LinePrinter lp=new LinePrinter();
lp.open(lpd);
lpd.open();
try{
lpd.init();
}catch(IOException e){
e.printStackTrace();
}
for(int i=0; i<5;i++){
lp.printNormal("Testing the Line Printer");
}
int totalLinefeed=listofItemList.size();
//ESC CMD for line feeds
byte[] lfs=new byte[]{0x1B,'d', 5};
sendtoExprinter(lpd,lfs);
//ESC CMD for paper cut
lfs=new byte[]{0x1B,'i'};
sendtoExprinter(lpd, lfs);
private void sendtoExprinter(BuildinEx840 dev, byte[] instr) {
try{
dev.write(instr);
}catch(IOException e){
e.printStackTrace();
}
}
обновление: печать изображения через термопринтер
в некоторых принтерах вы можете определить изображение в энергонезависимой памяти принтера, а затем распечатать изображение оттуда через ESC cmd 1C 70 01 30. В некоторых других принтерах можно указать прямой путь изображения при печати изображения через термопринтер.
в любом линейном принтере мы должны передать ESC CMD этим printerObj.написать (команда); путь. Я хочу поблагодарить SO community и особую благодарность TheBlastOne, который направил меня на правильный путь.
если кто-то имеет любую проблему в интегрировать термальные принтеры, то чувствуйте свободным спросить.