public static List <Identifier> analyse(string Remain, byte AFN, out string msg) { List <Identifier> List_Identifier = new List <Identifier>(); try { while (Remain.Length >= 4) { byte Key = Convert.ToByte(Remain.Substring(0, 2), 16); string LengthStr = Remain.Substring(2, 2); byte Length = Convert.ToByte(LengthStr, 16); if (Key == (byte)Identifier_Standard._FF) { byte IdentifierSub = Convert.ToByte(Remain.Substring(2, 2), 16); if (IdentifierSub == (byte)Identifier_Custom._03) { if (Remain.Length < 30) { msg = "长度不足,无法获取日水温" + " " + Remain; return(null); } Identifier_FF_03 iden = new Identifier_FF_03(); iden.SetVal(0, 0, Remain.Substring(6, 24)); List_Identifier.Add(iden); Remain = Remain.Substring(30); } else if (IdentifierSub == (byte)Identifier_Custom._0E) { if (Remain.Length < 42) { msg = "长度不足,无法获取日埋深" + " " + Remain; return(null); } Identifier_FF_0E iden = new Identifier_FF_0E(); iden.SetVal(0, 0, Remain.Substring(6, 36)); List_Identifier.Add(iden); Remain = Remain.Substring(42); } else { msg = "非法自定义标识符" + IdentifierSub + "" + " " + Remain; return(null); } } else if (Key == (byte)Identifier_Standard._F0) { int ByteCount = 5; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } Identifier_F0 iden = new Identifier_F0(); iden.SetVal(0, 0, Remain.Substring(4, 10)); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._F1) { int ByteCount = 5; if (Enum.IsDefined(typeof(Identifier_F1.HaveKey), (int)AFN)) { ByteCount = 6; } if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } Identifier_F1 iden = new Identifier_F1(); iden.SetVal(0, 0, Remain.Substring(4, ByteCount * 2)); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._F2) { Identifier_F2 iden = new Identifier_F2(); iden.SetVal(0, 0, Remain.Substring(4)); List_Identifier.Add(iden); msg = ""; return(List_Identifier); } else if (Key == (byte)Identifier_Standard._F3) { Identifier_F3 iden = new Identifier_F3(); iden.SetVal(0, 0, Remain.Substring(4)); List_Identifier.Add(iden); msg = ""; return(List_Identifier); } else if (Key == (byte)Identifier_Standard._F4) { int ByteCount = 12; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier_F4 iden = new Identifier_F4(); iden.SetVal(0, 0, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._F5) { int ByteCount = 24; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier_F5 iden = new Identifier_F5(); iden.SetVal(0, 0, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._F6) { int ByteCount = 24; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier_F6 iden = new Identifier_F6(); iden.SetVal(0, 0, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._F7) { int ByteCount = 24; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier_F7 iden = new Identifier_F7(); iden.SetVal(0, 0, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._F8) { int ByteCount = 24; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier_F8 iden = new Identifier_F8(); iden.SetVal(0, 0, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._F9) { int ByteCount = 24; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier_F9 iden = new Identifier_F9(); iden.SetVal(0, 0, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._FA) { int ByteCount = 24; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier_FA iden = new Identifier_FA(); iden.SetVal(0, 0, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._FB) { int ByteCount = 24; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier_FB iden = new Identifier_FB(); iden.SetVal(0, 0, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._FC) { int ByteCount = 24; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier_FC iden = new Identifier_FC(); iden.SetVal(0, 0, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } else if (Key == (byte)Identifier_Standard._FD) { Identifier_FD iden = new Identifier_FD(); iden.SetVal(0, 0, Remain.Substring(4)); List_Identifier.Add(iden); msg = ""; return(List_Identifier); } else { int[] LS = WaterBaseProtocol.GetLengthList(LengthStr); int ByteCount = LS[0]; int Digits = LS[1]; if (Remain.Length < 2 + 2 + ByteCount * 2) { msg = "长度不足,无法获取标识符" + Key + "数据" + " " + Remain; return(null); } string ValStr = Remain.Substring(4, ByteCount * 2); Identifier iden; if (Key == (byte)Identifier_Standard._03) { iden = new Identifier_03(); } else if (Key == (byte)Identifier_Standard._04) { iden = new Identifier_04(); } else if (Key == (byte)Identifier_Standard._0E) { iden = new Identifier_0E(); } else if (Key == (byte)Identifier_Standard._1A) { iden = new Identifier_1A(); } else if (Key == (byte)Identifier_Standard._1F) { iden = new Identifier_1F(); } else if (Key == (byte)Identifier_Standard._20) { iden = new Identifier_20(); } else if (Key == (byte)Identifier_Standard._26) { iden = new Identifier_26(); } else if (Key == (byte)Identifier_Standard._38) { iden = new Identifier_38(); } else if (Key == (byte)Identifier_Standard._39) { iden = new Identifier_39(); } else if (Key == (byte)Identifier_Standard._45) { iden = new Identifier_45(); } else if (Key == (byte)Identifier_Standard._70) { iden = new Identifier_70(); } else if (Key == (byte)Identifier_Standard._71) { iden = new Identifier_71(); } else if (Key == (byte)Identifier_Standard._72) { iden = new Identifier_72(); } else if (Key == (byte)Identifier_Standard._73) { iden = new Identifier_73(); } else if (Key == (byte)Identifier_Standard._74) { iden = new Identifier_74(); } else if (Key == (byte)Identifier_Standard._75) { iden = new Identifier_75(); } else { iden = new Identifier_00(Key); } iden.SetVal(ByteCount, Digits, ValStr); List_Identifier.Add(iden); Remain = Remain.Substring(2 + 2 + ByteCount * 2); } } msg = ""; return(List_Identifier); } catch (Exception ex) { msg = ex.Message; return(null); } }
public static List <RTUParam> analyse2(string Remain, out string msg) { List <RTUParam> List_RTUParam = new List <RTUParam>(); try { while (Remain.Length >= 4) { byte Key = Convert.ToByte(Remain.Substring(0, 2), 16); string LengthStr = Remain.Substring(2, 2); byte Length = Convert.ToByte(LengthStr, 16); int[] LS = WaterBaseProtocol.GetLengthList(LengthStr); int ByteCount = LS[0]; int Digits = LS[1]; RTUParam rp; if (Key == (byte)RTUParamKey._01) { rp = new RTUParam_01(); } else if (Key == (byte)RTUParamKey._02) { rp = new RTUParam_02(); } else if (Key == (byte)RTUParamKey._03) { rp = new RTUParam_03(); } else if (Key == (byte)RTUParamKey._04) { rp = new RTUParam_04(); } else if (Key == (byte)RTUParamKey._05) { rp = new RTUParam_05(); } else if (Key == (byte)RTUParamKey._06) { rp = new RTUParam_06(); } else if (Key == (byte)RTUParamKey._07) { rp = new RTUParam_07(); } else if (Key == (byte)RTUParamKey._08) { rp = new RTUParam_08(); } else if (Key == (byte)RTUParamKey._09) { rp = new RTUParam_09(); } else if (Key == (byte)RTUParamKey._0A) { rp = new RTUParam_0A(); } else if (Key == (byte)RTUParamKey._0B) { rp = new RTUParam_0B(); } else if (Key == (byte)RTUParamKey._0C) { rp = new RTUParam_0C(); } else if (Key == (byte)RTUParamKey._0D) { rp = new RTUParam_0D(); } else if (Key == (byte)RTUParamKey._0E) { rp = new RTUParam_0E(); } else if (Key == (byte)RTUParamKey._0F) { rp = new RTUParam_0F(); } else if (Key == (byte)RTUParamKey._20) { rp = new RTUParam_20(); } else if (Key == (byte)RTUParamKey._21) { rp = new RTUParam_21(); } else if (Key == (byte)RTUParamKey._22) { rp = new RTUParam_22(); } else if (Key == (byte)RTUParamKey._23) { rp = new RTUParam_23(); } else if (Key == (byte)RTUParamKey._24) { rp = new RTUParam_24(); } else if (Key == (byte)RTUParamKey._25) { rp = new RTUParam_25(); } else if (Key == (byte)RTUParamKey._26) { rp = new RTUParam_26(); } else if (Key == (byte)RTUParamKey._27) { rp = new RTUParam_27(); } else if (Key == (byte)RTUParamKey._28) { rp = new RTUParam_28(); } else if (Key == (byte)RTUParamKey._29) { rp = new RTUParam_29(); } else if (Key == (byte)RTUParamKey._2A) { rp = new RTUParam_2A(); } else if (Key == (byte)RTUParamKey._2B) { rp = new RTUParam_2B(); } else if (Key == (byte)RTUParamKey._2C) { rp = new RTUParam_2C(); } else if (Key == (byte)RTUParamKey._2D) { rp = new RTUParam_2D(); } else if (Key == (byte)RTUParamKey._2E) { rp = new RTUParam_2E(); } else if (Key == (byte)RTUParamKey._2F) { rp = new RTUParam_2F(); } else if (Key == (byte)RTUParamKey._30) { rp = new RTUParam_30(); } else if (Key == (byte)RTUParamKey._31) { rp = new RTUParam_31(); } else if (Key == (byte)RTUParamKey._32) { rp = new RTUParam_32(); } else if (Key == (byte)RTUParamKey._33) { rp = new RTUParam_33(); } else if (Key == (byte)RTUParamKey._34) { rp = new RTUParam_34(); } else if (Key == (byte)RTUParamKey._35) { rp = new RTUParam_35(); } else if (Key == (byte)RTUParamKey._36) { rp = new RTUParam_36(); } else if (Key == (byte)RTUParamKey._37) { rp = new RTUParam_37(); } else if (Key == (byte)RTUParamKey._38) { rp = new RTUParam_38(); } else if (Key == (byte)RTUParamKey._39) { rp = new RTUParam_39(); } else if (Key == (byte)RTUParamKey._3A) { rp = new RTUParam_3A(); } else if (Key == (byte)RTUParamKey._3B) { rp = new RTUParam_3B(); } else if (Key == (byte)RTUParamKey._3C) { rp = new RTUParam_3C(); } else if (Key == (byte)RTUParamKey._3D) { rp = new RTUParam_3D(); } else if (Key == (byte)RTUParamKey._3E) { rp = new RTUParam_3E(); } else if (Key == (byte)RTUParamKey._3F) { rp = new RTUParam_3F(); } else if (Key == (byte)RTUParamKey._40) { rp = new RTUParam_40(); } else if (Key == (byte)RTUParamKey._41) { rp = new RTUParam_41(); } else if (Key == (byte)RTUParamKey._97) { rp = new RTUParam_97(); } else if (Key == (byte)RTUParamKey._98) { rp = new RTUParam_98(); } else { rp = new RTUParam_00(Key); } List_RTUParam.Add(rp); Remain = Remain.Substring(4); } msg = ""; return(List_RTUParam); } catch (Exception ex) { msg = ex.Message; return(null); } }