Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.auexpress.scan.controller;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.posapi.PosApi;
- import com.auexpress.scan.utils.ScanCallback;
- import com.auexpress.scan.model.ScanResult;
- /**
- * Created by auexpress on 2017-11-17.
- */
- public class DeviceIOController extends BroadcastReceiver{
- //statics
- private static byte mGpioPower = 0x1E;// PB14
- private static byte mGpioTrig = 0x29;// PC9
- private static int mCurSerialNo = 3; // usart3
- private static int mBaudrate = 4; // 9600
- //
- private static DeviceIOController controller;
- public static DeviceIOController getInstance(){
- if(controller == null){
- controller = new DeviceIOController();
- }
- return controller;
- }
- //current callback activity
- private ScanCallback callback;
- private PosApi api;
- public void init(Context applicationContext){
- api = PosApi.getInstance(applicationContext);
- api.initPosDev(PosApi.PRODUCT_MODEL_IMA80M01);
- IntentFilter mFilter = new IntentFilter();
- mFilter.addAction(PosApi.ACTION_POS_COMM_STATUS);
- applicationContext.registerReceiver(this,mFilter);
- }
- public void register(ScanCallback callback){
- this.callback = callback;
- }
- public void unregister(ScanCallback callback){
- if(this.callback == callback){
- this.callback = null;
- }
- }
- void onScanReceived(String info){
- callback.scanCallback(new ScanResult(info));
- }
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- System.err.println("received! " + action );
- if(action.equalsIgnoreCase(PosApi.ACTION_POS_COMM_STATUS)){
- int cmdFlag = intent.getIntExtra(PosApi.KEY_CMD_FLAG, -1);
- //int status = intent.getIntExtra(PosApi.KEY_CMD_STATUS , -1);
- int bufferLen = intent.getIntExtra(PosApi.KEY_CMD_DATA_LENGTH, 0);
- byte [] buffer = intent.getByteArrayExtra(PosApi.KEY_CMD_DATA_BUFFER);
- switch(cmdFlag){
- case PosApi.POS_EXPAND_SERIAL3:
- if(buffer == null ) return;
- if(bufferLen < 12 ) return; //ignore noise
- StringBuffer sb = new StringBuffer();
- for(int i = 0;i<buffer.length;i++){
- if(buffer[i]==0x0D){
- sb.append("\n");
- }else{
- sb.append((char)buffer[i]);
- }
- }
- onScanReceived(sb.toString());
- break;
- }
- }
- }
- private void openDevice() {
- // open power
- api.gpioControl(mGpioPower, 0, 1);
- api.extendSerialInit(mCurSerialNo, mBaudrate, 1, 1, 1, 1);
- }
- //call by scan button
- public void scan() {
- openDevice();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement