Пример #1
0
        private void AddFormat(ref byte[] datum)
        {
            //Get Format and Length part's Length
            byte byteFormat     = datum[0];
            int  iLenAddrLength = byteFormat & 0x3;

            HComEnums.ItemFormat itemFormat = (HComEnums.ItemFormat)(byteFormat >> 2 & 0x3F);
            datum = datum.Skip(1).ToArray();

            //Get Data Length
            byte[] byteLength = new byte[4];
            for (int i = 0; i < iLenAddrLength; i++)
            {
                byteLength[i] = datum[i];
            }
            datum = datum.Skip(iLenAddrLength).ToArray();
            int iLength = BitConverter.ToInt32(byteLength, 0);

            //Get Data
            MessageItem mi = null;

            if (itemFormat == HComEnums.ItemFormat.L)
            {
                mi = new MessageItem("", iLength);
            }
            else
            {
                mi = MessageItem.MakeMessageItem(itemFormat, ref datum, iLength);
            }

            AppendXML(mi);
        }
Пример #2
0
        //For All type but List. From Remote
        public static MessageItem MakeMessageItem(HComEnums.ItemFormat type, ref byte[] bytes, int len)
        {
            MessageItem mi = new MessageItem();

            mi.type = type;
            mi.name = "";
            object formatValue = null;

            switch (type)
            {
            case HComEnums.ItemFormat.A: formatValue = Encoding.ASCII.GetString(bytes, 0, len); mi.len = len;  break;

            case HComEnums.ItemFormat.B: formatValue = bytes[0]; mi.len = 1;  break;

            case HComEnums.ItemFormat.Bool: formatValue = bytes[0] > 0 ? true : false; mi.len = 1; break;

            case HComEnums.ItemFormat.F4: formatValue = BitConverter.ToSingle(bytes.Take(4).Reverse().ToArray(), 0); mi.len = 4; break;

            case HComEnums.ItemFormat.F8: formatValue = BitConverter.ToDouble(bytes.Take(8).Reverse().ToArray(), 0); mi.len = 8; break;

            case HComEnums.ItemFormat.I1: formatValue = (sbyte)BitConverter.ToChar(bytes, 0); mi.len = 1; break;

            case HComEnums.ItemFormat.I2: formatValue = BitConverter.ToInt16(bytes.Take(2).Reverse().ToArray(), 0); mi.len = 2; break;

            case HComEnums.ItemFormat.I4: formatValue = BitConverter.ToInt32(bytes.Take(4).Reverse().ToArray(), 0); mi.len = 4; break;

            case HComEnums.ItemFormat.I8: formatValue = BitConverter.ToInt64(bytes.Take(8).Reverse().ToArray(), 0); mi.len = 8; break;

            case HComEnums.ItemFormat.JIS: formatValue = Encoding.ASCII.GetString(bytes, 0, len); mi.len = len; break;

            case HComEnums.ItemFormat.L: break;

            case HComEnums.ItemFormat.U1: formatValue = bytes[0]; mi.len = 1; break;

            case HComEnums.ItemFormat.U2: formatValue = BitConverter.ToUInt16(bytes.Take(2).Reverse().ToArray(), 0); mi.len = 2; break;

            case HComEnums.ItemFormat.U4: formatValue = BitConverter.ToUInt32(bytes.Take(4).Reverse().ToArray(), 0); mi.len = 4; break;

            case HComEnums.ItemFormat.U8: formatValue = BitConverter.ToUInt64(bytes.Take(8).Reverse().ToArray(), 0); mi.len = 8; break;

            case HComEnums.ItemFormat.W: formatValue = BitConverter.ToUInt16(bytes.Take(2).Reverse().ToArray(), 0); mi.len = 2; break;
            }
            mi.value = formatValue;

            bytes = bytes.Skip(mi.len).ToArray();

            return(mi);
        }
Пример #3
0
        private bool AddFormat(int length, HComEnums.ItemFormat itemFormat)
        {
            HComEnums.NumberOfLengthByte lengthByte = GetNumberOfLengthByte(length);
            if (lengthByte == HComEnums.NumberOfLengthByte.Overbound)
            {
                return(false);
            }

            byte ret = (byte)((byte)itemFormat << 2 | (byte)lengthByte);

            msgData.Add(ret);

            for (byte b = (byte)lengthByte; b > 0; b--)
            {
                byte retLen = (byte)(length >> (b - 1) * 8 & 0xFF);
                msgData.Add(retLen);
            }

            return(true);
        }
Пример #4
0
 //For List Type
 public MessageItem(string name, int len)
 {
     this.type = HComEnums.ItemFormat.L;
     this.name = name;
     this.len  = len;
 }
Пример #5
0
 //For All type but List
 public MessageItem(HComEnums.ItemFormat type, string name, object value)
 {
     this.type  = type;
     this.name  = name;
     this.value = value;
 }