簡介
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 文件的腳本定位和讀取它們。
要將 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 演示腳本打印語句的示例: