Skip to content

Commit ff40227

Browse files
committed
work on tia binary reading
1 parent e0aeb0f commit ff40227

File tree

27 files changed

+264
-215
lines changed

27 files changed

+264
-215
lines changed

DotNetSiemensPLCToolBoxLibrary.TIAV13/Step7ProjectV13.cs

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -118,75 +118,6 @@ Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
118118

119119
private object tiaExport;
120120
private Type tiaExportType;
121-
122-
123-
internal Dictionary<TiaObjectId, TiaFileObject> TiaObjects = new Dictionary<TiaObjectId, TiaFileObject>();
124-
125-
internal void BinaryParseTIAFile()
126-
{
127-
using (var sourceStream = new FileStream(DataFile, FileMode.Open, FileAccess.Read, System.IO.FileShare.ReadWrite))
128-
{
129-
var buffer = new byte[Marshal.SizeOf(typeof(TiaFileHeader))];
130-
sourceStream.Read(buffer, 0, buffer.Length);
131-
132-
GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
133-
TiaFileHeader header = (TiaFileHeader)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(TiaFileHeader));
134-
handle.Free();
135-
TiaMarker? lastMarker = null;
136-
137-
while (sourceStream.Position < sourceStream.Length)
138-
{
139-
if (TiaHelper.IsMarker(sourceStream))
140-
{
141-
var buffer2 = new byte[Marshal.SizeOf(typeof(TiaMarker))];
142-
sourceStream.Read(buffer2, 0, buffer2.Length);
143-
GCHandle handle2 = GCHandle.Alloc(buffer2, GCHandleType.Pinned);
144-
TiaMarker marker = (TiaMarker)Marshal.PtrToStructure(handle2.AddrOfPinnedObject(), typeof(TiaMarker));
145-
handle2.Free();
146-
147-
lastMarker = marker;
148-
}
149-
else
150-
{
151-
var buffer3 = new byte[Marshal.SizeOf(typeof(TiaObjectHeader))];
152-
sourceStream.Read(buffer3, 0, buffer3.Length);
153-
GCHandle handle3 = GCHandle.Alloc(buffer3, GCHandleType.Pinned);
154-
TiaObjectHeader hd = (TiaObjectHeader)Marshal.PtrToStructure(handle3.AddrOfPinnedObject(), typeof(TiaObjectHeader));
155-
handle3.Free();
156-
157-
var bytes = new byte[hd.Size - buffer3.Length];
158-
sourceStream.Read(bytes, 0, bytes.Length);
159-
var id = hd.GetTiaObjectId();
160-
if (!TiaObjects.ContainsKey(id))
161-
{
162-
TiaObjects.Add(id, new TiaFileObject(hd, bytes));
163-
164-
var size = Marshal.SizeOf(typeof (TiaObjectHeader))+4+BitConverter.ToInt32(bytes, 0)+1;
165-
if (hd.Size != size || bytes[bytes.Length - 1] != 0xff)
166-
{
167-
//Fehler ???
168-
}
169-
170-
171-
//var strm = new MemoryStream(bytes);
172-
//var dec = TiaCompression.DecompressStream(strm);
173-
//var rd = new StreamReader(dec);
174-
//var wr = rd.ReadToEnd();
175-
}
176-
else
177-
{
178-
//Todo: look why this happens, and how TIA Handles this!!
179-
//Console.WriteLine("double Id:" + id.ToString());
180-
}
181-
}
182-
}
183-
184-
var rootId = new TiaObjectId(TiaFixedRootObjectInstanceIds.RootObjectCollectionId);
185-
var rootObjects = new TiaRootObjectList(TiaObjects[rootId]);
186-
var projectid = rootObjects.TiaRootObjectEntrys.FirstOrDefault(x => x.ObjectId.TypeId == (int)TiaTypeIds.Siemens_Automation_DomainModel_ProjectData).ObjectId;
187-
var projectobj = TiaObjects[projectid];
188-
}
189-
}
190121

