public static void ListOccurrencesAndMessages(PartsLib.Tools.MDRF.Reader.MDRFFileReader reader) { Console.WriteLine("File: '{0}' size: {1} kB{2}", Path.GetFileName(reader.FilePath), reader.FileLength * (1.0 / 1024), reader.FileIndexInfo.FileWasProperlyClosed ? "" : " NotProperlyClosed"); int lineCount = 0; bool listMessages = select.IsSet(Select.ListMessages); bool listOccurrences = select.IsSet(Select.ListOccurrences); ReadAndProcessFilterSpec filterSpec = new ReadAndProcessFilterSpec() { EventHandlerDelegate = (sender, pceData) => ProcessContentEventHandlerDelegate2(sender, pceData, ref lineCount), PCEMask = ProcessContentEvent.None.Set(ProcessContentEvent.Occurrence, listOccurrences).Set(ProcessContentEvent.Message | ProcessContentEvent.Error, listMessages), }; currentReader.ReadAndProcessContents(filterSpec); Console.WriteLine(); }
public static void ListSelectedMDRFParts(PartsLib.Tools.MDRF.Reader.MDRFFileReader reader) { Console.WriteLine("File: '{0}' size: {1} kB{2}", Path.GetFileName(reader.FilePath), reader.FileLength * (1.0 / 1024), reader.FileIndexInfo.FileWasProperlyClosed ? "" : " NotProperlyClosed"); if (select.IsSet(Select.ListInfo)) { Console.WriteLine(" Date First: {0:o}", reader.DateTimeInfo.UTCDateTime.ToLocalTime()); Console.WriteLine(" Date Last: {0:o}", reader.FileIndexInfo.FileIndexRowArray.Select(row => row.FirstBlockDateTime + (row.LastBlockDeltaTimeStamp - row.FirstBlockDeltaTimeStamp).FromSeconds()).Max().ToLocalTime()); Console.WriteLine(" Elapsed Hours: {0:f6}", reader.FileIndexInfo.LastBlockInfo.BlockDeltaTimeStamp / 3600.0); foreach (var key in new string[] { "Environment.MachineName", "Environment.OSVersion" }) { currentReader.LibraryInfo.NVS.ConsoleWriteLineKeyIfPresent(key); } if (!select.IsSet(Select.ListGroupInfo)) { Console.WriteLine(" Groups: {0}", String.Join(",", reader.GroupInfoArray.Select(gi => gi.Name).ToArray())); } if (!select.IsSet(Select.ListOccurrenceInfo)) { Console.WriteLine(" Occurrences: {0}", String.Join(",", reader.OccurrenceInfoArray.Select(oi => oi.Name).ToArray())); } } if (select.IsSet(Select.ListIndex)) { Console.WriteLine("Index NumRows: {0} RowSizeDivisor: {1}", reader.FileIndexInfo.NumRows, reader.FileIndexInfo.RowSizeDivisor); List <int> emptyRowIndexList = new List <int>(); for (int rowIdx = 0; rowIdx < reader.FileIndexInfo.NumRows; rowIdx++) { FileIndexRowBase row = reader.FileIndexInfo.FileIndexRowArray.SafeAccess(rowIdx); if (row == null || row.IsEmpty) { emptyRowIndexList.Add(rowIdx); } else { WriteEmptyRows(" EmptyRow(s):", emptyRowIndexList); Console.WriteLine(" RowIdx:{0:d4} Offset:{1} RFBits:${2:X4} URFBits:${3:X8} 1stDTS:{4:f3} lastDTS:{5:f3} 1stDT:{6:yyyyMMdd_HHmmssfff}", rowIdx, row.FileOffsetToStartOfFirstBlock, (ulong)row.FileIndexRowFlagBits, row.FileIndexUserRowFlagBits, row.LastBlockDeltaTimeStamp, row.FirstBlockDeltaTimeStamp, row.FirstBlockDateTime); if (row.FileIndexRowFlagBits != FileIndexRowFlagBits.None) { Console.WriteLine(" RFBits:{0}", row.FileIndexRowFlagBits); } } } WriteEmptyRows(" EmptyRow(s):", emptyRowIndexList); Console.WriteLine(" LastBlock: type: {0} size: {1}", reader.FileIndexInfo.LastBlockInfo.FixedBlockTypeID, reader.FileIndexInfo.LastBlockInfo.BlockTotalLength); } if (select.IsSet(Select.ListGroupInfo)) { if (reader.GroupInfoArray.SafeCount() > 0) { foreach (var gi in reader.GroupInfoArray) { Console.WriteLine("GroupInfo '{0}' id:{1} fileID:{2} URFBits:${3:x4} points:{4}", gi.Name, gi.GroupID, gi.FileID, gi.FileIndexUserRowFlagBits, GetClippedGPIListString(gi, clipAfterLength: 55)); } } else { Console.WriteLine("No Groups are defined"); } } if (select.IsSet(Select.ListOccurrenceInfo)) { if (reader.OccurrenceInfoArray.SafeCount() > 0) { foreach (var oi in reader.OccurrenceInfoArray) { Console.WriteLine("OccurrenceInfo '{0}' id:{1} fileID:{2} URFBits:${3:x4} ", oi.Name, oi.OccurrenceID, oi.FileID, oi.FileIndexUserRowFlagBits); } } else { Console.WriteLine("No Occurrences are defined"); } } Console.WriteLine(); }