panlili2024
2024-11-11 145de2dcd3124f236e7d06bcdee17c7be08048b1
修改搜索按照index索引
12个文件已修改
258 ■■■■■ 已修改文件
.idea/deploymentTargetSelector.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_TTLSDK485/build.gradle 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Bean/AppliancesInfo.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Bean/ListRemarks.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLDeviceManager.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLTtlSdk.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HandleSearch.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Parser/DeviceParser.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/sdk/ttl_sdk/HDLApplication.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/sdk/ttl_sdk/activity/AddDevicesManuallyActivity.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_add_devices_manually.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/deploymentTargetSelector.xml
@@ -4,10 +4,10 @@
    <selectionStates>
      <SelectionState runConfigName="app">
        <option name="selectionMode" value="DROPDOWN" />
        <DropdownSelection timestamp="2024-09-23T05:28:34.940591100Z">
        <DropdownSelection timestamp="2024-11-11T02:28:48.057319600Z">
          <Target type="DEFAULT_BOOT">
            <handle>
              <DeviceId pluginId="Default" identifier="serial=192.168.1.106:5555;connection=9ecb2e58" />
              <DeviceId pluginId="Default" identifier="serial=192.168.1.113:5555;connection=edc26430" />
            </handle>
          </Target>
        </DropdownSelection>
HDL_TTLSDK485/build.gradle
@@ -7,8 +7,8 @@
    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 30
        versionCode 6
        versionName "1.2.3"
        versionCode 7
        versionName "1.2.4"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        ndk {
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Bean/AppliancesInfo.java
@@ -18,6 +18,7 @@
    private int stateCommand;//读取状态码
    private int stateBackCommand;//读取状态返回码
    private int channelNum;//回路号
    private int deviceIndex;//序列号
    private int deviceSubnetID;//设备子网号
    private int deviceDeviceID;//设备号
    private int sourceSubnetID;//源子网号
@@ -131,6 +132,14 @@
        this.channelNum = channelNum;
    }
    public int getDeviceIndex() {
        return deviceIndex;
    }
    public void setDeviceIndex(int deviceIndex) {
        this.deviceIndex = deviceIndex;
    }
    public String getRemarks() {
        return remarks;
    }
@@ -228,6 +237,7 @@
                ", stateCommand=" + stateCommand +
                ", stateBackCommand=" + stateBackCommand +
                ", channelNum=" + channelNum +
                ", deviceIndex=" + deviceIndex +
                ", deviceSubnetID=" + deviceSubnetID +
                ", deviceDeviceID=" + deviceDeviceID +
                ", sourceSubnetID=" + sourceSubnetID +
