Laden...

Zugriff auf eine Sequenz Datei (.seq, Kamera-Daten)

Erstellt von Tackles vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.655 Views
T
Tackles Themenstarter:in
7 Beiträge seit 2013
vor 10 Jahren
Zugriff auf eine Sequenz Datei (.seq, Kamera-Daten)

Hallo,
ich soll ein aktuell bestehendes Programm das via VBA und Excel arbeitet neu schreiben in C#. Bisher ist es so das nach einer Aufnahme mit einer Kamera von FLIR die Daten in einer Sequenz (.seq) Datei gespeichert werden danach wird diese via Makro in Excel eingelesen und verarbeitet. Da die Excel Variante langsam und Fehlerhaft ist soll ich das nun neu schreiben.

Ich habe nun schon seit ein paar Monaten (habe mehrere Projekte) das Problem das ich es einfach nicht schaffe auf die Sequenz Datei zuzugreifen damit ich an die Daten rankomme. Die Datei ist fast 8Mb groß und aufgrund der Datenschutzrichtlinien meiner Firma kann ich diese leider hier nicht zur Verfügung stellen.

Ich kann hier allerdings den Code aus der aktuellen VBA Variante posten ich hoffe das ihr damit vielleicht etwas anfangen könnt.
Danach kommt noch Code das ist dann aber nur das schreiben der bereits eingelesen Informationen in Excel und erstellen von Diagramme. Die Deklaration der Variablen habe ich auch weg gelassen da es nur Integer, Double oder String Variablen sind was dem Kontext aber leicht zu entnehmen ist.

Hoffe ihr könnt mir hier weiterhelfen komme von alleine nicht weiter 😦

Dim sess                    As Object

Sub Auswertung()
    program_name = "IR Autograb   V. 3.1
    xls_path = "C:\Thermographie\Auswertungen\"
    Cam_vers = "SC 2000"
    Call InputFrames
    Call GrabValues
    Call Store_File
End Sub


Sub InputFrames()

    'Eingabe Sequenzen
    seq_anzahl = InputBox("Wieviele Sequenzen möchten sie auswerten ?", program_name)
    'Eingabe Sequenzname
    seq_set = 0
    Do Until seq_set = seq_anzahl
        seq_set = seq_set + 1
        seq_title(seq_set) = InputBox("Name von Sequenz " & seq_set & "?", program_name)
    Loop
    'Eingabe Areas
    area_anzahl = InputBox("Wieviele Areas enthalten die Sequenzen ?", program_name)
    'Eingabe Areaname
    x_set = 0
    Do Until x_set = area_anzahl
        x_set = x_set + 1
        area_name(x_set) = InputBox("Name von Area " & x_set & "?", program_name)
    Loop
    'Eingabe Spots
    spot_anzahl = InputBox("Wieviele Hotspots enthalten die Sequenzen ?", program_name)
    'Eingabe Spotname
    x_set = 0
    Do Until x_set = spot_anzahl
        x_set = x_set + 1
        spot_name(x_set) = InputBox("Name von Spot " & x_set & "?", program_name)
    Loop
    'Eingabe Anzahl Messwerte
    seq_set = 0
    Do
        seq_set = seq_set + 1
        messwert_anzahl(seq_set) = InputBox("Wieviele Meßwerte möchten sie aus Sequenz " & _
        seq_set & " (" & seq_title(seq_set) & ") übertragen ?", program_name)
    Loop Until seq_set = seq_anzahl
    'Eingabe des Dateinamens
    xls_filename = InputBox("Unter welchem Namen soll die Auswertung abgelegt werden ?", _
    program_name) & ".xls"
End Sub

Sub GrabValues()
        
