示例#1
0
        public short Calc_ChecksumOfAckPacketObj(AckClass PktObj)
        {
            short checksum = 0;

            foreach (byte chData in PktObj.DeviceId)
            {
                checksum += chData;
            }
            foreach (byte chData in PktObj.Password)
            {
                checksum += chData;
            }
            foreach (byte chData in PktObj.TypeId)
            {
                checksum += chData;
            }
            foreach (byte chData in PktObj.Packet_sno)
            {
                checksum += chData;
            }
            foreach (byte chData in PktObj.Continue_Sts)
            {
                checksum += chData;
            }
            foreach (byte chData in PktObj.Data)
            {
                checksum += chData;
            }
            /* Condition should be added if and only if checksum is greater than 65535(2bytes).*/
            //   checksum &= 0xff;
            return(checksum);
        }
示例#2
0
        private byte[] ObjectToByteArray(AckClass obj)
        {
            try
            {
                /* Need to place the bytes[] into Object */
                /* Get the data bytes length */
                int array_len = 0;
                array_len = Global.Packet_overhead_len; // Asumming Packet has no data.

                int data_bytes_len = obj.Data.Length;   // Packet_overhead_len is Fixed for all packets but data changes.

                if (data_bytes_len > 0)                 /* Packet has Some Databyte need to change the length */
                {
                    array_len = array_len + data_bytes_len;
                }
                /* Creating new Array */
                byte[] Ack_bytes = new byte[array_len];

                int Packet_Checksum_StartIdx = Global.Packet_data_start_Idx + data_bytes_len;
                /* Frame Packet Object from byte[] data */

                Array.Copy(obj.packetHeader, 0, Ack_bytes, Global.Packet_Header_start_Idx, Global.Packet_Header_len);           // Copy PacketHeader
                Array.Copy(obj.Packet_Length, 0, Ack_bytes, Global.PacketLength_start_Idx, Global.PacketLength_len);            // Copy Length of Packet
                Array.Copy(obj.DeviceId, 0, Ack_bytes, Global.Packet_DeviceID_start_Idx, Global.Packet_DeviceID_len);           // Copy Device Id of Packet
                Array.Copy(obj.Password, 0, Ack_bytes, Global.Packet_Password_start_Idx, Global.Packet_Password_len);           // Copy System Password of Packet
                Array.Copy(obj.TypeId, 0, Ack_bytes, Global.Packet_TypeId_start_Idx, Global.Packet_TypeId_len);                 // Copy  TYpeID of Packet
                Array.Copy(obj.Packet_sno, 0, Ack_bytes, Global.Packet_Sno_start_Idx, Global.Packet_Sno_len);                   // Copy Packet SNo of Packet
                Array.Copy(obj.Continue_Sts, 0, Ack_bytes, Global.Packet_ContinueSts_start_Idx, Global.Packet_ContinueSts_len); // Copy Continue_Sts of th Packet
                Array.Copy(obj.Data, 0, Ack_bytes, Global.Packet_data_start_Idx, data_bytes_len);                               // Copy Data  of Packet

                Array.Copy(obj.Checksum, 0, Ack_bytes, Packet_Checksum_StartIdx, Global.Packet_Chcksum_len);                    // Copy Checksum  of Packet

                return(Ack_bytes);                                                                                              // Returning Ack bytes
            }
            catch (Exception ex)
            {
                DateTime now_time = DateTime.Now;
                string   time     = Convert.ToString(now_time);
                Global.AppendTexttoFile(Global.exception_filepath, "Exception Occured in ObjectToByteArray:  " + ex.Message + time); // Logging the Execptions Ocuured
                return(null);
            }
        }
示例#3
0
        private byte[] FrameCommunicationAck(PacketClass PacketObj)
        {
            try
            {
                AckClass AckPacket = new AckClass();
                AckPacket.packetHeader = Global.CommInitResponse_pkt_header;
                // Length ?? 18
                // AckPacket.Packet_Length = PacketObj.Packet_Length;  { Should not do like this beacuse it is going to change Original object }
                PacketObj.Packet_Length.CopyTo(AckPacket.Packet_Length, 0);

                PacketObj.DeviceId.CopyTo(AckPacket.DeviceId, 0);

                PacketObj.Password.CopyTo(AckPacket.Password, 0);

                Global.CommInitAckPkt_TypeID.CopyTo(AckPacket.TypeId, 0);

                Global.CommInitAckPkt_SNo.CopyTo(AckPacket.Packet_sno, 0);

                Global.CommInitAckContinue_Sts.CopyTo(AckPacket.Continue_Sts, 0);

                AckPacket.Data = new byte[] { }; // Empty Data Feild

                short checksum = Calc_ChecksumOfAckPacketObj(AckPacket);

                AckPacket.Checksum = BitConverter.GetBytes(checksum); // Getting Bytes from checksum..

                AckPacket = Reverse_AckPacketBytes(AckPacket);        // Reversing the AckPacket Object Is Causing the Device Id in Reverse


                byte[] Final_bytes = ObjectToByteArray(AckPacket); // Serializing Object to Byte Array.

                return(Final_bytes);                               // Returning Serialozed Byte array.
            }
            catch (Exception ex)
            {
                DateTime now_time = DateTime.Now;
                string   time     = Convert.ToString(now_time);
                Global.AppendTexttoFile(Global.exception_filepath, "Exception Ocuured While FrameCommunicationAck:  " + ex.Message + time); // Logging the Execptions Ocuured
                return(null);
            }
        }
示例#4
0
        public AckClass Reverse_AckPacketBytes(AckClass Ack_obj)
        {
            try
            {
                Array.Reverse(Ack_obj.packetHeader); // Reversing the Packet Header Bytes
                Array.Reverse(Ack_obj.Packet_Length);
                Array.Reverse(Ack_obj.DeviceId);
                Array.Reverse(Ack_obj.Password);
                Array.Reverse(Ack_obj.TypeId);
                Array.Reverse(Ack_obj.Packet_sno);
                Array.Reverse(Ack_obj.Continue_Sts);
                Array.Reverse(Ack_obj.Checksum);

                return(Ack_obj);
            }
            catch (Exception ex)
            {
                DateTime now_time = DateTime.Now;
                string   time     = Convert.ToString(now_time);
                Global.AppendTexttoFile(Global.exception_filepath, "Exception Occured in Reverse_PacketBytes:  " + ex.Message + time); // Logging the Execptions Ocuured
                return(null);
            }
        }