コード例 #1
0
        public static void Packet_Decoding_To_Group_And_Clear_List_(ref List <byte> RawData, out List <Received_Data_Group> decoding_Group, out List <byte[]> decoding_Data)
        {
            decoding_Group = new List <Received_Data_Group>();
            decoding_Data  = new List <byte[]>();

            byte[] raw_data           = RawData.ToArray <byte>();
            byte[] out_data           = RawData.ToArray <byte>();
            int    segStartIndex      = 0;
            int    segEndIndex        = 0;
            Received_Data_Group group = Packet_Decoding(raw_data, out out_data, out segStartIndex, out segEndIndex);
        }
コード例 #2
0
        }//public static void Packet_Decoding_To_Group_And_Clear_List

        public static Received_Data_Group Packet_Decoding(byte[] receivingRawData, out byte[] decoding_Data, out int segStartIndex, out int segEndIndex)
        {
            segStartIndex = 0;
            segEndIndex   = 0;
            int  dataStartIndex = 0;
            int  dataEndIndex   = 0;
            bool formFound      = false;

            decoding_Data = new byte[0];

            Received_Data_Group status = Received_Data_Group.None;

            byte ONE_WIRE_PrecedingCheckCode_HighByte = (byte)(ONE_WIRE_PrecedingCheckCode >> 8);
            byte ONE_WIRE_PrecedingCheckCode_LowByte;
            byte ONE_WIRE_Data_PrecedingCode_HighByte = (byte)(ONE_WIRE_Data_PrecedingCode >> 8);
            byte ONE_WIRE_Data_PrecedingCode_LowByte;
            byte ONE_WIRE_EEPROM_Seg_PrecedingCode_HighByte = (byte)(ONE_WIRE_EEPROM_Seg_PrecedingCode >> 8);
            byte ONE_WIRE_EEPROM_Seg_PrecedingCode_LowByte;
            byte ONE_WIRE_EndCheckCode_HighByte = (byte)(ONE_WIRE_EndCheckCode >> 8);
            byte ONE_WIRE_EndCheckCode_LowByte;

            unchecked
            {
                ONE_WIRE_PrecedingCheckCode_LowByte       = (byte)ONE_WIRE_PrecedingCheckCode;
                ONE_WIRE_Data_PrecedingCode_LowByte       = (byte)ONE_WIRE_Data_PrecedingCode;
                ONE_WIRE_EEPROM_Seg_PrecedingCode_LowByte = (byte)ONE_WIRE_EEPROM_Seg_PrecedingCode;
                ONE_WIRE_EndCheckCode_LowByte             = (byte)ONE_WIRE_EndCheckCode;
            }
            for (int i = 0; i < receivingRawData.Length - 4; i++)
            {
                if ((receivingRawData[i] == ONE_WIRE_PrecedingCheckCode_HighByte) && (receivingRawData[i + 1] == ONE_WIRE_PrecedingCheckCode_LowByte))
                {
                    if ((receivingRawData[i + 2] == ONE_WIRE_Data_PrecedingCode_HighByte) &&
                        (receivingRawData[i + 3] == ONE_WIRE_Data_PrecedingCode_LowByte))
                    {
                        status         = Received_Data_Group.OneWire_SystemData_Group;
                        dataStartIndex = i + 4;
                        segStartIndex  = i;
                        break;
                    }
                    else if ((receivingRawData[i + 2] == ONE_WIRE_EEPROM_Seg_PrecedingCode_HighByte) &&
                             (receivingRawData[i + 3] == ONE_WIRE_EEPROM_Seg_PrecedingCode_LowByte))
                    {
                        status         = Received_Data_Group.OneWire_EEPROM_Group;
                        dataStartIndex = i + 4;
                        segStartIndex  = i;
                        break;
                    }
                    else
                    {
                        return(Received_Data_Group.None);
                    }
                }
            }//for
            if ((status == Received_Data_Group.OneWire_SystemData_Group) || (status == Received_Data_Group.OneWire_EEPROM_Group))
            {
                for (int j = dataStartIndex; j < receivingRawData.Length - 4; j++)
                {
                    if ((receivingRawData[j] == ONE_WIRE_EndCheckCode_HighByte) &&
                        (receivingRawData[j + 1] == ONE_WIRE_EndCheckCode_LowByte) &&
                        (receivingRawData[j + 2] == ONE_WIRE_EndCheckCode_HighByte) &&
                        (receivingRawData[j + 3] == ONE_WIRE_EndCheckCode_LowByte))
                    {
                        formFound    = true;
                        dataEndIndex = j - 1;
                        segEndIndex  = j + 3;
                        break;
                    }
                } //for
            }     //if
            if (formFound)
            {
                int length = dataEndIndex - dataStartIndex + 1;
                decoding_Data = new byte[length];
                Array.Copy(receivingRawData, dataStartIndex, decoding_Data, 0, length);
                if (data_CRC16_Check(decoding_Data, out decoding_Data))
                {
                    return(status);
                }
                else
                {
                    decoding_Data = new byte[0];
                    return(Received_Data_Group.None);
                }
            }
            return(Received_Data_Group.None);
        }//public static Received_Data_Group Packet_Decoding(byte[] receivingRawData, out byte[] decoding_Data)
コード例 #3
0
        public static void Packet_Decoding_To_Group_And_Clear_List(ref List <byte> RawData, out List <Received_Data_Group> decoding_Group, out List <byte[]> decoding_Data_List)
        {
            int segStartIndex  = 0;
            int segEndIndex    = 0;
            int dataStartIndex = 0;
            int dataEndIndex   = 0;

            byte [] decoding_Data = new byte[0];

            decoding_Group     = new List <Received_Data_Group>();
            decoding_Data_List = new List <byte[]>();
            int RemoveEndIndex = 0;


            byte ONE_WIRE_PrecedingCheckCode_HighByte = (byte)(ONE_WIRE_PrecedingCheckCode >> 8);
            byte ONE_WIRE_PrecedingCheckCode_LowByte;
            byte ONE_WIRE_Data_PrecedingCode_HighByte = (byte)(ONE_WIRE_Data_PrecedingCode >> 8);
            byte ONE_WIRE_Data_PrecedingCode_LowByte;
            byte ONE_WIRE_EEPROM_Seg_PrecedingCode_HighByte = (byte)(ONE_WIRE_EEPROM_Seg_PrecedingCode >> 8);
            byte ONE_WIRE_EEPROM_Seg_PrecedingCode_LowByte;
            byte ONE_WIRE_EndCheckCode_HighByte = (byte)(ONE_WIRE_EndCheckCode >> 8);
            byte ONE_WIRE_EndCheckCode_LowByte;

            unchecked
            {
                ONE_WIRE_PrecedingCheckCode_LowByte       = (byte)ONE_WIRE_PrecedingCheckCode;
                ONE_WIRE_Data_PrecedingCode_LowByte       = (byte)ONE_WIRE_Data_PrecedingCode;
                ONE_WIRE_EEPROM_Seg_PrecedingCode_LowByte = (byte)ONE_WIRE_EEPROM_Seg_PrecedingCode;
                ONE_WIRE_EndCheckCode_LowByte             = (byte)ONE_WIRE_EndCheckCode;
            }
            bool StartSrting           = false;
            bool EndSrting             = false;
            Received_Data_Group status = Received_Data_Group.None;

            byte[] receivingRawData = RawData.ToArray <byte>();
            for (int i = 0; i < receivingRawData.Length - 3; i++)
            {
                if ((StartSrting == false) && (receivingRawData[i] == ONE_WIRE_PrecedingCheckCode_HighByte) && (receivingRawData[i + 1] == ONE_WIRE_PrecedingCheckCode_LowByte))
                {
                    if ((receivingRawData[i + 2] == ONE_WIRE_Data_PrecedingCode_HighByte) &&
                        (receivingRawData[i + 3] == ONE_WIRE_Data_PrecedingCode_LowByte))
                    {
                        status         = Received_Data_Group.OneWire_SystemData_Group;
                        dataStartIndex = i + 4;
                        segStartIndex  = i;
                        StartSrting    = true;
                        //break;
                    }
                    else if ((receivingRawData[i + 2] == ONE_WIRE_EEPROM_Seg_PrecedingCode_HighByte) &&
                             (receivingRawData[i + 3] == ONE_WIRE_EEPROM_Seg_PrecedingCode_LowByte))
                    {
                        status         = Received_Data_Group.OneWire_EEPROM_Group;
                        dataStartIndex = i + 4;
                        segStartIndex  = i;
                        StartSrting    = true;
                        //break;
                    }
                }//if ((receivingRawData[i] == ONE_WIRE_PrecedingCheckCode_HighByte) && (receivingRawData[i + 1] == ONE_WIRE_PrecedingCheckCode_LowByte))
                if ((StartSrting) && (EndSrting == false))
                {
                    if ((receivingRawData[i] == ONE_WIRE_EndCheckCode_HighByte) &&
                        (receivingRawData[i + 1] == ONE_WIRE_EndCheckCode_LowByte) &&
                        (receivingRawData[i + 2] == ONE_WIRE_EndCheckCode_HighByte) &&
                        (receivingRawData[i + 3] == ONE_WIRE_EndCheckCode_LowByte))
                    {
                        dataEndIndex = i - 1;
                        segEndIndex  = i + 3;
                        EndSrting    = true;
                        //break;
                    }
                }//if ((status == Received_Data_Group.OneWire_SystemData_Group) || (status == Received_Data_Group.OneWire_EEPROM_Group))
                // Packet Form Found
                if (StartSrting && EndSrting)
                {
                    int length = dataEndIndex - dataStartIndex + 1;
                    decoding_Data = new byte[length];
                    Array.Copy(receivingRawData, dataStartIndex, decoding_Data, 0, length);
                    if (data_CRC16_Check(decoding_Data, out decoding_Data))
                    {
                        decoding_Group.Add(status);
                        decoding_Data_List.Add(decoding_Data);
                        RemoveEndIndex = segEndIndex;
                    }
                    status         = Received_Data_Group.None;
                    dataEndIndex   = 0;
                    dataStartIndex = 0;
                    StartSrting    = false;
                    EndSrting      = false;
                    segEndIndex    = 0;
                    segStartIndex  = 0;
                }
            }//for

            //Remove found Data
            if (decoding_Group.Count >= 1)
            {
                RawData.RemoveRange(0, RemoveEndIndex + 1);
            }
        }//public static void Packet_Decoding_To_Group_And_Clear_List