panlili2024
2024-11-11 145de2dcd3124f236e7d06bcdee17c7be08048b1
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Parser/DeviceParser.java
@@ -57,8 +57,10 @@
            curCount++;
            int curChannelNum = 0;
            int index = 0;
            while (curChannelNum < channelNum) {
                curChannelNum++;
                curChannelNum++;//有可能不是从1开始的,所以增加index判断
                index++;
                if (isWantData(bigType, littleType)) {
                    AppliancesInfo appliancesInfo = new AppliancesInfo();
                    appliancesInfo.setDeviceSubnetID(subnetID);
@@ -67,40 +69,40 @@
                    /**根据类别,赋值操作码等一些重要信息*/
                    switch (bigType) {
                        case Configuration.LIGTH_BIG_TYPE:
                            parseLightData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseLightData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.CURTAIN_BIG_TYPE:
                            parseCurtainData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseCurtainData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.AIR_BIG_TYPE:
                            parseAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.AUDIO_BIG_TYPE:
                            parseAudioData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseAudioData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.LOGIC_BIG_TYPE:
                            parseLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.GLOBAL_LOGIC_BIG_TYPE:
                            parseGlobalLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseGlobalLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.SECURITY_BIG_TYPE://2019-7-29 新增
                            parseSecurityData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseSecurityData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.SENSOR_BIG_TYPE:
                            parseSensorData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseSensorData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.COMMON_SWITCH_BIG_TYPE://2020-04-01 通用开关
                            parseCommonSwitchData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseCommonSwitchData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.FRESH_AIR_BIG_TYPE://2020-07-20 新增新风
                            parseFreshAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseFreshAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.GEOTHERMAL_BIG_TYPE://地热
                            parseGeothermalData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseGeothermalData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        case Configuration.DOOR_MACHINE_BIG_TYPE://门锁
                            parseDoorMachineData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                            parseDoorMachineData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                            break;
                        default:
//                            appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
@@ -300,7 +302,7 @@
    }
    private static void parseLightData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseLightData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("调光回路");
@@ -349,6 +351,7 @@
        }
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.LIGTH_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
@@ -371,7 +374,7 @@
        }
    }
    private static void parseCurtainData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseCurtainData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("开合帘电机");
@@ -396,6 +399,7 @@
        }
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.CURTAIN_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setCtrlCommand(Configuration.CURTAIN_CTRL_COMMAND);
@@ -408,7 +412,7 @@
        }
    }
    private static void parseAirData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseAirData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("HVAC 模块");
@@ -441,6 +445,7 @@
        }
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.AIR_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID());
@@ -463,7 +468,7 @@
        }
    }
    private static void parseAudioData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseAudioData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("背景音乐模块");
@@ -483,6 +488,7 @@
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.AUDIO_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setCtrlCommand(Configuration.AUDIO_CTRL_READ_COMMAND);
@@ -496,7 +502,7 @@
        HDLLog.I("音乐模块:" + parentRemarks);
    }
    private static void parseLogicData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseLogicData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("逻辑模块");
@@ -509,6 +515,7 @@
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.LOGIC_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setCtrlCommand(Configuration.LOGIC_CTRL_COMMAND);
@@ -522,7 +529,7 @@
        }
    }
    private static void parseGlobalLogicData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseGlobalLogicData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("全局逻辑模块");
@@ -535,6 +542,7 @@
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.GLOBAL_LOGIC_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setCtrlCommand(Configuration.LOGIC_CTRL_COMMAND);
@@ -559,7 +567,7 @@
     * @param port
     * @param ipAddress
     */
    private static void parseSecurityData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseSecurityData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("安防模块");
