OpcUtils.java 14.8 KB
package com.prws.common.opc;

import android.util.Log;

import com.prws.common.utils.LogUtil;
import com.prws.common.utils.SharedPreferencesUtil;


import java.util.ArrayList;
import java.util.List;

public class OpcUtils {

    private static String TAG = "OpcUtils";
    private static boolean isTTA = true;

    /**
     * 将寄存器读数转为颗粒物读数
     * @param data 粒子计数器寄存器读数
     * @return PmNumericalReading
     */
    public static PmNumericalReading getPmNumericalReadingUseCode(List<Integer> data){

        PmNumericalReading pmNumericalReading = new PmNumericalReading();
        int i = 1;
        try {
            i = Integer.valueOf((String) SharedPreferencesUtil.getData("swyias","1"));
        }catch (Exception e){}
        if (i != 1 && i != 2)
            isTTA = false;
        if (isTTA){
            pmNumericalReading.setZeroPointThree(countReading2(data.get(16),data.get(17),data.get(18),data.get(19)));
            pmNumericalReading.setZeroPointFive(countReading2(data.get(22),data.get(23),data.get(24),data.get(25)));
            pmNumericalReading.setOnePointZero(countReading2(data.get(28),data.get(29),data.get(30),data.get(31)));

            pmNumericalReading.setTwoPointFive(countReading2(data.get(34),data.get(35),data.get(36),data.get(37)));
            pmNumericalReading.setFivePointZero(countReading2(data.get(40),data.get(41),data.get(42),data.get(43)));




            Double wd = Integer.parseInt(Integer.toHexString(data.get(8))
                            +( Integer.toHexString(data.get(9)).length() == 2 ?Integer.toHexString(data.get(9)) : "0"+Integer.toHexString(data.get(9)))
                    ,16)* 0.1;

            Double sd = Integer.parseInt(Integer.toHexString(data.get(12))
                            +( Integer.toHexString(data.get(13)).length() == 2 ?Integer.toHexString(data.get(13)) : "0"+Integer.toHexString(data.get(13)))
                    ,16)* 0.1;

            pmNumericalReading.setWd(wd);
            pmNumericalReading.setSd(sd);

        }else {
            pmNumericalReading.setZeroPointThree(countReading(data.get(3),data.get(4),data.get(5),data.get(6)));
            pmNumericalReading.setZeroPointFive(countReading(data.get(7),data.get(8),data.get(9),data.get(10)));
            pmNumericalReading.setOnePointZero(countReading(data.get(11),data.get(12),data.get(13),data.get(14)));
            pmNumericalReading.setTwoPointFive(countReading(data.get(15),data.get(16),data.get(17),data.get(18)));
            pmNumericalReading.setFivePointZero(countReading(data.get(19),data.get(20),data.get(21),data.get(22)));
            pmNumericalReading.setTenPointZero(countReading(data.get(23),data.get(24),data.get(25),data.get(26)));
        }
        Log.d(TAG, "getPmNumericalReadingUseCode: "+pmNumericalReading.toString());


        return pmNumericalReading;
    }


    public static long countReading(int df1,int df2,int df3,int df4){
        float ratio = (float) SharedPreferencesUtil.getData("opcRatio",1f);
        return (long)  ((df1 * (long) Math.pow(256,3) + df2 * Math.pow(256,2) + df3 * 256 + df4) * ratio);
    }
    public static long countReading2(int df1,int df2,int df3,int df4){
        float ratio = (float) SharedPreferencesUtil.getData("topcRatio",35.3f);
        return (long)  ((df1 * (long) Math.pow(256,3) + df2 * Math.pow(256,2) + df3 * 256 + df4) * ratio);
    }

    /**
     * 返回一组数据中根据不同标准是否验证通过,只要有一个数据不通过则返回false
     * @param list
     * @param checkStandard
     * @return
     */
    public static boolean checkResult(List<PmReadingRecord> list,CheckStandard checkStandard){

        switch (checkStandard){
            case STANDARD_B_THOUSAND:
                for(int i=0;i<list.size();i++){
                    PmNumericalReading reading = list.get(i).getReading();
                    if(
//                            reading.getZeroPointOne((long) SharedPreferencesUtil.getData("zeroPointOneOffset",0l)) >= (long) SharedPreferencesUtil.getData("bzeroPointOneOffset",10200l) ||
                            reading.getZeroPointThree((long) SharedPreferencesUtil.getData("zeroPointThreeOffset",0l)) >= (long) SharedPreferencesUtil.getData("bzeroPointThreeOffset",10200l) ||
                            reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("bzeroPointFiveOffset",3520l)||
                            reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >=(long) SharedPreferencesUtil.getData("bfivePointZeroOffset",29l) ){
                        return false;

                    }
                }
                break;

            case STANDARD_THOUSAND:
                for(int i=0;i<list.size();i++){
                    PmNumericalReading reading = list.get(i).getReading();


                    if(reading.getZeroPointThree((long) SharedPreferencesUtil.getData("zeroPointThreeOffset",0l)) >= (long) SharedPreferencesUtil.getData("qzeroPointThreeOffset",102000l) ||
                            reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("qzeroPointFiveOffset",35200l)||
                            reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >= (long) SharedPreferencesUtil.getData("qfivePointZeroOffset",293l)){
                        return false;
                    }
                }
                break;
            case STANDARD_TEN_THOUSAND:
                for(int i=0;i<list.size();i++){

                    PmNumericalReading reading = list.get(i).getReading();
                    if( reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("wzeroPointFiveOffset",352000l)||
                            reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >= (long) SharedPreferencesUtil.getData("wfivePointZeroOffset",2930l)){
                        return false;
                    }
                }
//
                break;
            case STANDARD_TEN_TEN_THOUSAND:
                for(int i=0;i<list.size();i++){
                    PmNumericalReading reading = list.get(i).getReading();
                    if( reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("szeroPointFiveOffset",3520000l)||
                            reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >= (long) SharedPreferencesUtil.getData("sfivePointZeroOffset",29300l)){
                        return false;
                    }
                }
                break;
        }

        return true;
    }

    public static ArrayList<String> checkResult2(List<PmReadingRecord> list,CheckStandard checkStandard){

        ArrayList<String> alist = new ArrayList<>();
        switch (checkStandard){
            case STANDARD_B_THOUSAND:
                for(int i=0;i<list.size();i++){
                    PmNumericalReading reading = list.get(i).getReading();
                    if(
//                            reading.getZeroPointOne((long) SharedPreferencesUtil.getData("zeroPointOneOffset",0l)) >= (long) SharedPreferencesUtil.getData("bzeroPointOneOffset",10200l) ||
                            reading.getZeroPointThree((long) SharedPreferencesUtil.getData("zeroPointThreeOffset",0l)) >= (long) SharedPreferencesUtil.getData("bzeroPointThreeOffset",10200l) ||
                            reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("bzeroPointFiveOffset",3520l)||
                            reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >=(long) SharedPreferencesUtil.getData("bfivePointZeroOffset",29l) ){

                        alist.add(i+"");
                        LogUtil.e(TAG,"百级增加  "+alist.size());
                    }
                }
                break;

            case STANDARD_THOUSAND:
                for(int i=0;i<list.size();i++){
                    PmNumericalReading reading = list.get(i).getReading();
                    if(reading.getZeroPointThree((long) SharedPreferencesUtil.getData("zeroPointThreeOffset",0l)) >= (long) SharedPreferencesUtil.getData("qzeroPointThreeOffset",102000l) ||
                            reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("qzeroPointFiveOffset",35200l)||
                            reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >= (long) SharedPreferencesUtil.getData("qfivePointZeroOffset",293l)){
                        alist.add(i+"");
                        LogUtil.e(TAG,"千级增加  "+alist.size());
                    }
                }
                break;
            case STANDARD_TEN_THOUSAND:
                for(int i=0;i<list.size();i++){
                    PmNumericalReading reading = list.get(i).getReading();
                    if(
                            reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("wzeroPointFiveOffset",352000l)||
                            reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >= (long) SharedPreferencesUtil.getData("wfivePointZeroOffset",2930l)
                    ){

                        LogUtil.e(TAG," getZeroPointFive "+reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)));
                        LogUtil.e(TAG," 比较  "+(long) SharedPreferencesUtil.getData("wzeroPointFiveOffset",352000l));
                        LogUtil.e(TAG," getZeroPointFive "+reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)));
                        LogUtil.e(TAG," 比较  "+(long) SharedPreferencesUtil.getData("wfivePointZeroOffset",2930l));


