/// <summary> /// B5620111数据解析 /// </summary> /// <param name="sp"></param> /// <param name="IN11"></param> public static void ParseDataIN11(SerialPort sp, Model.INF_B562_0111 IN11) { byte[] Data = new byte[sp.BytesToRead]; sp.Read(Data, 0, Data.Length); sp.DiscardInBuffer(); for (int i = 0; i < Data.Length - 6; i++) { if ((Data[i] == 0xB5) && (Data[i + 1] == 0x62)) { if ((Data[i + 2] == 0x01) && (Data[i + 3] == 0x11)) { ushort len = BitConverter.ToUInt16(Data, i + 4); if (Data.Length - i - 8 >= len) { byte[] buffer = Data.Skip(i + 2).Take(len + 6).ToArray(); if (Protocol_UBX.Checksum(buffer)) { byte[] payload = buffer.Skip(4).Take(len).ToArray(); IN11 = Protocol_UBX.UserBaseStation(payload); break; } } } } } }
/// <summary> /// 数组协议解析基准站信息 /// </summary> /// <param name="Data"></param> /// <param name="IN01"></param> /// <param name="IN11"></param> public static void ParseBaseStation(byte[] Data, Model.INF_B562_0101 IN01, Model.INF_B562_0111 IN11) { for (int i = 0; i < Data.Length - 6; i++) { if ((Data[i] == 0xB5) && (Data[i + 1] == 0x62) && (Data[i + 2] == 0x01)) { if (Data[i + 3] == 0x01) { ushort len = BitConverter.ToUInt16(Data, i + 4); if (Data.Length - i - 8 >= len) { byte[] buffer = Data.Skip(i + 2).Take(len + 6).ToArray(); if (Protocol_UBX.Checksum(buffer)) { byte[] payload = buffer.Skip(4).Take(len).ToArray(); IN01 = Protocol_UBX.BaseStation(payload); } } } else if (Data[i + 3] == 0x11) { ushort len = BitConverter.ToUInt16(Data, i + 4); if (Data.Length - i - 8 >= len) { byte[] buffer = Data.Skip(i + 2).Take(len + 6).ToArray(); if (Protocol_UBX.Checksum(buffer)) { byte[] payload = buffer.Skip(4).Take(len).ToArray(); IN11 = Protocol_UBX.UserBaseStation(payload); } } } } } }
/// <summary> /// 解析RTKBox配置信息协议 /// </summary> /// <param name="sp">当前串口</param> /// <param name="IN19">19数据实体类</param> public static void ParseDataIN19(SerialPort sp, Model.INF_B562_0119 IN19) { byte[] Data = new byte[sp.BytesToRead]; sp.Read(Data, 0, Data.Length); sp.DiscardInBuffer(); string str = null; for (int i = 0; i < Data.Length; i++) { str += Data[i].ToString("X2"); } System.Windows.Forms.MessageBox.Show(str); for (int i = 0; i < Data.Length - 6; i++) { if ((Data[i] == 0xB5) && (Data[i + 1] == 0x62)) { if ((Data[i + 2] == 0x01) && (Data[i + 3] == 0x19)) { ushort len = BitConverter.ToUInt16(Data, i + 4); if (Data.Length - i - 8 >= len) { byte[] buffer = Data.Skip(i + 2).Take(len + 6).ToArray(); if (Protocol_UBX.Checksum(buffer)) { byte[] payload = buffer.Skip(4).Take(len).ToArray(); IN19 = Protocol_UBX.RTKBoxOptions(payload); break; } } } } } }
/// <summary> /// IN18流动站数据解析 /// </summary> /// <param name="Data"></param> /// <param name="IN18"></param> public static void ParseDataIN18(byte[] Data, Model.INF_B562_0118 IN18) { for (int i = 0; i < Data.Length - 6; i++) { if ((Data[i] == 0xB5) && (Data[i + 1] == 0x62)) { if ((Data[i + 2] == 0x01) && (Data[i + 3] == 0x18)) { ushort len = BitConverter.ToUInt16(Data, i + 4); if (Data.Length - i - 8 >= len) { byte[] buffer = Data.Skip(i + 2).Take(len + 6).ToArray(); if (Protocol_UBX.Checksum(buffer)) { byte[] payload = buffer.Skip(4).Take(len).ToArray(); IN18 = Protocol_UBX.RoverStation(payload); break; } } } } } }