Android接入热敏打印机,Android 关于佳博和汉印蓝牙热敏打印机开发
接上篇文章Android之BLE(低功耗)藍牙開發,本篇文章針對上篇博文中提出的兩款打印機的開發流程進行記錄。
首先不管時佳博打印機還是漢印打印機,都是先對他們各自的lib進行導入,如圖:
導入lib之后,
一定要記得進行sync project。一切準備就緒后接著就是根據他們各自提供的文檔說明進行開發。本文不做詳細說明,下面先貼漢印的打印關鍵代碼(他們家的比較簡單):
public void printCPCL(View view) {
final int maxPrintNum = 1;
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < maxPrintNum; i++) {
try {
PrinterHelper.PortClose();
Log.e(TAG, "printCPCL: =======>436");
openBT = PrinterHelper.PortOpenBT("00:15:83:FD:6F:E0");
Log.e(TAG, "printCPCL: =======>440");
if (openBT == 0) {
Log.e(TAG, "printCPCL: =======>443");
if (PrinterHelper.IsOpened()) {
Log.e(TAG, "run: " + PrinterHelper.IsOpened());
//連接成功
PrinterHelper.Align(PrinterHelper.CENTER);
PrinterHelper.SetBold("1");
PrinterHelper.SetMag("2", "2");
PrinterHelper.Text(PrinterHelper.TEXT, "8", "0", "10", "30", "啦啦啦")
PrinterHelper.SetMag("1", "1");
PrinterHelper.SetBold("0");
PrinterHelper.InverseLine("0", "0", "700", "0", "100");
PrinterHelper.Text(PrinterHelper.TEXT, "8", "0", "0", "130", "啦啦啦");
PrinterHelper.Text(PrinterHelper.TEXT, "3", "0", "0", "160", "啦啦啦");
PrinterHelper.Text(PrinterHelper.TEXT, "3", "0", "0", "190", "啦啦啦");
PrinterHelper.PrintQR(PrinterHelper.BARCODE, "10", "240", "2", "16", "eyJxcl90eXBlIjoic3RhZmYiLCJvc19pZCI6Nn0=");
PrinterHelper.Form();
PrinterHelper.Print();
}
} catch (Exception e) {
Log.e(TAG, "printCPCL: =======>553" + e.getMessage());
e.printStackTrace();
}
}
}
}).start();
}
相關的方法在廠家集成文檔中都有詳細的描述,我就不在這里做過多的贅述了。效果如下圖:
佳博的話也一樣,下面給出打印代碼:
public void printSend(View view) {
threadPool = ThreadPool.getInstantiation();
threadPool.addTask(new Runnable() {
@Override
public void run() {
if (DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id] == null ||
!DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id].getConnState()) {
mHandler.obtainMessage(CONN_PRINTER).sendToTarget();
return;
}
if (DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id].getCurrentPrinterCommand() == PrinterCommand.TSC) {
sendLabel();
} else {
mHandler.obtainMessage(PRINTER_COMMAND_ERROR).sendToTarget();
}
}
});
}
void sendLabel() {
LabelCommand tsc = new LabelCommand();
/* 設置標簽尺寸,按照實際尺寸設置 */
tsc.addSize(40, 30);
/* 設置標簽間隙,按照實際尺寸設置,如果為無間隙紙則設置為0 */
tsc.addGap(2);
/* 設置打印方向 */
tsc.addDirection(LabelCommand.DIRECTION.FORWARD, LabelCommand.MIRROR.NORMAL);
/* 設置原點坐標 */
tsc.addReference(0, 0);
/* 撕紙模式開啟 */
tsc.addTear(EscCommand.ENABLE.ON);
/* 清除打印緩沖區 */
tsc.addCls();
// 繪制簡體中文
tsc.addText(10, 20, LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE, LabelCommand.ROTATION.ROTATION_0, LabelCommand.FONTMUL.MUL_1, LabelCommand.FONTMUL.MUL_1,
"標準科室名稱:藥劑科");
tsc.addText(10, 50, LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE, LabelCommand.ROTATION.ROTATION_0, LabelCommand.FONTMUL.MUL_1, LabelCommand.FONTMUL.MUL_1,
"標準科室代碼:wsd8965325");
tsc.addText(10, 80, LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE, LabelCommand.ROTATION.ROTATION_0, LabelCommand.FONTMUL.MUL_1, LabelCommand.FONTMUL.MUL_1,
"實際科室名稱:藥劑科");
tsc.addText(10, 110, LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE, LabelCommand.ROTATION.ROTATION_0, LabelCommand.FONTMUL.MUL_1, LabelCommand.FONTMUL.MUL_1,
"重量" + tv_weight.getText().toString().trim());
tsc.addQRCode(150, 150, LabelCommand.EEC.LEVEL_L, 4, LabelCommand.ROTATION.ROTATION_0, "12345ss67");
/* 打印標簽 */
tsc.addPrint(1, 1);
/* 打印標簽后 蜂鳴器響 */
tsc.addSound(1, 100);
tsc.addCashdrwer(LabelCommand.FOOT.F5, 255, 255);
Vectordatas = tsc.getCommand();
/* 發送數據 */
if (DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id] == null) {
Log.d(TAG, "sendLabel: 打印機為空");
return;
}
DeviceConnFactoryManager.getDeviceConnFactoryManagers()[id].sendDataImmediately(datas);
}
效果圖想象一下超時小票的那種就可以了(,,???,,)或者如上圖(漢印)效果
完整的demo有需要的話可以留下你的郵箱喲~
總結
以上是生活随笔為你收集整理的Android接入热敏打印机,Android 关于佳博和汉印蓝牙热敏打印机开发的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: android 第三方圆弧进度条,and
 - 下一篇: 电脑横屏图片(电脑横屏图片做成竖屏壁纸)