                        alist.add(i+"");
                        LogUtil.e(TAG,"万级增加  "+alist.size());
                    }
                }
//
                break;
            case STANDARD_TEN_TEN_THOUSAND:
                for(int i=0;i<list.size();i++){
                    PmNumericalReading reading = list.get(i).getReading();
                    if( reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("szeroPointFiveOffset",3520000l)||
                            reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >= (long) SharedPreferencesUtil.getData("sfivePointZeroOffset",29300l)){
                        alist.add(i+"");
                        LogUtil.e(TAG,"十万级增加  "+alist.size());
                    }
                }
                break;
        }

        return alist;
    }

    public static boolean checkResult(PmReadingRecord readingRecord,CheckStandard checkStandard){

        switch (checkStandard){
            case STANDARD_B_THOUSAND:
                PmNumericalReading reading0 = readingRecord.getReading();
                    if(
//                            reading0.getZeroPointOne((long) SharedPreferencesUtil.getData("zeroPointOneOffset",0l)) >= (long) SharedPreferencesUtil.getData("bzeroPointOneOffset",10200l) ||
                            reading0.getZeroPointThree((long) SharedPreferencesUtil.getData("zeroPointThreeOffset",0l)) >= (long) SharedPreferencesUtil.getData("bzeroPointThreeOffset",10200l) ||
                            reading0.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("bzeroPointFiveOffset",3520l)||
                            reading0.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >=(long) SharedPreferencesUtil.getData("bfivePointZeroOffset",29l) ){
                        return false;
                    }

                break;
            case STANDARD_THOUSAND:
                PmNumericalReading reading = readingRecord.getReading();
                if(reading.getZeroPointThree((long) SharedPreferencesUtil.getData("zeroPointThreeOffset",0l)) >= (long) SharedPreferencesUtil.getData("qzeroPointThreeOffset",102000l) ||
                        reading.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("qzeroPointFiveOffset",35200l)||
                        reading.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >= (long) SharedPreferencesUtil.getData("qfivePointZeroOffset",293l)){
                    return false;
                }
                break;
            case STANDARD_TEN_THOUSAND:
                PmNumericalReading reading1 = readingRecord.getReading();
                if( reading1.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("wzeroPointFiveOffset",352000l)||
                        reading1.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >= (long) SharedPreferencesUtil.getData("wfivePointZeroOffset",2930l)){
                    LogUtil.e(TAG," getZeroPointFive "+reading1.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)));
                    LogUtil.e(TAG," 比较  "+(long) SharedPreferencesUtil.getData("wzeroPointFiveOffset",352000l));
                    LogUtil.e(TAG," getZeroPointFive "+reading1.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)));
                    LogUtil.e(TAG," 比较  "+(long) SharedPreferencesUtil.getData("wfivePointZeroOffset",2930l));

                    LogUtil.e(TAG,"返回 false");
                    return false;
                }
                break;
            case STANDARD_TEN_TEN_THOUSAND:
                PmNumericalReading reading2 = readingRecord.getReading();
                if( reading2.getZeroPointFive((long) SharedPreferencesUtil.getData("zeroPointFiveOffset",0l)) >= (long) SharedPreferencesUtil.getData("szeroPointFiveOffset",3520000l)||
                        reading2.getFivePointZero((long) SharedPreferencesUtil.getData("fivePointZeroOffset",0l)) >= (long) SharedPreferencesUtil.getData("sfivePointZeroOffset",29300l)){
                    return false;
                }
                break;
        }
        LogUtil.e(TAG,"返回 true");
        return true;
    }



    public enum CheckStandard{

        STANDARD_B_THOUSAND,
        /**
         * 千级
         */
        STANDARD_THOUSAND,
        /**
         * 千级
         */
        STANDARD_TEN_TEN_THOUSAND,
        /**
         * 万级
         */
        STANDARD_TEN_THOUSAND;


    }



}