/// <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); }
//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); }
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); }
/// <summary> /// 删除存档中某个Key及其数据 /// </summary> public static void DeleteRecordKey(RecordDataType recordData) { EZSave.Instance.DeleteRecordKey(recordData.ToString()); }
/// <summary> /// 非缓存保存数据 /// </summary> public static void Save <T>(RecordDataType dataType, T value) { EZSave.Instance.SaveRecord(dataType.ToString(), value); }
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; } } }