@@ -241,6 +251,7 @@
                ", physicsChannelNum=" + physicsChannelNum +
                ", intCurState=" + intCurState +
                ", deviceKey='" + deviceKey + '\'' +
                ", isGetDeviceStateSuccess=" + isGetDeviceStateSuccess +
                '}';
    }
}
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Bean/ListRemarks.java
@@ -6,6 +6,7 @@
public class ListRemarks {
    boolean isCallBack;
    private int sendCount;
    AppliancesInfo appliancesInfo;
    public boolean isCallBack() {
@@ -16,6 +17,14 @@
        isCallBack = callBack;
    }
    public int getSendCount() {
        return sendCount;
    }
    public void setSendCount(int sendCount) {
        this.sendCount = sendCount;
    }
    public AppliancesInfo getAppliancesInfo() {
        return appliancesInfo;
    }
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLDeviceManager.java
@@ -166,7 +166,7 @@
     * @param commandType 命令类型
     */
    public static void handle(UdpDataBean getDatas, int commandType) {
//        Log.e("panlili", "commandType=" + Integer.toHexString(commandType) + " sourceSubnetID=" + getDatas.sourceSubnetID + " sourceDeviceID=" + getDatas.sourceDeviceID);
        Log.e("panlili", "commandType=" + Integer.toHexString(commandType) + " sourceSubnetID=" + getDatas.sourceSubnetID + " sourceDeviceID=" + getDatas.sourceDeviceID);
        switch (commandType) {
            case Configuration.SEARCH_GATEWAY_BACK_COMMAND:
                break;
@@ -382,7 +382,7 @@
     *
     * @param getDatas
     */
    private static void handleSearchData(UdpDataBean getDatas) {
    private static synchronized void handleSearchData(UdpDataBean getDatas) {
        DevicesData devicesData = new DevicesData();
        devicesData.setSourceSubnetID(getDatas.sourceSubnetID);
@@ -439,11 +439,13 @@
            EventBus.getDefault().post(new DiscoverNewDevicesEvent(devicesData));
            //过滤掉背景音乐,背景音乐没有备注返回
            if (devicesDataList.get(devicesDataList.size() - 1).getAppliancesInfoList().get(0).getBigType() != Configuration.AUDIO_BIG_TYPE) {
                for (int i = 0, len = devicesDataList.get(devicesDataList.size() - 1).getAppliancesInfoList().size(); i < len; i++) {
            if (devicesData.getAppliancesInfoList().get(0).getBigType() != Configuration.AUDIO_BIG_TYPE) {
                for (int i = 0, len = devicesData.getAppliancesInfoList().size(); i < len; i++) {
                    ListRemarks listRemarksTemp = new ListRemarks();
                    listRemarksTemp.setCallBack(false);
                    listRemarksTemp.setAppliancesInfo(devicesDataList.get(devicesDataList.size() - 1).getAppliancesInfoList().get(i));
                    AppliancesInfo appliancesInfo = devicesData.getAppliancesInfoList().get(i);
                    Log.d("panlili", "HDLDeviceManager.java:handleSearchData----->getChannelNum= " + appliancesInfo.getChannelNum() + " getDeviceKey=" + appliancesInfo.getDeviceKey());
                    listRemarksTemp.setAppliancesInfo(appliancesInfo);
                    listRemarks.add(listRemarksTemp);
                }
            }
@@ -1204,7 +1206,7 @@
                for (int appPos = 0, len2 = infos.size(); appPos < len2; appPos++) {
                    if ((infos.get(appPos).getDeviceSubnetID()) == (getDatas.addBytes[0] & 0xFF)
                            && (infos.get(appPos).getDeviceDeviceID()) == (getDatas.addBytes[1] & 0xFF)
                            && ((infos.get(appPos).getChannelNum()) == (getDatas.addBytes[2] & 0xFF))
                            && ((infos.get(appPos).getDeviceIndex()) == (getDatas.addBytes[2] & 0xFF))//序号
                            && (infos.get(appPos).getBigType()) == (getDatas.addBytes[3] & 0xFF)
                            && ((infos.get(appPos).getLittleType()) == (getDatas.addBytes[4] & 0xFF))) {
@@ -1222,6 +1224,7 @@
                        HDLLog.I("remarkStr获取的备注名为:" + remarkStr);
                        devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).setChannelNum(getDatas.addBytes[5] & 0xFF);
                        devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).setRemarks(remarkStr);
//                        HDLLog.I("getRemarks():" + devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).getRemarks());
                        String key = "K" + devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).getBigType()
                                + "-" + devicesDataList.get(devPos).getAppliancesInfoList().get(appPos).getLittleType()
@@ -1233,9 +1236,10 @@
                        listRemarksOutter:
                        for (int lRPos = 0, len3 = listRemarks.size(); lRPos < len3; lRPos++) {
                            //找到F44B对应的设备回路,判断是否已经拿到了数据。
                            if (listRemarks.get(lRPos).getAppliancesInfo().getDeviceSubnetID() == (getDatas.addBytes[0] & 0xFF)
                                    && listRemarks.get(lRPos).getAppliancesInfo().getDeviceDeviceID() == (getDatas.addBytes[1] & 0xFF)
                                    && listRemarks.get(lRPos).getAppliancesInfo().getChannelNum() == (getDatas.addBytes[2] & 0xFF)
                                    && listRemarks.get(lRPos).getAppliancesInfo().getDeviceIndex() == (getDatas.addBytes[2] & 0xFF)
                                    && listRemarks.get(lRPos).getAppliancesInfo().getBigType() == (getDatas.addBytes[3] & 0xFF)
                                    && listRemarks.get(lRPos).getAppliancesInfo().getLittleType() == (getDatas.addBytes[4] & 0xFF)) {
@@ -1251,7 +1255,7 @@
                                        } else {
                                            HDLLog.I("不存在的设备备注,再次搜索备注。设备:子网号:" + listRemarks.get(lRPos).getAppliancesInfo().getDeviceSubnetID()
                                                    + "设备号:" + listRemarks.get(lRPos).getAppliancesInfo().getDeviceDeviceID()
                                                    + "回路号" + listRemarks.get(lRPos).getAppliancesInfo().getChannelNum()
                                                    + "序列号:" + listRemarks.get(lRPos).getAppliancesInfo().getDeviceIndex()
                                                    + "备注:" + listRemarks.get(lRPos).getAppliancesInfo().getRemarks());
                                            HandleSearch.getDevRemarks();
                                            break listRemarksOutter;
@@ -1260,7 +1264,7 @@
                                } else {
                                    HDLLog.I("返回备注设备:子网号:" + listRemarks.get(lRPos).getAppliancesInfo().getDeviceSubnetID()
                                            + ",设备号:" + listRemarks.get(lRPos).getAppliancesInfo().getDeviceDeviceID()
                                            + ",回路号" + listRemarks.get(lRPos).getAppliancesInfo().getChannelNum()
                                            + ",序列号:" + listRemarks.get(lRPos).getAppliancesInfo().getDeviceIndex()
                                            + ",备注:" + listRemarks.get(lRPos).getAppliancesInfo().getRemarks());
                                    listRemarks.get(lRPos).setCallBack(true);
                                    HandleSearch.getDevRemarks();
@@ -2693,8 +2697,8 @@
     * @param mRemarks    备注
     * @return Boolean
     */
    public static boolean addSecurityDevicesManually(int mSubnetID, int mDeviceID, int mChannelNum, String mRemarks) {
        return addDevicesManuallyWithoutSearching(Configuration.SECURITY_BIG_TYPE, 0, mSubnetID, mDeviceID, mChannelNum, mRemarks);
    public static boolean addSecurityDevicesManually(int mSubnetID, int mDeviceID, int mChannelNum, int mIndex, String mRemarks) {
        return addDevicesManuallyWithoutSearching(Configuration.SECURITY_BIG_TYPE, 0, mSubnetID, mDeviceID, mChannelNum, mIndex, mRemarks);
    }
    /**
@@ -2706,8 +2710,8 @@
     * @param mRemarks    备注
     * @return Boolean
     */
    public static boolean addAudioDevicesManually(int mSubnetID, int mDeviceID, int mChannelNum, String mRemarks) {
        return addDevicesManuallyWithoutSearching(Configuration.AUDIO_BIG_TYPE, 0, mSubnetID, mDeviceID, mChannelNum, mRemarks);
    public static boolean addAudioDevicesManually(int mSubnetID, int mDeviceID, int mChannelNum, int mIndex, String mRemarks) {
        return addDevicesManuallyWithoutSearching(Configuration.AUDIO_BIG_TYPE, 0, mSubnetID, mDeviceID, mChannelNum, mIndex, mRemarks);
    }
    /**
@@ -2722,9 +2726,9 @@
     * @param mRemarks
     * @return
     */
    public static boolean addDevicesManuallyWithoutSearchingWithNewDevice(int mBigType, int mLittleType, int mSubnetID, int mDeviceID, int mChannelNum, String mRemarks) {
    public static boolean addDevicesManuallyWithoutSearchingWithNewDevice(int mBigType, int mLittleType, int mSubnetID, int mDeviceID, int mChannelNum, int mIndex, String mRemarks) {
        try {
            DevicesData mDevicesData = DeviceParser.addDevicesManuallyWithoutSearching(mBigType, mLittleType, mSubnetID, mDeviceID, mChannelNum, mRemarks);
            DevicesData mDevicesData = DeviceParser.addDevicesManuallyWithoutSearching(mBigType, mLittleType, mSubnetID, mDeviceID, mChannelNum, mIndex, mRemarks);
            if (mDevicesData != null) {
                devicesDataList.add(mDevicesData);
                HandleSearch.OnDeviceListGetSuccessCallBack();
@@ -2752,7 +2756,7 @@
     * @param mRemarks
     * @return
     */
    public static boolean addDevicesManuallyWithoutSearching(int mBigType, int mLittleType, int mSubnetID, int mDeviceID, int mChannelNum, String mRemarks) {
    public static boolean addDevicesManuallyWithoutSearching(int mBigType, int mLittleType, int mSubnetID, int mDeviceID, int mChannelNum, int mIndex, String mRemarks) {
        try {
            if (!DeviceParser.isWantData(mBigType, mLittleType)) {//判断是否支持的大类小类
@@ -2770,7 +2774,7 @@
                    DevicesData mDevicesData = devicesDataList.get(i);
                    bCanAdd = getIfCanAddDevice(mDevicesData.getAppliancesInfoList(), mBigType, mLittleType, mChannelNum);
                    if (bCanAdd) {//添加子网号 设备号 已存在,并且没有相同的子网号设备号
                        AppliancesInfo mAppliancesInfo = DeviceParser.getDevicesInfo(mDevicesData, mBigType, mLittleType, mChannelNum, mRemarks, mRemarks);
                        AppliancesInfo mAppliancesInfo = DeviceParser.getDevicesInfo(mDevicesData, mBigType, mLittleType, mChannelNum, mIndex, mRemarks, mRemarks);
                        devicesDataList.get(i).getAppliancesInfoList().add(mAppliancesInfo);
                        HandleSearch.OnDeviceListGetSuccessCallBack();
                        HDLLog.I("支持的设备,允许添加");
@@ -2780,7 +2784,7 @@
            }
            if (!bExistSubnetID) {
                return addDevicesManuallyWithoutSearchingWithNewDevice(mBigType, mLittleType, mSubnetID, mDeviceID, mChannelNum, mRemarks);
                return addDevicesManuallyWithoutSearchingWithNewDevice(mBigType, mLittleType, mSubnetID, mDeviceID, mChannelNum, mIndex, mRemarks);
            }
            return bCanAdd;
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLSerialPortCore.java
@@ -26,7 +26,7 @@
 */
public class HDLSerialPortCore {
    //串口设备路径名
    private static String mPathname = "/dev/ttyS4";
    private static String mPathname = "/dev/ttyS9";
    //波特率
    private static int mBaudrate = 115200;
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HDLTtlSdk.java
@@ -16,7 +16,7 @@
     */
    public static void init(Context context, String mPathname, int mBaudrate) {
        HDLDeviceManager.init(context);
        HDLDeviceManager.setIsGetBusLightState(false);//根据是否bus网关设置
        HDLDeviceManager.setIsGetBusLightState(true);//根据是否bus网关设置
        HDLSerialPortCore.setIsModule(true);//根据是否带模组设置
        HDLSerialPortCore.initHDLSerialPort(mPathname, mBaudrate);
    }
HDL_TTLSDK485/src/main/java/com/hdl/sdk/ttl/HDLDeviceManger/Core/HandleSearch.java
@@ -4,6 +4,7 @@
import com.hdl.sdk.ttl.Config.Configuration;
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.DevicesData;
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.ListRemarks;
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.RemarkTimes;
import com.hdl.sdk.ttl.HDLDeviceManger.Bean.SearchCountBean;
import com.hdl.sdk.ttl.HDLDeviceManger.EventBusEvent.DevicesInfoEvent;
@@ -603,6 +604,7 @@
            remarkTimer.cancel();
            remarkTimer = null;
        }
        if ((HDLDeviceManager.listRemarks != null && HDLDeviceManager.listRemarks.size() == 0) || isSearching) {
            isRefreshAllDevicesState = false;
            if (HDLDeviceManager.devicesDataList != null && HDLDeviceManager.devicesDataList.size() > 0) {
@@ -620,7 +622,7 @@
        }
        //判断是否获取设备备注完全,若完全则返回所有设备列表。
        if (HDLDeviceManager.listRemarks != null && HDLDeviceManager.listRemarks.size() != 0 && pos == -1) {
        if (pos == -1) {
            if (!isRefreshAllDevicesState) {
                HandleSearch.OnDeviceListGetSuccessCallBack();
            } else {
@@ -630,46 +632,39 @@
                isRefreshAllDevicesState = false;
                HandleSearch.OnDeviceListGetSuccessCallBack();
            }
            return;
        }
        remarkTimer = new Timer();
        final int newPos = pos;
        final RemarkTimes remarkTimes = new RemarkTimes();
        remarkTimes.setCount(0);
        if (remarkTimer == null) {
            return;
        }
        ListRemarks listRemark = HDLDeviceManager.listRemarks.get(newPos);
        remarkTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                if (remarkTimes.getCount() < 1) {
                    remarkTimes.setCount(remarkTimes.getCount() + 1);
                listRemark.setSendCount(listRemark.getSendCount() + 1);
                if (listRemark.getSendCount() < 3 && !listRemark.isCallBack()) {
                    if (newPos < HDLDeviceManager.listRemarks.size()) {
                        HDLLog.I("----->发送获取备注命令。共" + HDLDeviceManager.listRemarks.size() + "个模块。第"
                                + newPos + "个模块。第 " + (HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getChannelNum())
                                + " 回路,子网号:" + HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getDeviceSubnetID()
                                + ",设备号:" + HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getDeviceDeviceID()
                                + " 第 " + remarkTimes.getCount() + " 次");
                        HDLLog.I("----->发送获取备注命令。共" + HDLDeviceManager.listRemarks.size() + "个,第"
                                + newPos + "个模块。第 " + (listRemark.getAppliancesInfo().getDeviceIndex())
                                + " 序号,子网号:" + listRemark.getAppliancesInfo().getDeviceSubnetID()
                                + ",设备号:" + listRemark.getAppliancesInfo().getDeviceDeviceID()
                                + " 第 " + listRemark.getSendCount() + " 次");
                        HDLCommand.cusSendCommand(Configuration.DEVICES_READ_FROM_GATEWAY_COMMAND,
                                HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getSourceSubnetID()
                                , HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getSourceDeviceID(),
                                listRemark.getAppliancesInfo().getSourceSubnetID()
                                , listRemark.getAppliancesInfo().getSourceDeviceID(),
                                new byte[]{
                                        (byte) HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getDeviceSubnetID(),
                                        (byte) HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getDeviceDeviceID(),
                                        (byte) HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getChannelNum(),
                                        (byte) HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getBigType(),
                                        (byte) HDLDeviceManager.listRemarks.get(newPos).getAppliancesInfo().getLittleType(),
                                        (byte) listRemark.getAppliancesInfo().getDeviceSubnetID(),
                                        (byte) listRemark.getAppliancesInfo().getDeviceDeviceID(),
                                        (byte) listRemark.getAppliancesInfo().getDeviceIndex(),
                                        (byte) listRemark.getAppliancesInfo().getBigType(),
                                        (byte) listRemark.getAppliancesInfo().getLittleType(),
                                });
                    }
                } else {
                    if (HDLDeviceManager.listRemarks != null
                            && HDLDeviceManager.listRemarks.size() != 0
                            && newPos < HDLDeviceManager.listRemarks.size()) {
                        HDLDeviceManager.listRemarks.get(newPos).setCallBack(true);
                    if (!listRemark.isCallBack()) {
                        HDLLog.I("----->获取备注命令超时 第 " + (listRemark.getAppliancesInfo().getDeviceIndex()) + " 序号,子网号:" + listRemark.getAppliancesInfo().getDeviceSubnetID() + ",设备号:" + listRemark.getAppliancesInfo().getDeviceDeviceID());
                    }
                    listRemark.setCallBack(true);
                    getDevRemarks();
                }
            }
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();
app/src/main/java/com/hdl/sdk/ttl_sdk/HDLApplication.java
@@ -9,7 +9,7 @@
 */
public class HDLApplication extends Application {
    public static final String HDL_UART_PATH = "/dev/ttyS4"; //串口设备路径名
    public static final String HDL_UART_PATH = "/dev/ttyS9"; //串口设备路径名
    public static final int HDL_BAUDRATE = 115200;  //波特率
    @Override
app/src/main/java/com/hdl/sdk/ttl_sdk/activity/AddDevicesManuallyActivity.java
@@ -36,10 +36,11 @@
    private EditText subnetIDEditText;
    private EditText deviceIDEditText;
    private EditText channelNumEditText;
    private EditText indexEditText;
    private EditText remarksEditText;
    private Button addButton;
//    private String subnetIDStr, deviceIDStr, channelNumStr, remarksStr;
    private int subnetID, deviceID, channelNum;
    private int subnetID, deviceID, channelNum, index;
    private String  remarksStr;
    private int deviceTypeId = 0;
@@ -77,6 +78,7 @@
        subnetIDEditText = findViewById(R.id.et_subnetID);
        deviceIDEditText = findViewById(R.id.et_deviceID);
        channelNumEditText = findViewById(R.id.et_channelNum);
        indexEditText = findViewById(R.id.et_index);
        remarksEditText = findViewById(R.id.et_remarks);
        addButton = findViewById(R.id.btn_add);
@@ -125,12 +127,12 @@
        boolean isSuccess = false;
        if (deviceTypeId == 0) {
            isSuccess = HDLDeviceManager.addSecurityDevicesManually(subnetID, deviceID, channelNum, remarksStr);
            isSuccess = HDLDeviceManager.addSecurityDevicesManually(subnetID, deviceID, channelNum, index, remarksStr);
        } else if(deviceTypeId == 1) {
            isSuccess = HDLDeviceManager.addAudioDevicesManually(subnetID, deviceID, channelNum, remarksStr);
            isSuccess = HDLDeviceManager.addAudioDevicesManually(subnetID, deviceID, channelNum, index, remarksStr);
        }else {
            //指定大类和小类参数 区分模块类型
            isSuccess = HDLDeviceManager.addDevicesManuallyWithoutSearching(Configuration.SENSOR_BIG_TYPE,11 ,subnetID, deviceID, channelNum, remarksStr);
            isSuccess = HDLDeviceManager.addDevicesManuallyWithoutSearching(Configuration.SENSOR_BIG_TYPE, 11, subnetID, deviceID, channelNum, index, remarksStr);
        }
        if(isSuccess){
@@ -160,6 +162,12 @@
            return;
        }
        String indexStr = indexEditText.getText().toString();
        if (TextUtils.isEmpty(indexStr)) {
            showToast("序列号不能为空");
            return;
        }
        String remarksString = remarksEditText.getText().toString();
        if (TextUtils.isEmpty(remarksString)) {
            showToast("备注不能为空");
@@ -170,10 +178,11 @@
         subnetID = Integer.parseInt(subnetIDStr);
         deviceID = Integer.parseInt(deviceIDStr);
         channelNum = Integer.parseInt(channelNumStr);
        index = Integer.parseInt(indexStr);
         remarksStr = remarksString;
         String mes = "";
        mes = "设备类型:" + deviceTypeItems[deviceTypeId];
         mes += "\n子网号:" + subnetIDStr +"\n设备号:" + deviceIDStr +"\n回路号:" + channelNumStr +"\n备注名:" + remarksStr;
        mes += "\n子网号:" + subnetIDStr + "\n设备号:" + deviceIDStr + "\n回路号:" + channelNumStr + "\n序列号:" + indexStr + "\n备注名:" + remarksStr;
        showTipDialog(mes);
    }
@@ -199,7 +208,6 @@
                }).build();
        mMaterialDialog.show();
    }
}
app/src/main/res/layout/activity_add_devices_manually.xml
@@ -86,6 +86,16 @@
            android:hint="回路号"
            />
        <EditText
            android:id="@+id/et_index"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginTop="10dp"
            android:inputType="number"
            android:maxLength="3"
            android:text="1"
            android:hint="序列号"
            />
        <EditText
            android:id="@+id/et_remarks"
            android:layout_width="match_parent"
            android:layout_height="40dp"