public static void initDevice(SdcSoftDevice device, byte[] bytes, int byteStartIndex)
        {
            int endIndex = byteStartIndex + device.getDeviceBytesLength();

            /**
             * 校验数据长度有效性
             */
            if (bytes.Length < endIndex)
            {
                return;
            }

            /**
             * byte 数组裁剪
             */
            byte[] current = new byte[device.getDeviceBytesLength()];

            for (int i = 0, j = byteStartIndex; j < endIndex; i++, j++)
            {
                current[i] = bytes[j];
            }

            /**
             * 填充设备信息
             */
            DevicePointMap devicePointMap = maps[device.getDeviceType()];

            device.handleDeviceNo(current);
            foreach (string key in devicePointMap.getPointMap().Keys)
            {
                ByteField f = devicePointMap.getPointMap()[key];
                device.handleByteField(f, current);
            }
        }
        /// <summary>
        /// 获得设备数据信息
        /// </summary>
        /// <param name="bytes"></param>
        /// <param name="typeName"></param>
        /// <returns></returns>
        public static SdcSoftDevice getDeviceByByte(byte[] bytes, String typeName)
        {
            SdcSoftDevice device = Activator.CreateInstance(null, string.Format(STRING_FORMAT_DEVICE_PATH, typeName)).Unwrap() as SdcSoftDevice;

            if (device.validateFalse(bytes.Length))
            {
                return(null);
            }
            device.handleDeviceNo(bytes);
            var map = Activator.CreateInstance(null, string.Format(STRING_FORMAT_DEVICE_MAP_PATH, typeName)).Unwrap() as DevicePointMap;

            if (map == null)
            {
                return(null);
            }
            var pointMap = map.getPointMap();

            foreach (string key in pointMap.Keys)
            {
                ByteField f = pointMap[key];
                device.handleByteField(f, bytes);
            }
            return(device);
        }