| | |
| | | package com.hdl.sdk.ttl.HDLAppliances.HDLAirCondition.Parser; |
| | | |
| | | |
| | | import android.util.Log; |
| | | |
| | | import com.hdl.sdk.ttl.Config.Configuration; |
| | | import com.hdl.sdk.ttl.HDLAppliances.Config.HDLApConfig; |
| | | import com.hdl.sdk.ttl.HDLDeviceManger.Bean.AppliancesInfo; |
| | |
| | | byte[] airBytes = null; |
| | | outter: |
| | | for (int i = 0; i < HDLDeviceManager.devicesDataList.size(); i++) { |
| | | if (appliancesInfo.getDeviceSubnetID() == HDLDeviceManager.devicesDataList.get(i).getSourceSubnetID() |
| | | && appliancesInfo.getDeviceDeviceID() == HDLDeviceManager.devicesDataList.get(i).getSourceDeviceID()) { |
| | | if (appliancesInfo.getDeviceSubnetID() == HDLDeviceManager.devicesDataList.get(i).getDeviceSubnetID() |
| | | && appliancesInfo.getDeviceDeviceID() == HDLDeviceManager.devicesDataList.get(i).getDeviceDeviceID()) { |
| | | for (int j = 0; j < HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().size(); j++) { |
| | | if (HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getBigType() == Configuration.AIR_BIG_TYPE |
| | | && HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getDeviceType() != HDLApConfig.TYPE_AC_PANEL |
| | | && appliancesInfo.getChannelNum() == HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getChannelNum()) { |
| | | newInfo = HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j); |
| | | if (newInfo.getArrCurState() == null) { |
| | | newInfo.setArrCurState(new byte[13]); |
| | | newInfo.setArrCurState(new byte[19]); |
| | | } |
| | | airBytes = newInfo.getArrCurState(); |
| | | break outter; |
| | |
| | | } |
| | | } |
| | | } |
| | | byte[] addBytes = new byte[13]; |
| | | if (airBytes != null && airBytes.length >= 13) { |
| | | byte[] addBytes = new byte[19]; |
| | | if (airBytes != null && airBytes.length >= 19) { |
| | | System.arraycopy(airBytes, 0, addBytes, 0, airBytes.length); |
| | | addBytes[0] = (byte) newInfo.getChannelNum(); |
| | | |
| | |
| | | addBytes[10] = (byte) state; |
| | | break; |
| | | } |
| | | }else { |
| | | } else { |
| | | addBytes[0] = (byte) newInfo.getChannelNum(); |
| | | addBytes[1] = 0; |
| | | addBytes[2] = (byte)28; |
| | | addBytes[3] = (byte)28; |
| | | addBytes[4] = (byte)28; |
| | | addBytes[5] = (byte)28; |
| | | addBytes[6] = (byte)28; |
| | | addBytes[2] = (byte) 28; |
| | | addBytes[3] = (byte) 28; |
| | | addBytes[4] = (byte) 28; |
| | | addBytes[5] = (byte) 28; |
| | | addBytes[6] = (byte) 28; |
| | | addBytes[7] = 0; |
| | | addBytes[8] = 1; |
| | | addBytes[9] = 0; |
| | | addBytes[10] = 0; |
| | | addBytes[11] = (byte)28; |
| | | addBytes[11] = (byte) 28; |
| | | addBytes[12] = 0; |
| | | switch (type) { |
| | | case airSwich://设置开关状态 |
| | |
| | | |
| | | } |
| | | |
| | | // public static byte[] getRcuAirAddByte(AppliancesInfo I,int type, int arg2){ |
| | | // byte[] addBytes = new byte[9]; |
| | | // addBytes[4] = 1; |
| | | // byte[] curAirInfo = I.getArrCurState(); |
| | | // switch (I.getChannelNum()){ |
| | | // case 1: |
| | | // curAirInfo = HDLDeviceManager.air1Info; |
| | | // break; |
| | | // case 2: |
| | | // curAirInfo = HDLDeviceManager.air2Info; |
| | | // break; |
| | | // case 3: |
| | | // curAirInfo = HDLDeviceManager.air3Info; |
| | | // break; |
| | | // case 4: |
| | | // curAirInfo = HDLDeviceManager.air4Info; |
| | | // break; |
| | | // } |
| | | // |
| | | // byte airSwitch = curAirInfo[0]; |
| | | // byte aircurMode = curAirInfo[1]; |
| | | // byte airTem = curAirInfo[2]; |
| | | // byte aircurSpeed = curAirInfo[3]; |
| | | // byte aircurTem = curAirInfo[4]; |
| | | // byte airBAIFENG = curAirInfo[5]; |
| | | // |
| | | // addBytes[0] = (byte) I.getChannelNum(); |
| | | // addBytes[1] = airSwitch; |
| | | // switch (aircurMode){ |
| | | // case 0: |
| | | // addBytes[2] = airTem; |
| | | // break; |
| | | // case 1: |
| | | // addBytes[5] = airTem; |
| | | // break; |
| | | // case 2: |
| | | // break; |
| | | // case 3: |
| | | // addBytes[6] = airTem; |
| | | // break; |
| | | // } |
| | | // addBytes[3] = (byte) ((aircurMode << 4) | aircurSpeed); |
| | | // addBytes[4] = 1; |
| | | // addBytes[8] = airBAIFENG; |
| | | // switch (type){ |
| | | // case airSwich: |
| | | // if(arg2 == airOff){ |
| | | // addBytes[1] = 0; |
| | | // }else if(arg2 == airOn){ |
| | | // addBytes[1] = 1; |
| | | // } |
| | | // break; |
| | | // case refTem: |
| | | // addBytes[2] = (byte) arg2; |
| | | // addBytes[5] = (byte) arg2; |
| | | // addBytes[6] = (byte) arg2; |
| | | // addBytes[7] = (byte) arg2; |
| | | // break; |
| | | // case airSpeed : |
| | | // int modifyLow; |
| | | // int height = ((addBytes[3] & 0xf0) >> 4);//获取高4位 |
| | | // switch (arg2){ |
| | | // case airSpeedAuto: |
| | | // modifyLow = 0; |
| | | // addBytes[3] = (byte)((height<<4)|modifyLow); |
| | | // break; |
| | | // case airSpeedHigh: |
| | | // modifyLow = 1; |
| | | // addBytes[3] = (byte)((height<<4)|modifyLow); |
| | | // break; |
| | | // case airSpeedMid: |
| | | // modifyLow = 2; |
| | | // addBytes[3] = (byte)((height<<4)|modifyLow); |
| | | // break; |
| | | // case airSpeedLow: |
| | | // modifyLow = 3; |
| | | // addBytes[3] = (byte)((height<<4)|modifyLow); |
| | | // break; |
| | | // default: |
| | | // addBytes = new byte[]{fail}; |
| | | // break; |
| | | // } |
| | | // break; |
| | | // case airMode: |
| | | // int modify; |
| | | // int low = (addBytes[3] & 0x0f);//获取低4位 |
| | | // switch (arg2){ |
| | | // case airModeRefTem: |
| | | // |
| | | // modify = 0; |
| | | // addBytes[3] = (byte)((modify<<4)|low); |
| | | // break; |
| | | // case airModeHeatTem: |
| | | // modify = 1; |
| | | // addBytes[3] = (byte)((modify<<4)|low); |
| | | // break; |
| | | // case airModeVen: |
| | | // modify = 2; |
| | | // addBytes[3] = (byte)((modify<<4)|low); |
| | | // break; |
| | | // case airModeAuto: |
| | | // modify = 3; |
| | | // addBytes[3] = (byte)((modify<<4)|low); |
| | | // break; |
| | | // case airModeDehum: |
| | | // modify = 4; |
| | | // addBytes[3] = (byte)((modify<<4)|low); |
| | | // break; |
| | | // default: |
| | | // addBytes = new byte[]{fail}; |
| | | // break; |
| | | // } |
| | | // break; |
| | | // case heatTem: |
| | | // addBytes[2] = (byte) arg2; |
| | | // addBytes[5] = (byte) arg2; |
| | | // addBytes[6] = (byte) arg2; |
| | | // addBytes[7] = (byte) arg2; |
| | | // break; |
| | | // case autoTem: |
| | | // addBytes[2] = (byte) arg2; |
| | | // addBytes[5] = (byte) arg2; |
| | | // addBytes[6] = (byte) arg2; |
| | | // addBytes[7] = (byte) arg2; |
| | | // break; |
| | | // case dehumTem: |
| | | // addBytes[2] = (byte) arg2; |
| | | // addBytes[5] = (byte) arg2; |
| | | // addBytes[6] = (byte) arg2; |
| | | // addBytes[7] = (byte) arg2; |
| | | // break; |
| | | // case upTem: |
| | | //// int height2 = ((addBytes[3] & 0xf0) >> 4);//获取高4位 |
| | | //// switch (height2){ |
| | | //// case 0: |
| | | //// addBytes[2] = (byte) (arg2 + (airTem & 0xFF)); |
| | | //// break; |
| | | //// case 1: |
| | | //// addBytes[5] = (byte) (arg2 + (airTem & 0xFF)); |
| | | //// break; |
| | | //// case 3: |
| | | //// addBytes[6] = (byte) (arg2 + (airTem & 0xFF)); |
| | | //// break; |
| | | //// case 4: |
| | | //// addBytes[7] = (byte) (arg2 + (airTem & 0xFF)); |
| | | //// break; |
| | | //// } |
| | | // addBytes[2] = (byte) (arg2 + (airTem & 0xFF)); |
| | | // addBytes[5] = (byte) (arg2 + (airTem & 0xFF)); |
| | | // addBytes[6] = (byte) (arg2 + (airTem & 0xFF)); |
| | | // addBytes[7] = (byte) (arg2 + (airTem & 0xFF)); |
| | | // break; |
| | | // case downTem: |
| | | //// int height3= ((addBytes[3] & 0xf0) >> 4);//获取高4位 |
| | | //// switch (height3){ |
| | | //// case 0: |
| | | //// addBytes[2] = (byte) ((airTem & 0xFF)-arg2 ); |
| | | //// break; |
| | | //// case 1: |
| | | //// addBytes[5] = (byte) ((airTem & 0xFF)-arg2 ); |
| | | //// break; |
| | | //// case 3: |
| | | //// addBytes[6] = (byte) ((airTem & 0xFF)-arg2 ); |
| | | //// break; |
| | | //// case 4: |
| | | //// addBytes[7] = (byte) ((airTem & 0xFF)-arg2 ); |
| | | //// break; |
| | | //// } |
| | | // addBytes[2] = (byte) ((airTem & 0xFF)-arg2 ); |
| | | // addBytes[5] = (byte) ((airTem & 0xFF)-arg2 ); |
| | | // addBytes[6] = (byte) ((airTem & 0xFF)-arg2 ); |
| | | // addBytes[7] = (byte) ((airTem & 0xFF)-arg2 ); |
| | | // break; |
| | | // default: |
| | | // addBytes = new byte[]{fail}; |
| | | // break; |
| | | // } |
| | | // return addBytes; |
| | | // } |
| | | } |
| | | public static byte[] getAirTechAddByte(AppliancesInfo appliancesInfo, int type, int state) { |
| | | |
| | | try { |
| | | AppliancesInfo newInfo = null; |
| | | byte[] airBytes = null; |
| | | outter: |
| | | for (int i = 0; i < HDLDeviceManager.devicesDataList.size(); i++) { |
| | | if (appliancesInfo.getDeviceSubnetID() == HDLDeviceManager.devicesDataList.get(i).getDeviceSubnetID() |
| | | && appliancesInfo.getDeviceDeviceID() == HDLDeviceManager.devicesDataList.get(i).getDeviceDeviceID()) { |
| | | for (int j = 0; j < HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().size(); j++) { |
| | | if (HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getBigType() == Configuration.AIR_BIG_TYPE |
| | | && (HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getDeviceType() == HDLApConfig.TYPE_AC_TECHSYS |
| | | || HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getDeviceType() == HDLApConfig.TYPE_AC_KNXTECHSYS) |
| | | && appliancesInfo.getChannelNum() == HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getChannelNum()) { |
| | | newInfo = HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j); |
| | | if (newInfo.getArrCurState() == null) { |
| | | newInfo.setArrCurState(new byte[19]); |
| | | } |
| | | airBytes = newInfo.getArrCurState(); |
| | | break outter; |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | byte[] addBytes = new byte[19]; |
| | | if (airBytes != null && airBytes.length >= 19) { |
| | | System.arraycopy(airBytes, 0, addBytes, 0, airBytes.length); |
| | | addBytes[0] = (byte) newInfo.getChannelNum(); |
| | | |
| | | switch (type) { |
| | | case airSwich://设置开关状态 |
| | | if (state == airOff) { |
| | | addBytes[8] = 0; |
| | | } else { |
| | | addBytes[8] = 1; |
| | | } |
| | | break; |
| | | case refTem: |
| | | case heatTem: |
| | | case autoTem: |
| | | case dehumTem://设置温度 |
| | | addBytes[8] = 1; |
| | | addBytes[3] = (byte) state; |
| | | addBytes[4] = (byte) state; |
| | | addBytes[5] = (byte) state; |
| | | addBytes[6] = (byte) state; |
| | | addBytes[11] = (byte) state; |
| | | break; |
| | | case upTem://升温 |
| | | addBytes[8] = 1; |
| | | addBytes[3] = (byte) ((airBytes[2] & 0xff) + state); |
| | | addBytes[4] = (byte) ((airBytes[2] & 0xff) + state); |
| | | addBytes[5] = (byte) ((airBytes[2] & 0xff) + state); |
| | | addBytes[6] = (byte) ((airBytes[2] & 0xff) + state); |
| | | addBytes[11] = (byte) ((airBytes[2] & 0xff) + state); |
| | | break; |
| | | case downTem://降温 |
| | | addBytes[8] = 1; |
| | | addBytes[3] = (byte) ((airBytes[2] & 0xff) - state); |
| | | addBytes[4] = (byte) ((airBytes[2] & 0xff) - state); |
| | | addBytes[5] = (byte) ((airBytes[2] & 0xff) - state); |
| | | addBytes[6] = (byte) ((airBytes[2] & 0xff) - state); |
| | | addBytes[11] = (byte) ((airBytes[2] & 0xff) - state); |
| | | break; |
| | | case airMode://设置空调模式 |
| | | addBytes[8] = 1; |
| | | addBytes[7] = (byte) (state * 16 + (airBytes[3] & 0xff)); |
| | | addBytes[9] = (byte) state; |
| | | break; |
| | | case airSpeed://设置风速 |
| | | addBytes[8] = 1; |
| | | addBytes[7] = (byte) ((airBytes[1] & 0xff) * 16 + state); |
| | | addBytes[10] = (byte) state; |
| | | break; |
| | | } |
| | | } else { |
| | | addBytes[0] = (byte) newInfo.getChannelNum(); |
| | | addBytes[1] = 0; |
| | | addBytes[2] = (byte) 28; |
| | | addBytes[3] = (byte) 28; |
| | | addBytes[4] = (byte) 28; |
| | | addBytes[5] = (byte) 28; |
| | | addBytes[6] = (byte) 28; |
| | | addBytes[7] = 0; |
| | | addBytes[8] = 1; |
| | | addBytes[9] = 0; |
| | | addBytes[10] = 0; |
| | | addBytes[11] = (byte) 28; |
| | | addBytes[12] = 0; |
| | | switch (type) { |
| | | case airSwich://设置开关状态 |
| | | if (state == airOff) { |
| | | addBytes[8] = 0; |
| | | } else { |
| | | addBytes[8] = 1; |
| | | } |
| | | break; |
| | | case refTem: |
| | | case heatTem: |
| | | case autoTem: |
| | | case dehumTem://设置温度 |
| | | addBytes[8] = 1; |
| | | addBytes[3] = (byte) state; |
| | | addBytes[4] = (byte) state; |
| | | addBytes[5] = (byte) state; |
| | | addBytes[6] = (byte) state; |
| | | addBytes[11] = (byte) state; |
| | | break; |
| | | case upTem://升温 |
| | | addBytes[8] = 1; |
| | | addBytes[3] = (byte) (28 + state); |
| | | addBytes[4] = (byte) (28 + state); |
| | | addBytes[5] = (byte) (28 + state); |
| | | addBytes[6] = (byte) (28 + state); |
| | | addBytes[11] = (byte) (28 + state); |
| | | break; |
| | | case downTem://降温 |
| | | addBytes[8] = 1; |
| | | addBytes[3] = (byte) (28 - state); |
| | | addBytes[4] = (byte) (28 - state); |
| | | addBytes[5] = (byte) (28 - state); |
| | | addBytes[6] = (byte) (28 - state); |
| | | addBytes[11] = (byte) (28 - state); |
| | | break; |
| | | case airMode://设置空调模式 |
| | | addBytes[8] = 1; |
| | | addBytes[7] = (byte) (state * 16); |
| | | addBytes[9] = (byte) state; |
| | | break; |
| | | case airSpeed://设置风速 |
| | | addBytes[8] = 1; |
| | | addBytes[7] = (byte) (state); |
| | | addBytes[10] = (byte) state; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | return addBytes; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return new byte[]{fail}; |
| | | } |
| | | |
| | | } |
| | | |
| | | public static byte[] getAirKNXTechAddByte(AppliancesInfo appliancesInfo, int type, float temp) { |
| | | |
| | | try { |
| | | AppliancesInfo newInfo = null; |
| | | byte[] airBytes = null; |
| | | outter: |
| | | for (int i = 0; i < HDLDeviceManager.devicesDataList.size(); i++) { |
| | | if (appliancesInfo.getDeviceSubnetID() == HDLDeviceManager.devicesDataList.get(i).getDeviceSubnetID() |
| | | && appliancesInfo.getDeviceDeviceID() == HDLDeviceManager.devicesDataList.get(i).getDeviceDeviceID()) { |
| | | for (int j = 0; j < HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().size(); j++) { |
| | | if (HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getBigType() == Configuration.AIR_BIG_TYPE |
| | | && HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getDeviceType() == HDLApConfig.TYPE_AC_KNXTECHSYS |
| | | && appliancesInfo.getChannelNum() == HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j).getChannelNum()) { |
| | | |
| | | newInfo = HDLDeviceManager.devicesDataList.get(i).getAppliancesInfoList().get(j); |
| | | if (newInfo.getArrCurState() == null) { |
| | | newInfo.setArrCurState(new byte[19]); |
| | | } |
| | | airBytes = newInfo.getArrCurState(); |
| | | break outter; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | byte[] addBytes = new byte[19]; |
| | | if (airBytes != null && airBytes.length >= 19) { |
| | | System.arraycopy(airBytes, 0, addBytes, 0, airBytes.length); |
| | | addBytes[0] = (byte) newInfo.getChannelNum(); |
| | | |
| | | Log.d("panlili", "---temp=" + temp); |
| | | String tempStr = String.valueOf(temp).trim(); |
| | | String[] strByte = tempStr.split("\\."); |
| | | int tempInt = Integer.parseInt(strByte[0]); |
| | | int tempFloat = Integer.parseInt(strByte[1]); |
| | | |
| | | switch (type) { |
| | | case refTem: |
| | | case heatTem: |
| | | case autoTem: |
| | | case dehumTem://设置温度 |
| | | addBytes[8] = 1; |
| | | |
| | | addBytes[3] = (byte) tempInt; |
| | | addBytes[4] = (byte) tempInt; |
| | | addBytes[5] = (byte) tempInt; |
| | | addBytes[6] = (byte) tempInt; |
| | | addBytes[11] = (byte) tempInt; |
| | | |
| | | addBytes[14] = (byte) tempFloat; |
| | | addBytes[15] = (byte) tempFloat; |
| | | addBytes[16] = (byte) tempFloat; |
| | | addBytes[17] = (byte) tempFloat; |
| | | addBytes[18] = (byte) tempFloat; |
| | | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | return addBytes; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return new byte[]{fail}; |
| | | } |
| | | |
| | | } |
| | | } |