seq_set = 0     'Start der Routine
Do
    seq_set = seq_set + 1
    anfx = 2
    anfy = 8
    
    'Selektieren der neuen Sequenz
    Sheets("Stand-by Bilder").Activate
    ActiveSheet.Shapes(seq_set).Select
    Selection.Verb Verb:=xlPrimary
    Range("A1").Select
    Set sess = Worksheets("Stand-by Bilder").OLEObjects(seq_set).Object
    sess.GotoFirstImage
    seq_filename = sess.GetNamedValue("filename")
    seq_date = sess.GetNamedValue("Date")
    
    'Erstellen und Beschriften der Wertetabelle
    If seq_set = 1 Then Sheets.Add After:=Worksheets("Diagramme") Else Sheets.Add _
     After:=Worksheets("Sequenz " & seq_set - 1)
    Sheets("Tabelle" & (seq_set)).Name = "Sequenz " & (seq_set)
    Sheets("Sequenz " & seq_set).Activate
    Cells(anfy - 7, anfx - 1) = "Sequenz:"
    Cells(anfy - 7, anfx).Value = sess.GetNamedValue("filename")
    Cells(anfy - 6, anfx - 1) = "Titel:"
    Cells(anfy - 6, anfx).Value = seq_title(seq_set)
    Cells(anfy - 5, anfx - 1) = "Aufnahme"
    Cells(anfy - 5, anfx).Value = sess.GetNamedValue("Date")
    Cells(anfy - 4, anfx - 1) = "Start"
    Cells(anfy - 4, anfx).Value = sess.GetNamedValue("time")
    Cells(anfy - 3, anfx - 1) = "Bilder"
    Cells(anfy - 3, anfx).Value = (messwert_anzahl(seq_set))
    Cells(anfy + 1, anfx - 1) = "Maxtemp/°C"
    Cells(anfy, anfx - 1) = "Meßpunkte:"
   
    ZeIndex = 8
    SpIndex = 3
    x_set = 0       'Areanamen in Sequenzsheet und SG-Daten einfügen
    Do Until x_set = area_anzahl
        x_set = x_set + 1
        Sheets("Sequenz " & seq_set).Activate
        Cells(ZeIndex, SpIndex).Value = area_name(x_set)
        Sheets("SG-Daten").Activate
        Cells(x_set + 17, 1).Value = area_name(x_set)
        SpIndex = SpIndex + 1
    Loop
    x_set = 0       'Spotnamen in Sequenzsheet und SG-Daten einfügen
    Do Until x_set = spot_anzahl
        x_set = x_set + 1
        Sheets("Sequenz " & seq_set).Activate
        Cells(ZeIndex, SpIndex).Value = spot_name(x_set)
        Sheets("SG-Daten").Activate
        Cells(x_set + 17 + area_anzahl, 1).Value = spot_name(x_set)
        SpIndex = SpIndex + 1
    Loop
   
    
    
    Sheets("Sequenz " & seq_set).Activate
       
    'Einfügen der Messwerte
    SpIndex = anfx      'Set=2(Spalte B)
    ZeIndex = anfy + 3  'Set=11(Zeile11)
    
    messwert_set = 0
    Do
        messwert_set = messwert_set + 1
        
        Cells(ZeIndex, SpIndex - 1).Value = sess.GetNamedValue("time")
        Cells(ZeIndex, SpIndex).FormulaR1C1 = "=RC[-1]-R" & anfx + 9 & "C1"
  
        
        'Einfügen Areas
        x_set = 0
        Do Until x_set = area_anzahl
            x_set = x_set + 1
            SpIndex = SpIndex + 1
            area_temp = sess.GetNamedValue("ar" & x_set & ".max")
            Cells(ZeIndex, SpIndex).Value = area_temp
        Loop
        
        'Einfügen Spots
        x_set = 0
        Do Until x_set = spot_anzahl
            x_set = x_set + 1
            SpIndex = SpIndex + 1
            spot_temp = sess.GetNamedValue("sp" & x_set & ".temp")
            Cells(ZeIndex, SpIndex).Value = spot_temp
        Loop
        
        Cells(1, 100).Value = ZeIndex       'Diagrammsteuerwert EndZeile
        Cells(2, 100).Value = SpIndex       'Diagrammsteuerwert EndSpalte
        Cells(3, 100).Value = anfy          'Diagrammsteuerwert AnfangsZeile
        Cells(4, 100).Value = anfx          'Diagrammsteuerwert AnfangsSpalte
        Cells(5, 100).Value = seq_anzahl    'Diagrammsteuerwert Anzahl der Sequenzen
        
        ZeIndex = ZeIndex + 1
        SpIndex = anfx
        sess.StepForward
    Loop Until messwert_set = messwert_anzahl(seq_set)
    
    'Einfügen der maxtemp in Sequenzsheet und SG-Daten
    ZeIndex = 9
    x_set = 0
    Do
        x_set = x_set + 1
        SpIndex = anfx + x_set
        Cells(ZeIndex, SpIndex).FormulaR1C1 = "=MAX(R[1]C:R[" & _
        messwert_anzahl(seq_set) & "]C)"
        max_temp = Range(Cells(ZeIndex, SpIndex), Cells(ZeIndex, SpIndex)).Value
        Sheets("SG-Daten").Activate
        Range(Cells(17, seq_set + 1), Cells(17, seq_set + 1)).Value = seq_title(seq_set)
        Range(Cells(x_set + 17, seq_set + 1), Cells(x_set + 17, seq_set + 1)). _
        Value = max_temp                 '& " °C" (mit °C anzeigen)
        Range(Cells(x_set + 17, seq_set + 1), Cells(x_set + 17, seq_set + 1)).Font.Size = 14
        Sheets("Sequenz " & seq_set).Activate
    Loop Until x_set = area_anzahl + spot_anzahl
    Call SG_Daten
    Call Frame("A1:B5")
Loop Until seq_set = seq_anzahl
  
End Sub
Sub SG_Daten()
Sheets("SG-Daten").Activate
Cells(12, 2).Value = Date           'Datum einfügen
Cells(10, 2).Value = Cam_vers       'Kameraversion einfügen
Cells(8, 2).Value = xls_filename   'Dateiname einfügen
esp = seq_anzahl + 1
eZe = area_anzahl + spot_anzahl + 17
NumAlphaInterpreter
Frame ("A17:" & x & eZe)
Sheets("Sequenz " & seq_set).Activate
End Sub
5.658 Beiträge seit 2006
vor 10 Jahren