191122
public override ProjectType ProjectType
192123
{

DotNetSiemensPLCToolBoxLibrary.TIAV14SP1/Step7ProjectV14SP1.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,6 @@ Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
150150

151151
private object tiaExport;
152152
private Type tiaExportType;
153-
154-
155-
internal Dictionary<TiaObjectId, TiaFileObject> TiaObjects = new Dictionary<TiaObjectId, TiaFileObject>();
156153

157154
public override ProjectType ProjectType
158155
{

DotNetSiemensPLCToolBoxLibrary.TIAV15/Step7ProjectV15.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,6 @@ Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
111111
private object tiaExport;
112112
private Type tiaExportType;
113113

114-
115-
internal Dictionary<TiaObjectId, TiaFileObject> TiaObjects = new Dictionary<TiaObjectId, TiaFileObject>();
116-
117114
public override ProjectType ProjectType
118115
{
119116
get { return ProjectType.Tia15; }

DotNetSiemensPLCToolBoxLibrary.TIAV15_1/Step7ProjectV15_1.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,6 @@ Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
180180
private object tiaExport;
181181
private Type tiaExportType;
182182

183-
184-
internal Dictionary<TiaObjectId, TiaFileObject> TiaObjects = new Dictionary<TiaObjectId, TiaFileObject>();
185-
186183
public override ProjectType ProjectType
187184
{
188185
get { return ProjectType.Tia15_1; }

DotNetSiemensPLCToolBoxLibrary.TIAV16/Step7ProjectV16.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,6 @@ Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
180180
private object tiaExport;
181181
private Type tiaExportType;
182182

183-
184-
internal Dictionary<TiaObjectId, TiaFileObject> TiaObjects = new Dictionary<TiaObjectId, TiaFileObject>();
185-
186183
public override ProjectType ProjectType
187184
{
188185
get { return ProjectType.Tia16; }

DotNetSiemensPLCToolBoxLibrary.TIAV17/Step7ProjectV17.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,6 @@ Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
180180
private object tiaExport;
181181
private Type tiaExportType;
182182

183-
184-
internal Dictionary<TiaObjectId, TiaFileObject> TiaObjects = new Dictionary<TiaObjectId, TiaFileObject>();
185-
186183
public override ProjectType ProjectType
187184
{
188185
get { return ProjectType.Tia17; }

DotNetSiemensPLCToolBoxLibrary.TIAV18/Step7ProjectV18.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,6 @@ Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
180180
private object tiaExport;
181181
private Type tiaExportType;
182182

183-
184-
internal Dictionary<TiaObjectId, TiaFileObject> TiaObjects = new Dictionary<TiaObjectId, TiaFileObject>();
185-
186183
public override ProjectType ProjectType
187184
{
188185
get { return ProjectType.Tia18; }

DotNetSiemensPLCToolBoxLibrary.TIAV19/Step7ProjectV19.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,6 @@ Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
180180
private object tiaExport;
181181
private Type tiaExportType;
182182

183-
184-
internal Dictionary<TiaObjectId, TiaFileObject> TiaObjects = new Dictionary<TiaObjectId, TiaFileObject>();
185-
186183
public override ProjectType ProjectType
187184
{
188185
get { return ProjectType.Tia19; }

DotNetSiemensPLCToolBoxLibrary.sln

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Microsoft Visual Studio Solution File, Format Version 12.00
32
# Visual Studio Version 17
43
VisualStudioVersion = 17.4.33110.190
@@ -92,6 +91,18 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetSiemensPLCToolBoxLibr
9291
EndProject
9392
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetSiemensPLCToolBoxLibrary.TIAV19", "DotNetSiemensPLCToolBoxLibrary.TIAV19\DotNetSiemensPLCToolBoxLibrary.TIAV19.csproj", "{ADC06ADE-EB03-4422-A7B4-4291AD994D91}"
9493
EndProject
94+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{66A4ADD6-8EE2-49BD-B939-C5E69CAA3A9E}"
95+
ProjectSection(SolutionItems) = preProject
96+
.github\FUNDING.yml = .github\FUNDING.yml
97+
EndProjectSection
98+
EndProject
99+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{5FC399A5-1C21-480A-987F-16388079F245}"
100+
ProjectSection(SolutionItems) = preProject
101+
.github\workflows\build.yml = .github\workflows\build.yml
102+
.github\workflows\build-pull.yml = .github\workflows\build-pull.yml
103+
.github\workflows\release.yml = .github\workflows\release.yml
104+
EndProjectSection
105+
EndProject
95106
Global
96107
GlobalSection(SolutionConfigurationPlatforms) = preSolution
97108
Debug|Any CPU = Debug|Any CPU
@@ -777,6 +788,7 @@ Global
777788
HideSolutionNode = FALSE
778789
EndGlobalSection
779790
GlobalSection(NestedProjects) = preSolution
791+
{5FC399A5-1C21-480A-987F-16388079F245} = {66A4ADD6-8EE2-49BD-B939-C5E69CAA3A9E}
780792
{D5525AD8-E501-45A8-BEA5-F9BDB468B427} = {A4F11331-531B-4A7C-84B2-E319658AE2B8}
781793
{1182E730-FA4F-4712-8B8B-6432848C3048} = {A4F11331-531B-4A7C-84B2-E319658AE2B8}
782794
{9EB7BDB5-FDEE-466A-B2FF-63F087B160CE} = {A4F11331-531B-4A7C-84B2-E319658AE2B8}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System;
2+
using System.IO;
3+
4+
namespace DotNetSiemensPLCToolBoxLibrary.General
5+
{
6+
public static class BinaryReaderExtensions
7+
{
8+
public static Guid ReadGuid(this BinaryReader binaryReader)
9+
{
10+
return new Guid(binaryReader.ReadBytes(16));
11+
}
12+
13+
public static Version ReadVersion(this BinaryReader binaryReader)
14+
{
15+
return new Version(binaryReader.ReadInt32(), binaryReader.ReadInt32(), binaryReader.ReadInt32(), binaryReader.ReadInt32());
16+
}
17+
}
18+
}

0 commit comments

Comments
 (0)