PosApiHandle.java 4.44 KB
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;
            }
        }
    };


}