Hi Tackles,

ich befürchte, auf diese Frage wirst du keine zufriedenstellende Antwort bekommen. Das liegt zum einen daran, daß dein Text nahezu unlesbar (so ganz ohne Satzzeichen). Zum anderen ist die einzige Information über die fraglichen Dateien (daß sie etw 8 MB groß sind) nicht wirklich von Interesse. Was dort drin steht, und welche Informationen du auslesen willst, enthältst du uns ja vor. Und es ist nicht ersichtlich, wo das Problem eigentlich liegt. Geht es dir darum, welche Informationen in der Datei enthalten sind, wie man Daten aus Dateien liest, oder wie man die Daten auswertet?

Nachdem du angeblich schon monatelang an dem Problem arbeitest, solltest du eigentlich in der Lage sein, mehr als ein paar Zeilen Excel/VBA-Code zu posten. Siehe dazu auch unsere Forenregeln: [Hinweis] Wie poste ich richtig? (Punkt 5).

Christian

Weeks of programming can save you hours of planning

T
Tackles Themenstarter:in
7 Beiträge seit 2013
vor 10 Jahren

Hi Sparkle,
mein Problem ist das ich zwar weiß das in der Sequenz Datei Bilder und die Messwerte gespeichert sind, ich aber nicht weiß wie die darin gespeichert sind.
Des weiteren habe ich keine Ahnung wie ich überhaupt an die Daten rankommen soll, für viele gängige Formate wie Excel gibt es ja Bibliotheken aber ich gehe mal stark davon aus das es das hier nicht gibt.

Ich habe bisher einfach nur im Internet nach C#, Sequenz und solchen Tags gesucht in der Hoffnung ein ähnliches Thema zu finden. Ich kann auch mit VBA Programmieren und verstehe auch was der damalige Coder gemacht hat aber ich kann den Code in welchem er auf die Datei zugreift nicht in C# übersetzen.

"Set sess = Worksheets("Stand-by Bilder").OLEObjects(seq_set).Object"

Nachdem er hier die Datei ausgewählt hat kann er jetzt einfach mit Befehlen (ich vermute die werden von der Datei selber gestellt) durch die Bilder Navigieren.

"sess.GotoFirstImage"

Mein Grundsätzliches Problem ist also nicht wie Werte ich die Daten aus sondern eher wie komme ich überhaupt an diese ran.

Was genau würde sich ändern wenn ich die Datei online stellen würde die Datei kann man mit keinem Editor öffnen da die Information alle kryptisch und unlesbar sind.

W
872 Beiträge seit 2005
vor 10 Jahren

Du solltest einfach mal bei FLIR nachfragen - wird bestimmt ein SDK geben.

T
Tackles Themenstarter:in
7 Beiträge seit 2013
vor 10 Jahren

Du solltest einfach mal bei FLIR nachfragen - wird bestimmt ein SDK geben.

Habe ich bereits versucht aber keine Antwort bekommen wobei mein Betreuer schon davor gesagt hat, dass die Chancen das die Kamera noch unterstützt wird sehr gering sind, da diese schon relativ alt ist und auch nicht mehr auf der HP zu finden ist.

F
10.010 Beiträge seit 2004
vor 10 Jahren

OLEObjects ist doch schon der entscheidende Begriff.

Wenn Excel die Datei öffnen und verarbeiten kann, ist es doch wirklich nicht schwer da etwas zu zu finden.

T
Tackles Themenstarter:in
7 Beiträge seit 2013
vor 10 Jahren

Hallo Zelle,
das habe ich schonmal versucht allerdings muss ich gestehen das ich das OLE nicht so richtig verstehe. Mein Versuch ist damals immer gescheitert und irgendwann habe ich das dann aus frust auf die Seite geschoben.
Der letzte Stand sieht so aus (nicht funktionsfähig)

using System;
using System.Data.OleDb;

namespace ole_test
{
	class Program
	{
		public static void Main(string[] args)
		{
			OleDbConnection myConnection = new OleDbConnection();
			try
			{
				myConnection = new OleDbConnection(@"C:\Users\ked7rt\Downloads\PWR0001.SEQ");
			}
			catch(Exception ex)
			{
				Console.WriteLine("Error! \n{0}", ex.Message);
			}
			
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}
F
10.010 Beiträge seit 2004
vor 10 Jahren

Da hast Du etwas falsch verstanden.
OleDb und OleObject sind 2 verschiedene Dinge.

OLE Container for .NET

S
248 Beiträge seit 2008
vor 10 Jahren

Bist du über Flir Custhelp gegangen? Wenn nein, solltest es du es da versuchen. Die Reaktionszeit ist normalerweise weniger als 24h.

Grüße
spooky