package com.ectrip.cyt.center; import android.content.Context; import android.os.Build; import android.os.Handler; import android.posapi.PosApi; import android.posapi.PrintQueue; import android.widget.Toast; import com.ectrip.cyt.config.MyApp; import zyapi.CommonApi; public class PosApiHandle { private PosApi mPosSDK = null; private PrintQueue mPrintQueue = null; CommonApi mCommonApi; private static PosApiHandle posApiHandle; public static PosApiHandle getInstance(){ if (posApiHandle==null){ posApiHandle = new PosApiHandle(); } return posApiHandle; } private int mComFd = -1; public PosApiHandle initIDread(){ mCommonApi = new CommonApi(); new Handler().postDelayed(new Runnable() { @Override public void run() { // TODO Auto-generated method stub mCommonApi.setGpioOut(53, 1); mCommonApi.setGpioOut(83, 1); int ret1 = mCommonApi.setGpioOut(68, 1); if (ret1 == 0) { Toast.makeText(MyApp.getInstance(), "设置成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MyApp.getInstance(), "设置失败", Toast.LENGTH_SHORT).show(); } } }, 1000); return posApiHandle; } public PosApiHandle initSdk(Context context){ // 获取PosApi实例 mPosSDK = PosApi.getInstance(context); mPrintQueue = new PrintQueue(context, mPosSDK); // 打印队列初始化 mPrintQueue.init(); mPrintQueue.close(); // 根据型号进行初始化mPosApi类 if (Build.MODEL.contains("LTE") || Build.DISPLAY.contains("3508") || Build.DISPLAY.contains("403") || Build.DISPLAY.contains("35S09")) { mPosSDK.initPosDev("ima35s09"); } else if (Build.MODEL.contains("5501")) { mPosSDK.initPosDev("ima35s12"); } else { mPosSDK.initPosDev(PosApi.PRODUCT_MODEL_IMA80M01); } //监听初始化回调结果 mPosSDK.setOnComEventListener(mCommEventListener); return posApiHandle; } public PrintQueue getmPrintQueue() { return mPrintQueue; } public PosApi getPosApi(){ return mPosSDK; } public void closeApi(){ // 关闭下层串口以及打印机 if (mPosSDK!=null) mPosSDK.closeDev(); if (mCommonApi != null) { mCommonApi.setGpioDir(83, 1); mCommonApi.setGpioOut(83, 0); //设置启用GPIO口为53,也就是使GPIO 53口生效 mCommonApi.setGpioDir(53, 1); //拉低53口电压,断开对身份证模块的供电 mCommonApi.setGpioOut(53, 0); // Toast.makeText(getApplicationContext(), "退出", 0).show(); // mCommonApi.setGpioDir(68,1); // mCommonApi.setGpioOut(68,0); //关闭mCommonApi类 mCommonApi.closeCom(mComFd); } } public void openScan(){ // 必须延迟一秒,否则将会出现第一次扫描和打印延迟的现象 new Handler().postDelayed(new Runnable() { @Override public void run() { // TODO Auto-generated method stub // 打开GPIO,给扫描头上电 openDevice(); } }, 1000); } // 打开串口以及GPIO口 private byte mGpioPower = 0x1E;// PB14 private int mCurSerialNo = 3; // usart3 private int mBaudrate = 4; // 9600 private void openDevice() { // open power mPosSDK.gpioControl(mGpioPower, 0, 1); mPosSDK.extendSerialInit(mCurSerialNo, mBaudrate, 1, 1, 1, 1); } /** * 初始化 */ PosApi.OnCommEventListener mCommEventListener = new PosApi.OnCommEventListener() { @Override public void onCommState(int cmdFlag, int state, byte[] resp, int respLen) { // TODO Auto-generated method stub switch (cmdFlag) { case PosApi.POS_INIT: if (state == PosApi.COMM_STATUS_SUCCESS) { Toast.makeText(MyApp.getInstance(), "设备初始化成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MyApp.getInstance(), "设备初始化失败", Toast.LENGTH_SHORT).show(); } break; } } }; }