简介
ATFX API C# DLL 文件可用于三种支持的编程语言:Python、Matlab 和 LabVIEW。需要安装允许 Python 与 .NET 公共语言运行时集成的特定包,以便 C# DLL 文件在 Python 中工作。有几个包可以做到这一点,例如 IronPython 和 Python.NET。在此示例中,将使用 Python.NET。
请参阅 ATFX API 手册和提供的 C# 和 Python 演示代码,以获取相关如何在类中实现以下代码部分和属性的更多详细信息。从我们的Programming Corner页面下载包。
有时代码读取正确的文件路径并且DLL 文件也存在,但代码会显示错误,指出它找不到 DLL 文件。一种解决方案是单击 DLL 文件属性中标记为Unblock的框,该框随附以下说明,“此文件来自另一台计算机,可能被阻止以帮助保护此计算机。”。解锁 DLL 文件应该允许依赖 DLL 文件的脚本定位和读取它们。
安装 Python.NET 以导入 C# DLL 文件
要将 C# DLL 文件导入 Python,请安装 Python.NET,以便 Python 可以与 .NET 公共语言运行时通信。
该软件包可以通过“pip install pythonnet”或从他们的 github 页面安装:https ://github.com/pythonnet/pythonnet 。请注意在 github 页面上运行 Python.NET 所需的 Python 版本。
安装 Python.NET 后,必须使用以下“import clr”来添加对 .NET 程序集和 ATFX API DLL 文件的引用。然后可以导入来自 ATFX API 的命名空间。
#—Pythonnet clr import
import clr
parentPath = "C:\\Users\\KevinCheng\\ATFX API Package v1.4\\"
clr.AddReference(parentPath + "CI.ATFX.Reader.dll")
clr.AddReference(parentPath + "Common.dll")
#—C# .NET imports & dll imports
from ASAM.ODS.ATFXML import *
from ASAM.ODS.NVH import *
from Common import *
from Common.Spider import *
from EDM.Recording import *
from EDM.RecordingInterface import *
from EDM.Utils import *
打开 ATFX 文件并提取各种数据
此处或提供的 Python 演示脚本中显示的大部分代码都是从 C# 演示代码再应用的。 C# ATFX 文件中的ATFX API Reading 代码示例将在此处再应用,以展示如何在 Python 中打开 ATFX 文件并提取数据。
recordingPath = "C:\\Users\\KevinCheng\\Downloads\\gps test example\\"
recordingPathRegular = recordingPath + "SIG0020.atfx"
#OpenRecording(string, out IRecording)
# dummy data is required for the OpenRecording for it to correctly output data
dummyTest1, recording = RecordingManager.Manager.OpenRecording(recordingPathRegular, None)
print("\nRecording Properties\n")
print(recording.RecordingProperty.CreateTime)
print(recording.RecordingProperty.Instruments)
print(recording.RecordingProperty.RecordingName)
print("\nSignal 1 Properties\n")
print(recording.Signals[0].Properties.SamplingRate)
print(recording.Signals[0].Properties.SignalName)
print(recording.Signals[0].Properties.SoftwareVersion)
print("\nRecording GPS Properties\n")
recording = ODSNVHATFXMLRecording(recordingPathRegular)
nvhMeasurement = recording.Measurement
nvhEnvironment = recording.Environment
print("GPS Enabled: " nvhMeasurement.GPSEnabled)
print ("Longitude: ", nvhMeasurement.Longitude)
print ("Latitude: ", nvhMeasurement.Latitude)
print ("Altitude: ", nvhMeasurement.Altitude)
print ("Nanoseconds Elapsed: ", nvhMeasurement.NanoSecondElapsed)
print("Created Time (UTC): ",
recording.Environment.GetUTCTime(recording.RecordingProperty.CreateTime))
上面的代码应打印以下屏幕截图:
以下屏幕截图是提供的 Python 演示脚本打印语句的示例: