Exemple #1
0
    /// <summary>
    /// 加载某类型数据
    /// </summary>
    public static void LoadData(RecordDataType dataType)
    {
        switch (dataType)
        {
        case RecordDataType.PlayerData: LoadPlayerData(); break;

        case RecordDataType.DateData: LoadDateData(); break;
        }
    }
    public string GetNameString(RecordDataType dataType)
    {
        switch (dataType)
        {
        case RecordDataType.PlayTime:
            return("게임 시간");

        case RecordDataType.FallCount:
            return("떨어진 횟수");

        case RecordDataType.JumpCount:
            return("점프 횟수");

        case RecordDataType.MovedDistance:
            return("움직인 거리");

        case RecordDataType.HitCount:
            return("장애물 맞은 횟수");
        }

        return(null);
    }
    public string GetValueString(RecordDataType dataType)
    {
        switch (dataType)
        {
        case RecordDataType.PlayTime:
            return((Mathf.Floor(PlayTime * 100f) / 100f).ToString() + "s");

        case RecordDataType.FallCount:
            return(FallCount.ToString());

        case RecordDataType.JumpCount:
            return(JumpCount.ToString());

        case RecordDataType.MovedDistance:
            return(MovedDistance.ToString("#.#") + "M");

        case RecordDataType.HitCount:
            return(HitCount.ToString());
        }

        return(null);
    }
Exemple #4
0
        //public byte[] Tag
        //{
        //    get
        //    {
        //        //if (ForSerialize)
        //        //    return tag;

        //        IDescriptor descriptor = GetDescriptor(this);
        //        tag = descriptor.Tag;

        //        return tag;
        //    }
        //    set
        //    {
        //        //this.ForSerialize = true;
        //        //this.tag = value;

        //        //IDescriptor descriptor = SetDescriptor(this);

        //        //tag = descriptor.Tag;
        //        //this.ForSerialize = false;
        //    }
        //}

        #endregion

        public void Serialize(BinaryWriter writer)
        {
            CountCompression.Serialize(writer, (ulong)ID);
            writer.Write(Name);

            CountCompression.Serialize(writer, (ulong)StructureType);

            KeyDataType.Serialize(writer);
            RecordDataType.Serialize(writer);

            CountCompression.Serialize(writer, (ulong)CreateTime.Ticks);
            CountCompression.Serialize(writer, (ulong)ModifiedTime.Ticks);
            CountCompression.Serialize(writer, (ulong)AccessTime.Ticks);

            if (Tag == null)
            {
                CountCompression.Serialize(writer, 0);
            }
            else
            {
                CountCompression.Serialize(writer, (ulong)Tag.Length + 1);
                writer.Write(Tag);
            }
        }
        private bool getRecordValueByParam(Params param, List <Record> records, out float value)
        {
            if (records == null && records.Count == 0)
            {
                WriteToLog("getRecordValueByParam: список записей пуст");
                value = 0f;
                return(false);
            }

            if ((int)param >= records.Count)
            {
                WriteToLog("getRecordValueByParam: параметра не существует в списке записей: " + param.ToString());
                value = 0f;
                return(false);
            }

            Record record = records[(int)param];

            byte[] data = record.dataBytes.ToArray();
            Array.Reverse(data);
            string hex_str = BitConverter.ToString(data).Replace("-", string.Empty);

            //коэффициент, на который умножается число, полученное со счетчика
            float COEFFICIENT = 1;

            RecordDataType rdt          = RecordDataType.NO_DATA;
            int            dataBytesCnt = GetLengthAndTypeFromDIF(record.DIF, out rdt);

            switch (param)
            {
            case Params.ENERGY:
            {
                COEFFICIENT = (float)Math.Pow(10, -3);
                break;
            }

            case Params.VOLUME:
            {
                COEFFICIENT = (float)Math.Pow(10, -2);
                break;
            }

            case Params.VOLUME_FLOW:
            case Params.TEMP_INP:
            case Params.TEMP_OUTP:
            case Params.TEMP_DIFF:
            {
                COEFFICIENT = (float)Math.Pow(10, -1);
                break;
            }

            default:
            {
                break;
            }
            }

            int tmpVal = -1;

            value = tmpVal;

            try
            {
                if (dataBytesCnt == 2)
                {
                    short tmp = BitConverter.ToInt16(record.dataBytes.ToArray(), 0);
                    tmpVal = tmp;
                }
                else if (dataBytesCnt == 4)
                {
                    tmpVal = BitConverter.ToInt32(record.dataBytes.ToArray(), 0);
                }
                else
                {
                    string mgs = String.Format("Не прописано преобразование параметра {0}, исходная строка: {1}, преобразуемое кол-во байт: {2}",
                                               param.ToString(), hex_str, dataBytesCnt);
                    WriteToLog(mgs);

                    return(false);
                }
            } catch (Exception ex)
            {
                string mgs = String.Format("Ошибка преобразования байт параметра {0}, исходная строка: {1}, преобразуемое кол-во байт: {2}, исключение {3}",
                                           param.ToString(), hex_str, dataBytesCnt, ex.Message);
                WriteToLog(mgs);

                return(false);
            }


            value = (float)Math.Round(tmpVal * COEFFICIENT, 2, MidpointRounding.AwayFromZero);
            return(true);
        }
Exemple #6
0
        private void InternalSerialize(BinaryWriter writer)
        {
            lock (SyncRoot)
            {
                writer.Write(VERSION);

                writer.Write(ID);
                if (ID == Locator.MIN.ID)
                {
                    return;
                }

                writer.Write(IsDeleted);

                writer.Write(Name);
                writer.Write(checked ((byte)StructureType));

                //data types
                KeyDataType.Serialize(writer);
                RecordDataType.Serialize(writer);

                //types
                if (!DataTypeUtils.IsAnonymousType(KeyType))
                {
                    writer.Write(KeyType.FullName);
                }
                else
                {
                    writer.Write("");
                }

                if (!DataTypeUtils.IsAnonymousType(RecordType))
                {
                    writer.Write(RecordType.FullName);
                }
                else
                {
                    writer.Write("");
                }

                //key & record members
                WriteMembers(writer, keyMembers);
                WriteMembers(writer, recordMembers);

                //times
                writer.Write(CreateTime.Ticks);
                writer.Write(ModifiedTime.Ticks);
                writer.Write(AccessTime.Ticks);

                //tag
                if (Tag == null)
                {
                    writer.Write(false);
                }
                else
                {
                    writer.Write(true);
                    CountCompression.Serialize(writer, (ulong)Tag.Length);
                    writer.Write(Tag);
                }
            }
        }
        public int getLengthAndTypeFromDIF(byte DIF, out RecordDataType type)
        {
            int data = DIF & 0x0F; //00001111b

            switch (data)
            {
            case 0:
            {
                type = RecordDataType.NO_DATA;
                return(0);
            }

            case 1:
            {
                type = RecordDataType.INTEGER;
                return(1);
            }

            case 2:
            {
                type = RecordDataType.INTEGER;
                return(2);
            }

            case 3:
            {
                type = RecordDataType.INTEGER;
                return(3);
            }

            case 4:
            {
                type = RecordDataType.INTEGER;
                return(4);
            }

            case 5:
            {
                WriteToLog("getLengthAndTypeFromDIF: 5, real");
                type = RecordDataType.REAL;
                return(4);
            }

            case 6:
            {
                type = RecordDataType.INTEGER;
                return(6);
            }

            case 7:
            {
                type = RecordDataType.INTEGER;
                return(8);
            }

            case 8:
            {
                //selection for readout
                WriteToLog("getLengthAndTypeFromDIF: 8, selection for readout");
                type = RecordDataType.SELECTION_FOR_READOUT;
                return(0);
            }

            case 9:
            {
                type = RecordDataType.BCD;
                return(1);
            }

            case 10:
            {
                type = RecordDataType.BCD;
                return(2);
            }

            case 11:
            {
                type = RecordDataType.BCD;
                return(3);
            }

            case 12:
            {
                type = RecordDataType.BCD;
                return(4);
            }

            case 13:
            {
                WriteToLog("getLengthAndTypeFromDIF: 13, variable length");
                type = RecordDataType.VARIABLE_LENGTH;
                return(-1);
            }

            case 14:
            {
                type = RecordDataType.BCD;
                return(6);
            }

            case 15:
            {
                WriteToLog("getLengthAndTypeFromDIF: 15, special functions");
                type = RecordDataType.SPECIAL_FUNСTIONS;
                return(-1);
            }

            default:
            {
                type = RecordDataType.NO_DATA;
                return(-1);
            }
            }
        }
        private bool getRecordValueByParam(Params param, List <Record> records, out float value)
        {
            if (records == null && records.Count == 0)
            {
                WriteToLog("getRecordValueByParam: список записей пуст");
                value = 0f;
                return(false);
            }

            if ((int)param >= records.Count)
            {
                WriteToLog("getRecordValueByParam: параметра не существует в списке записей: " + param.ToString());
                value = 0f;
                return(false);
            }

            Record record = records[(int)param];

            byte[] data = record.dataBytes.ToArray();
            Array.Reverse(data);
            string hex_str = BitConverter.ToString(data).Replace("-", string.Empty);

            //коэффициент, на который умножается число, полученное со счетчика
            float COEFFICIENT = 1;

            RecordDataType rdt          = RecordDataType.NO_DATA;
            int            dataBytesCnt = GetLengthAndTypeFromDIF(record.DIF, out rdt);

            switch (param)
            {
            case Params.ENERGY:
            case Params.ENERGY2:
            case Params.POWER:
            {
                COEFFICIENT = (float)Math.Pow(10, 1);
                break;
            }

            case Params.VOLUME:
            {
                COEFFICIENT = (float)Math.Pow(10, -2);
                break;
            }

            case Params.VOLUME_FLOW:
            {
                COEFFICIENT = (float)Math.Pow(10, -3);
                break;
            }

            case Params.TEMP_INP:
            case Params.TEMP_OUTP:
            {
                COEFFICIENT = (float)Math.Pow(10, -2);
                break;
            }

            default:
            {
                break;
            }
            }

            int tmpVal = -1;

            value = tmpVal;


            // все данные, кроме метки времени - BCD, поэтому преобразовываем все и применяем коэффициенты

            try
            {
                tmpVal = BCDToNumber(data);
            }
            catch (Exception ex)
            {
                string mgs = String.Format("Ошибка преобразования байт параметра {0}, исходная строка: {1}, преобразуемое кол-во байт: {2}, исключение {3}",
                                           param.ToString(), hex_str, dataBytesCnt, ex.Message);
                WriteToLog(mgs);

                return(false);
            }

            try
            {
                value = (float)Math.Round(tmpVal * COEFFICIENT, 2, MidpointRounding.AwayFromZero);
            } catch (Exception ex)
            {
                string mgs = String.Format("Ошибка при домножении на коэффициент {0} значения {1}, исходная строка: {2}, исключение {3}",
                                           COEFFICIENT, tmpVal, hex_str, ex.Message);
                WriteToLog(mgs);

                return(false);
            }


            return(true);
        }
