public List <DataEntry> dataEntryList; // список Записей(дата...массив данных) //private StringBuilder sb = new StringBuilder(); public BinFileObject(string pathToBinFile) { try { using (FileStream fs = File.Open(pathToBinFile, FileMode.Open, FileAccess.Read, FileShare.None)) { headerSize = Marshal.SizeOf(typeof(BinFileHeader)); headerByteArray = new byte[headerSize]; fs.Read(headerByteArray, 0, headerSize); binFileHeader = (BinFileHeader)Serializer.RawDeserialize(headerByteArray, 0, typeof(BinFileHeader)); dataEntryList = new List <DataEntry>(); //Console.WriteLine(binFileHeader.ToString()); measureCount = GetMeasureCount(binFileHeader); int fileOffset = (2 * this.measureCount) + 6; byte[] b = new byte[fileOffset]; fs.Seek(headerSize, SeekOrigin.Begin); //fs.Read(b, 0, b.Length); string dateString = ""; int z = 0; while (fs.Read(b, 0, b.Length) > 0) { ConvertByteArrayToDateTime(b, out dateString); //dataEntryList.Add(new DataEntry($"{dateString} {ConvertByteArrayToString(b)}")); dataEntryList.Add(new DataEntry($"{dateString} {ConvertByteArrayToString(b)}")); //sb.AppendLine(BitConverter.ToString(b)); //if (z++ > 10) break; } //DateTime dt1 = new DateTime(2018,07,26); //var sel = from c in dataEntryList where c.dt > dt1 select c; //foreach (var item in sel) //{ // Console.WriteLine($"{item.dt}\t{item.data[1]}\t{item.data[3]} "); //} //Console.WriteLine(this.dataEntryList[1].ToString()); fs.Close(); } } catch (Exception) { throw new Exception("Pizda v constructore!"); } }
public int MeasureCount(BinFileHeader ph) { if (ph.onemr == 1) { measureCount++; } for (int i = 0; i < 16; i++) { if ((ph.ust[i] & 0x0f) != 0) { measureCount++; } if ((ph.ust[i] & 0x10) != 0) { measureCount++; } if ((ph.osn[i] & 0x0f) != 0) { measureCount++; } if ((ph.osn[i] & 0x10) == 0x10) { measureCount++; } //if ((ph.osn[i] & 0x20) == 0x20) measureCount++; if ((ph.dop[i] & 0x0f) != 0) { measureCount++; } if ((ph.dop[i] & 0x10) == 0x10) { measureCount++; } //if ((ph.dop[i] & 0x20) == 0x20) measureCount++; } return(measureCount); }
public static ushort GetMeasureCount(BinFileHeader bfh) { ushort temp = 0; if (bfh.onemr == 1) { temp++; } for (int i = 0; i < 16; i++) { if ((bfh.ust[i] & 0x0f) != 0) { temp++; //TO DO: сделай функцию ЕБА!!! } if ((bfh.ust[i] & 0x10) != 0) { temp++; } if ((bfh.osn[i] & 0x0f) != 0) { temp++; } if ((bfh.osn[i] & 0x10) != 0) { temp++; } if ((bfh.dop[i] & 0x0f) != 0) { temp++; } if ((bfh.dop[i] & 0x10) != 0) { temp++; } } return(temp); }