SPDFileTranslator 2.1.1

dotnet add package SPDFileTranslator --version 2.1.1
NuGet\Install-Package SPDFileTranslator -Version 2.1.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SPDFileTranslator" Version="2.1.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SPDFileTranslator --version 2.1.1
#r "nuget: SPDFileTranslator, 2.1.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SPDFileTranslator as a Cake Addin
#addin nuget:?package=SPDFileTranslator&version=2.1.1

// Install SPDFileTranslator as a Cake Tool
#tool nuget:?package=SPDFileTranslator&version=2.1.1

To implement the package use the following instructions.

Please note that to handle the exceptions, you will need to add a global exception handler (or similar) to your project and prefereably implement ILogger to track any exceptions.

Implementing the SPD file translator

string inputFile = "C:\\35860011.SPD";

SPDData spdData = new SPDTranslatorImplementation(inputFile);
await spdData.ReadSPDDataAsync();

This will return the translated data and you can do what you need to with it.

Implementing Grouping

The groupings are for use in charting and reporting, they are not saved in any way. Saving groupings can be achieved in your application.

Please take note of the Enum below.

public enum SPDReadingValuesGroupingTypeEnum
{
    Minutes = 1,
    FifteenMinutes = 2,
    ThirtyMinutes = 3,
    Hourly = 4,
    Daily = 5,  
}

From the SPDData model get the serial number as follows:

int serialNumber = spdData.SPDHeaderValues.SPDSerialNumber;

Use the required enum value and the device serial number to create the required grouping.

SPDDataGroupingsImplementation grouping = new SPDDataGroupingsImplementation(spdData.ReadingValues, serialNumber);
var group = grouping.GroupCurrentByPhaseByTime(SPDReadingValuesGroupingTypeEnum.Minutes);

Saving the Data

To save the data you can save it as XML, JSON or CSV.

This will write the SPDData values and will not write the groupings.

WARNING! The XML and JSON files can be very large up to 200MB so it is reccomended these are processed once as the memeory usage is significant.

The invalid character check has been turned off for the XML file creation. There is a check in code to remove non XML characters, but there maybe some charaters such as null terminations which are not caught, so please check for additional invalid characters in your processing.

string outputRoot = "C:\\SPCData";
SPDTranslatorImplementationSaveFiles saveFiles = new SPDTranslatorImplementationSaveFiles(spdData, outputRoot);
await saveFiles.SaveCsvDataAsync();
await saveFiles.SaveJsonDataAsyn();
await saveFiles.SaveXMLDataAsync();
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.1.1 46 4/24/2024

Fixed XML ICollection bug