简介
ATFX API 由两个 DLL 文件组成,可以与自定义软件集成以直接读取和提取 ATFX 文件中的数据。这篇文章将展示一个简单的 C# 代码示例,用于提取和创建具有纳秒精度的 DateTimeNano 对象。
DateTimeNano 类是来自 Microsoft 的 DateTime 类的子类,具有将 DateTime 的精度扩展到纳秒的附加属性和功能。
有关打开和读取 ATFX 文件的简单方法,请参阅ATFX API 在 C# 中读取 ATFX 文件一文。
有关如何在类中实现以下代码段和属性的更多详细信息,请参阅 ATFX API 手册和提供的 C# 演示代码。该软件包可以从我们的Programming Corner下载。
以纳秒为单位提取和创建精确度的时间数据
要从 ATFX 文件创建 DateTimeNano 对象,需要将 CreateTime记录属性和NVHMeasurement类放入构造函数中用于访问 NanoSecondElapsed 。
下面的代码示例显示了 DateTimeNano 类中的创建过程和几个新属性,例如 ms_us_ns,它以 000/000/000 格式显示毫秒、微秒和纳秒。
RecordingManager.Manager.OpenRecording(recordingPath, out IRecording rec);
// Create several ATFX API classes to extract specific data to be used in creating the DateTimeNano
ODSNVHATFXMLRecording nvhRec = rec as ODSNVHATFXMLRecording;
NVHMeasurement nvhMeasurement = nvhRec.Measurement as NVHMeasurement;
NVHEnvironment nvhEnvironment = nvhRec.Environment as NVHEnvironment;
// Create a DateTimeNano object with UTC Time Format
createTimeUTC = new DateTimeNano(nvhRec.Environment.GetUTCTime(nvhRec.RecordingProperty.CreateTime), nvhMeasurement.NanoSecondElapsed);
// DateTimeNano object properties
string isNanoTime = string.Format ("IsNanoTime: ", createTimeUTC.IsNanoTime);
string nanoseconds = string.Format ("NanoSeconds: ", createTimeUTC.ms_us_ns);
string totalnanosecond = string.Format ("TotalNanosec: ", createTimeUTC.TotalNanoSeconds);
string nanoString = string.Format ("ToNanoString(): ", createTimeUTC.ToNanoString());
// Math in extracting exact Millisecond, Microsecond and Nanosecond data
int ms = (int) (createTimeUTC.ms_us_ns / 1e6);
int us = (int) (createTimeUTC.ms_us_ns / 1e3 % 1e3);
int ns = (int) (createTimeUTC.ms_us_ns % 1e3);
string customFormat = string.Format("Custom Format – yyyy/mm/dd/hh/mm/ss/ms/us/ns: ", createTimeUTC.Year, createTimeUTC.Month, createTimeUTC.Day, createTimeUTC.Hour, createTimeUTC.Minute, createTimeUTC.Second, ms, us, ns);
以下屏幕截图是以UTC格式显示的ATFX文件的DateTimeNano的示例: