LibCodec8 1.0.0
dotnet add package LibCodec8 --version 1.0.0
NuGet\Install-Package LibCodec8 -Version 1.0.0
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="LibCodec8" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LibCodec8" Version="1.0.0" />
<PackageReference Include="LibCodec8" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LibCodec8 --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: LibCodec8, 1.0.0"
#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.
#:package LibCodec8@1.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LibCodec8&version=1.0.0
#tool nuget:?package=LibCodec8&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
About
Decoder for Codec 8 and Codec 8 Extended (TCP and UDP supported) formats that are used by certain Teltonika devices.
How to use
To decode Codec8 TCP
using Codec8;
string input = "000000000000003608010000016B40D8EA30010000000000000000000000000000000105021503010101425E0F01F10000601A014E0000000000000000010000C7CF";
(GenericDecodeResult result, object valueOrError) = Codec8Decoder.ParseHexadecimalString(input);
if (result == GenericDecodeResult.SuccessCodec8)
{
Codec8Frame frame = (Codec8Frame)valueOrError;
}
To decode Codec8 Extended TCP
using Codec8;
string input = "000000000000004A8E010000016B412CEE000100000000000000000000000000000000010005000100010100010011001D00010010015E2C880002000B000000003544C87A000E000000001DD7E06A00000100002994";
(GenericDecodeResult result, object valueOrError) = Codec8ExtendedDecoder.ParseHexadecimalString(input);
if (result == GenericDecodeResult.SuccessCodec8Extended)
{
Codec8ExtendedFrame frame = (Codec8ExtendedFrame)valueOrError;
}
To decode Codec8 UDP
using Codec8;
string input = "003DCAFE0105000F33353230393330383634303336353508010000016B4F815B30010000000000000000000000000000000103021503010101425DBC000001";
(GenericDecodeResult result, object valueOrError) = Codec8UdpDecoder.ParseHexadecimalString(input);
if (result == GenericDecodeResult.SuccessCodec8Udp)
{
(UdpChannelHeader header, AvlDataEncapsulated avlDataEncapsulated, Codec8FrameNoCRC frame) = ((UdpChannelHeader a, AvlDataEncapsulated b, Codec8FrameNoCRC c))valueOrError;
}
To decode Codec8 Extended UDP
using Codec8;
string input = "005FCAFE0107000F3335323039333038363430333635358E010000016B4F831C680100000000000000000000000000000000010005000100010100010011009D00010010015E2C880002000B000000003544C87A000E000000001DD7E06A000001";
(GenericDecodeResult result, object valueOrError) = Codec8ExtendedUdpDecoder.ParseHexadecimalString(input);
if (result == GenericDecodeResult.SuccessCodec8ExtendedUdp)
{
(UdpChannelHeader header, AvlDataEncapsulated avlDataEncapsulated, Codec8ExtendedFrameNoCRC frame) = ((UdpChannelHeader a, AvlDataEncapsulated b, Codec8ExtendedFrameNoCRC c))valueOrError;
}
If you don't know what kind of data you have, you can use generic decoder
using Codec8;
string input = "000000000000004A8E010000016B412CEE000100000000000000000000000000000000010005000100010100010011001D00010010015E2C880002000B000000003544C87A000E000000001DD7E06A00000100002994";
(GenericDecodeResult result, object valueOrError) = GenericDecoder.ParseHexadecimalString(input);
if (result == GenericDecodeResult.SuccessCodec8)
{
Codec8Frame frame = (Codec8Frame)valueOrError;
}
else if (result == GenericDecodeResult.SuccessCodec8Extended)
{
Codec8ExtendedFrame frame = (Codec8ExtendedFrame)valueOrError;
}
else if (result == GenericDecodeResult.SuccessCodec8Udp)
{
(UdpChannelHeader header, AvlDataEncapsulated avlDataEncapsulated, Codec8FrameNoCRC frame) = ((UdpChannelHeader a, AvlDataEncapsulated b, Codec8FrameNoCRC c))valueOrError;
}
else if (result == GenericDecodeResult.SuccessCodec8ExtendedUdp)
{
(UdpChannelHeader header, AvlDataEncapsulated avlDataEncapsulated, Codec8ExtendedFrameNoCRC frame) = ((UdpChannelHeader a, AvlDataEncapsulated b, Codec8ExtendedFrameNoCRC c))valueOrError;
}
else
{
Console.Writeline($"Expected success, but got: {valueOrError}");
}
or if your target is .NET 11 or newer
using Codec8;
{
string input = "000000000000004A8E010000016B412CEE000100000000000000000000000000000000010005000100010100010011001D00010010015E2C880002000B000000003544C87A000E000000001DD7E06A00000100002994";
GenericParseResult result = GenericDecoder.GenericParseHexadecimalString(input.Replace("-", string.Empty));
HandleGenericParseResult(result);
}
private static int HandleGenericParseResult(GenericParseResult result) => result switch
{
// Your code goes here
Codec8Frame frame => HandleCodec8Frame(frame),
Codec8ExtendedFrame frameExtended => HandleCodec8ExtendedFrame(frameExtended),
Codec8Udp udp => HandleCodec8Udp(udp),
Codec8ExtendedUdp udpExtended => HandleCodec8ExtendedUdp(udpExtended),
ParseErrorInfo error => HandleParseError(error),
};
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. net11.0 is compatible. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- No dependencies.
-
net11.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.