Example #1
0
        private static string GetStringValue(ArraySegment <byte> arraySegment, DataType dataType)
        {
            DateTime AvlEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
            var      subArray = arraySegment.Array.Skip(arraySegment.Offset).Take(arraySegment.Count).ToArray();

            switch (dataType)
            {
            // Packet Data types
            case DataType.TransferId:
            case DataType.DataPacketCount:
            case DataType.Priority:
            case DataType.Satellites:
                return(subArray[0].ToString());

            case DataType.Latitude:
            case DataType.Longitude:
                Array.Reverse(subArray);
                return(BitConverter.ToInt32(subArray, 0).ToString());

            case DataType.Altitude:
            case DataType.Angle:
            case DataType.Speed:
                Array.Reverse(subArray);
                return(BitConverter.ToInt16(subArray, 0).ToString());

            case DataType.Timestamp:
                Array.Reverse(subArray);
                return(AvlEpoch.AddMilliseconds(BitConverter.ToInt64(subArray, 0)).ToString());

            // Tcp types
            case DataType.VehicleID:
            case DataType.PacketDataArrayLength:
            case DataType.Error:
                Array.Reverse(subArray);
                var signed32 = BitConverter.ToInt32(subArray, 0).ToString();
                var unsigned = BitConverter.ToUInt32(subArray, 0).ToString();
                return(signed32 == unsigned ? signed32 : string.Format("{0} / {1}", signed32, unsigned));

            // Udp types
            case DataType.Length:
            case DataType.DeviceId:
            case DataType.ImeiLength:
                Array.Reverse(subArray);
                var signed16   = BitConverter.ToInt16(subArray, 0).ToString();
                var unsigned16 = BitConverter.ToUInt16(subArray, 0).ToString();
                return(signed16 == unsigned16 ? signed16 : string.Format("{0} / {1}", signed16, unsigned16));

            case DataType.PacketType:
            case DataType.PacketId:
                return(subArray[0].ToString());

            case DataType.Imei:
                return(Encoding.UTF8.GetString(subArray));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #2
0
        private string GetDataTypeDisplayName()
        {
            var type = DataType.GetType();

            var members = type.GetMember(DataType.ToString());

            if (members.Length == 0)
            {
                return(DataType.ToString());
            }

            var member     = members[0];
            var attributes = member.GetCustomAttributes(typeof(DisplayAttribute), false);

            if (attributes.Length == 0)
            {
                return(DataType.ToString());
            }

            var attribute = (DisplayAttribute)attributes[0];

            return(attribute.GetName());
        }
Example #3
0
 public BaseData(DataType dataType, ArraySegment <byte> arraySegment)
 {
     DataType     = dataType;
     Value        = GetStringValue(arraySegment, dataType);
     ArraySegment = arraySegment;
 }