从 Android 应用打印到热敏打印机 (DPP 450)
Print to thermal printer (DPP 450) from Android app
我正在开发一个 Android Java 应用程序,它使用热敏打印机打印送货单。
实际上我有两个打印机型号可以通过蓝牙打印正常(使用 ESC/POS)但是当我尝试使用 DPP-450(支持 ESC/POS)时,它连接正常蓝牙,但不打印任何东西。
我的打印方式是:
if (mbtSocket!=null && mbtSocket.isConnected()) {
inReader = mbtSocket.getInputStream();
outReader = mbtSocket.getOutputStream();
int s = inReader.available();
outReader.write(setInitp);
String sendingmessage = "******************************" + "\n";
byte[] send = sendingmessage.getBytes();
outReader.write(send);
sendingmessage = "Esto es una prueba de impresión" + "\n";
send = sendingmessage.getBytes();
outReader.write(send);
outReader.flush();
s = inReader.available();
inReader.skip(0);
}
这段代码适用于我的另外两台打印机(Citizen CMP-40 和 Star 打印机 BTT),但不适用于 DPP-450。
有人能帮帮我吗?
由于该代码适用于其他类似打印机,因此您提供的代码可能不是问题所在。
您必须系统地解决此问题:
- 打印机可以在另一台计算机上工作吗?也许它只是坏了。
- 您可以使用桌面计算机上的简单程序连接到它吗?这排除了任何 Android 特定问题。
尝试这些步骤,然后从那里继续...
我找到问题了。
这台打印机似乎使用通道来确定它,(没有其他尝试解决我的问题),后来我将代码调整到我的应用程序,我 post 我解决它的方式:
inReader = mbtSocket.getInputStream();
outReader = mbtSocket.getOutputStream();
ProtocolAdapter mProtocolAdapter = new ProtocolAdapter(inReader, outReader);
mPrinterChannel = mProtocolAdapter.getChannel(ProtocolAdapter.CHANNEL_PRINTER);
Printer printer = new Printer(mPrinterChannel.getInputStream(), mPrinterChannel.getOutputStream());
try{
textBuffer.append("{reset}{center}{s}Thank You!{br}");
printer.reset();
printer.printTaggedText(textBuffer.toString());
printer.feedPaper(110);
printer.flush();
} catch(Exception e){
e.printStackTrace();
Log.e("Error: " + e, "Error");
}
希望这对其他人有所帮助! :)
我正在开发一个 Android Java 应用程序,它使用热敏打印机打印送货单。
实际上我有两个打印机型号可以通过蓝牙打印正常(使用 ESC/POS)但是当我尝试使用 DPP-450(支持 ESC/POS)时,它连接正常蓝牙,但不打印任何东西。
我的打印方式是:
if (mbtSocket!=null && mbtSocket.isConnected()) {
inReader = mbtSocket.getInputStream();
outReader = mbtSocket.getOutputStream();
int s = inReader.available();
outReader.write(setInitp);
String sendingmessage = "******************************" + "\n";
byte[] send = sendingmessage.getBytes();
outReader.write(send);
sendingmessage = "Esto es una prueba de impresión" + "\n";
send = sendingmessage.getBytes();
outReader.write(send);
outReader.flush();
s = inReader.available();
inReader.skip(0);
}
这段代码适用于我的另外两台打印机(Citizen CMP-40 和 Star 打印机 BTT),但不适用于 DPP-450。
有人能帮帮我吗?
由于该代码适用于其他类似打印机,因此您提供的代码可能不是问题所在。
您必须系统地解决此问题:
- 打印机可以在另一台计算机上工作吗?也许它只是坏了。
- 您可以使用桌面计算机上的简单程序连接到它吗?这排除了任何 Android 特定问题。
尝试这些步骤,然后从那里继续...
我找到问题了。
这台打印机似乎使用通道来确定它,(没有其他尝试解决我的问题),后来我将代码调整到我的应用程序,我 post 我解决它的方式:
inReader = mbtSocket.getInputStream();
outReader = mbtSocket.getOutputStream();
ProtocolAdapter mProtocolAdapter = new ProtocolAdapter(inReader, outReader);
mPrinterChannel = mProtocolAdapter.getChannel(ProtocolAdapter.CHANNEL_PRINTER);
Printer printer = new Printer(mPrinterChannel.getInputStream(), mPrinterChannel.getOutputStream());
try{
textBuffer.append("{reset}{center}{s}Thank You!{br}");
printer.reset();
printer.printTaggedText(textBuffer.toString());
printer.feedPaper(110);
printer.flush();
} catch(Exception e){
e.printStackTrace();
Log.e("Error: " + e, "Error");
}
希望这对其他人有所帮助! :)