Esempio n. 1
0
 /// <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;
                     }
                 }
             }
         }
     }
 }
Esempio n. 2
0
 /// <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);
                     }
                 }
             }
         }
     }
 }
Esempio n. 3
0
        /// <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;
                            }
                        }
                    }
                }
            }
        }
Esempio n. 4
0
 /// <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;
                     }
                 }
             }
         }
     }
 }