Exemple #9
0
 /// <summary>
 /// 删除存档中某个Key及其数据
 /// </summary>
 public static void DeleteRecordKey(RecordDataType recordData)
 {
     EZSave.Instance.DeleteRecordKey(recordData.ToString());
 }
Exemple #10
0
 /// <summary>
 /// 非缓存保存数据
 /// </summary>
 public static void Save <T>(RecordDataType dataType, T value)
 {
     EZSave.Instance.SaveRecord(dataType.ToString(), value);
 }
Exemple #11
0
 public int getLengthAndTypeFromDIF(byte DIF, out RecordDataType type)
 {
     int data = DIF & 0x0F; //00001111b
     switch (data)
     {
         case 0:
             {
                 type = RecordDataType.NO_DATA;
                 return 0;
             }
         case 1:
             {
                 type = RecordDataType.INTEGER;
                 return 1;
             }
         case 2:
             {
                 type = RecordDataType.INTEGER;
                 return 2;
             }
         case 3:
             {
                 type = RecordDataType.INTEGER;
                 return 3;
             }
         case 4:
             {
                 type = RecordDataType.INTEGER;
                 return 4;
             }
         case 5:
             {
                 WriteToLog("getLengthAndTypeFromDIF: 5, real");
                 type = RecordDataType.REAL;
                 return 4;
             }
         case 6:
             {
                 type = RecordDataType.INTEGER;
                 return 6;
             }
         case 7:
             {
                 type = RecordDataType.INTEGER;
                 return 8;
             }
         case 8:
             {
                 //selection for readout
                 WriteToLog("getLengthAndTypeFromDIF: 8, selection for readout");
                 type = RecordDataType.SELECTION_FOR_READOUT;
                 return 0;
             }
         case 9:
             {
                 type = RecordDataType.BCD;
                 return 1;
             }
         case 10:
             {
                 type = RecordDataType.BCD;
                 return 2;
             }
         case 11:
             {
                 type = RecordDataType.BCD;
                 return 3;
             }
         case 12:
             {
                 type = RecordDataType.BCD;
                 return 4;
             }
         case 13:
             {
                 WriteToLog("getLengthAndTypeFromDIF: 13, variable length");
                 type = RecordDataType.VARIABLE_LENGTH;
                 return -1;
             }
         case 14:
             {
                 type = RecordDataType.BCD;
                 return 6;
             }
         case 15:
             {
                 WriteToLog("getLengthAndTypeFromDIF: 15, special functions");
                 type = RecordDataType.SPECIAL_FUNСTIONS;
                 return -1;
             }
         default:
             {
                 type = RecordDataType.NO_DATA;
                 return -1;
             }
     }
 }