/// <summary> /// /// </summary> /// <param name="paramDatas">dtu 返回的用户数据部分</param> /// <returns>dtu参数选项数组</returns> public DtuParamSettingItem[] Parse(byte[] paramDatas) { int i = 0; ArrayList list = new ArrayList(); while (i < paramDatas.Length - 1) { int typePos = i; int lengthPos = i + 1; int valuesBeginPos = i + 2; byte type = paramDatas[typePos]; byte len = paramDatas[lengthPos]; int valuesLen = len - 2; int valuesEndPos = valuesBeginPos + valuesLen; if (valuesEndPos < paramDatas.Length) { byte[] values = new byte[valuesLen]; Array.Copy(paramDatas, i + 2, values, 0, valuesLen); DtuParamSettingItem dpsi = new DtuParamSettingItem(type, len, values); list.Add(dpsi); } } if (list.Count > 0) { DtuParamSettingItem[] returns = new DtuParamSettingItem[list.Count]; for (int idx = 0; idx < list.Count; idx++) { returns[idx] = (DtuParamSettingItem)list[idx]; } return(returns); } else { return(null); } }
/// <summary> /// /// </summary> /// <param name="paramDatas">dtu ���ص��û����ݲ���</param> /// <returns>dtu����ѡ������</returns> public DtuParamSettingItem[] Parse( byte[] paramDatas ) { int i = 0; ArrayList list = new ArrayList(); while( i < paramDatas.Length - 1 ) { int typePos = i; int lengthPos = i + 1; int valuesBeginPos = i + 2; byte type = paramDatas[ typePos ]; byte len = paramDatas[ lengthPos ]; int valuesLen = len - 2; int valuesEndPos = valuesBeginPos + valuesLen ; if ( valuesEndPos < paramDatas.Length ) { byte[] values = new byte[ valuesLen ]; Array.Copy( paramDatas, i + 2, values, 0, valuesLen ); DtuParamSettingItem dpsi = new DtuParamSettingItem(type, len, values); list.Add( dpsi ); } } if ( list.Count > 0 ) { DtuParamSettingItem[] returns = new DtuParamSettingItem[ list.Count ]; for( int idx=0; idx<list.Count; idx++ ) { returns[ idx ] = (DtuParamSettingItem) list[idx]; } return returns; } else { return null; } }