@@ -576,6 +584,7 @@
        }
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.SECURITY_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID());
@@ -606,7 +615,7 @@
    //    2019-07-03 屏蔽 2019-11-5 传感器都改为干接点实现
    private static void parseSensorData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int curChannelNum, int port, String ipAddress) {
    private static void parseSensorData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("传感器 干结点");
@@ -732,7 +741,8 @@
        if (devicesData != null) {
            appliancesInfo.setChannelNum(curChannelNum);
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.SENSOR_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
@@ -751,7 +761,7 @@
     * 2020-07-20
     * 新风系统
     */
    private static void parseFreshAirData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseFreshAirData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("新风系统模块");
@@ -776,6 +786,7 @@
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.FRESH_AIR_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID());
@@ -788,7 +799,7 @@
    /**
     * 地热
     */
    private static void parseGeothermalData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseGeothermalData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("地热模块");
@@ -813,6 +824,7 @@
        }
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.GEOTHERMAL_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID());
@@ -832,7 +844,7 @@
    /**
     * 门锁
     */
    private static void parseDoorMachineData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseDoorMachineData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 4:
                appliancesInfo.setDeviceName("门锁模块");
@@ -844,6 +856,7 @@
        }
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.DOOR_MACHINE_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID());
@@ -871,7 +884,7 @@
     * @param port
     * @param ipAddress
     */
    private static void parseCommonSwitchData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int port, String ipAddress) {
    private static void parseCommonSwitchData(int littleType, AppliancesInfo appliancesInfo, DevicesData devicesData, String parentRemarks, int channelNum, int index, String ipAddress) {
        switch (littleType) {
            case 0:
                appliancesInfo.setDeviceName("通用开关");
@@ -884,6 +897,7 @@
        }
        if (devicesData != null) {
            appliancesInfo.setChannelNum(channelNum);
            appliancesInfo.setDeviceIndex(index);
            appliancesInfo.setBigType(Configuration.COMMON_SWITCH_BIG_TYPE);
            appliancesInfo.setLittleType(littleType);
            appliancesInfo.setSourceSubnetID(devicesData.getSourceSubnetID());
@@ -908,7 +922,7 @@
     * @param mRemarks
     * @return
     */
    public static DevicesData addDevicesManuallyWithoutSearching(int mBigType, int mLittleType, int mSubnetID, int mDeviceID, int mChannelNum, String mRemarks) {
    public static DevicesData addDevicesManuallyWithoutSearching(int mBigType, int mLittleType, int mSubnetID, int mDeviceID, int mChannelNum, int mIndex, String mRemarks) {
        boolean bWantData = false;
        DevicesData mDevicesData = new DevicesData();
        mDevicesData.setSourceSubnetID(mSubnetID);
@@ -918,7 +932,7 @@
        List<AppliancesInfo> appliancesInfoList = new ArrayList<>();
        if (isWantData(mBigType, mLittleType)) {
            bWantData = true;
            AppliancesInfo appliancesInfo = getDevicesInfo(mDevicesData, mBigType, mLittleType, mChannelNum, mRemarks, mRemarks);
            AppliancesInfo appliancesInfo = getDevicesInfo(mDevicesData, mBigType, mLittleType, mChannelNum, mIndex, mRemarks, mRemarks);
            appliancesInfoList.add(appliancesInfo);
//            HDLLog.I( "向模块添加回路:"+"大类:" + mBigType + " 小类:" + mLittleType +" 模块备注" + mRemarks );
@@ -1003,7 +1017,7 @@
        List<AppliancesInfo> appliancesInfoList = new ArrayList<>();
        if (isWantData(bigType, littleType)) {
            for (int i = 0; i < parentRemarksList.size(); i++) {
                appliancesInfoList.add(getDevicesInfo(devicesData, bigType, littleType, i + 1, parentRemarks, parentRemarksList.get(i)));
                appliancesInfoList.add(getDevicesInfo(devicesData, bigType, littleType, i + 1, i+1, parentRemarks, parentRemarksList.get(i)));
            }
            bWantData = true;
@@ -1024,45 +1038,45 @@
        return devicesData;
    }
    public static AppliancesInfo getDevicesInfo(DevicesData devicesData, int bigType, int littleType, int curChannelNum, String parentRemarks, String mRemarks) {
    public static AppliancesInfo getDevicesInfo(DevicesData devicesData, int bigType, int littleType, int curChannelNum, int index, String parentRemarks, String mRemarks) {
        AppliancesInfo appliancesInfo = new AppliancesInfo();
        /**根据类别,赋值操作码等一些重要信息*/
        switch (bigType) {
            case Configuration.LIGTH_BIG_TYPE:
                parseLightData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseLightData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.CURTAIN_BIG_TYPE:
                parseCurtainData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseCurtainData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.AIR_BIG_TYPE:
                parseAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.AUDIO_BIG_TYPE:
                parseAudioData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseAudioData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.LOGIC_BIG_TYPE:
                parseLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.GLOBAL_LOGIC_BIG_TYPE:
                parseGlobalLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseGlobalLogicData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.SECURITY_BIG_TYPE://2019-7-29 新增
                parseSecurityData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseSecurityData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.SENSOR_BIG_TYPE:
                parseSensorData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseSensorData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.COMMON_SWITCH_BIG_TYPE://2020-04-01 通用开关
                parseCommonSwitchData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseCommonSwitchData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.FRESH_AIR_BIG_TYPE://2020-07-20 新增新风
                parseFreshAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseFreshAirData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.GEOTHERMAL_BIG_TYPE://2020-07-20 地热
                parseGeothermalData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseGeothermalData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            case Configuration.DOOR_MACHINE_BIG_TYPE://2023-08-22 门锁
                parseDoorMachineData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, 0, "");
                parseDoorMachineData(littleType, appliancesInfo, devicesData, parentRemarks, curChannelNum, index, "");
                break;
            default:
//                            appliancesInfo.setDeviceName(Configuration.UNKNOW_TYPE);
@@ -1074,7 +1088,8 @@
                + "-" + appliancesInfo.getDeviceSubnetID()
                + "-" + appliancesInfo.getDeviceDeviceID()
                + "-" + appliancesInfo.getChannelNum();
        appliancesInfo.setRemarks(mRemarks);
//        appliancesInfo.setRemarks(mRemarks);
        HDLLog.I("---getDevicesInfo getRemarks():" + appliancesInfo.getRemarks());
        appliancesInfo.setDeviceKey(key);//2019-8-2 添加唯一标识key
        return appliancesInfo;
@@ -1092,7 +1107,7 @@
     * @param parentRemarks
     * @return
     */
    public static DevicesData addDevicesListWithoutSearching(int bigType, int littleType, int mSubnetID, int mDeviceID, int mChannelNum, String mChannelRemark, String parentRemarks) {
    public static DevicesData addDevicesListWithoutSearching(int bigType, int littleType, int mSubnetID, int mDeviceID, int mChannelNum, int mIndex,  String mChannelRemark, String parentRemarks) {
//        boolean bWantData = false;
        if (isWantData(bigType, littleType)) {
            DevicesData devicesData = new DevicesData();
@@ -1112,13 +1127,13 @@
            if (isFindDevicesData) {
                AppliancesInfo mAppliancesInfo = getDevicesInfo(devicesData, bigType, littleType, mChannelNum, parentRemarks, mChannelRemark);
                AppliancesInfo mAppliancesInfo = getDevicesInfo(devicesData, bigType, littleType, mChannelNum, mIndex, parentRemarks, mChannelRemark);
                devicesDataList.get(index).getAppliancesInfoList().add(mAppliancesInfo);
                devicesData = devicesDataList.get(index);
                HandleSearch.OnDeviceListGetSuccessCallBack();
            } else {
                List<AppliancesInfo> appliancesInfoList = new ArrayList<>();
                appliancesInfoList.add(getDevicesInfo(devicesData, bigType, littleType, mChannelNum, parentRemarks, mChannelRemark));
                appliancesInfoList.add(getDevicesInfo(devicesData, bigType, littleType, mChannelNum, mIndex, parentRemarks, mChannelRemark));
                devicesData.setAppliancesInfoList(appliancesInfoList);
                devicesDataList.add(devicesData);
                HandleSearch.OnDeviceListGetSuccessCallBack();