|
nero1186 |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 01.12.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2015, 11:34
Titel: Parser Problem
|
 |
|
 |
|
Hallo Forum,
ich bin Neuling und brauche eure Hilfe. Ich habe das Form schon nach Lösungen durchsucht, aber keine passende Lösung auf meine Frage gefunden. Ich hoffe ihr verzeiht mir, dass ich daher ein neues Topic öffne.
Folgendes Problem habe ich. Ich habe einen Parser geschrieben und suche mit MATLAB einen bestimmten Datenabschnitt. Es gibt mehre von diesen.
[31182] CaimControllerImpl: Received new caim response: CaimResponse of type: DATA. Data: 0601062715b6
[30769] CaimControllerImpl: Received new caim response: CaimResponse of type: DATA. Data: 060183281100a6010215000001000100010001000100010001000004c10161000be4c7821c1ce4052921a6f1f00002200002000641020900c03004020201e40030002f002d002e000005605ff0e1f1e0f0f0fcf1b70ac0f0c0188991e41c0d03b5ffffd56fe48b54f00014001300150015008893a0a00079047d8b46286982e24823f2
Aber ich möchte nur, dass er die untere Zeile sucht, also das Datenpaket, mit einer größe von z.B. mind. 40 Zeichen. Die kleineren Datenpakete soll er gar nicht beachten. Dabei soll er nur den Zahlencode kopieren. Was davor steht ist nicht interessant.
Ich habe es mit einer If- Befehl fnktioniert, aber das funktioniert nicht. Ich stehe gerade echt auf den Schlauch und komme nicht weiter.
Vielen Dank für eure Tips.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 03.02.2015, 12:14
Titel:
|
 |
Hallo,
bei dem Code fehlen die end Statements.
Zudem ist die Frage: inwiefern funktioniert es denn nicht, wie es soll?
Bitte auch die Code-Umgebung nutzen.
Grüße,
Harald
|
|
|
nero1186 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 01.12.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2015, 12:29
Titel:
|
 |
oh, sorry.
Zum Teil habe ich den Code von meinem Vorgänger übernommen. Er meldet mir folgenden Fehler
Error in ==> Untitled2 at 52
ValueHex(count,1)=hex2dec(HWString(1:1));
Der Parser soll eiegntlich das gesuchte Datenpaket (das eine Länge von 262 Zeichen hat) aus einer riesigen Liste mit anderen Datenpakete suche. Die haben eine unterschiedliche Länge. Relevant sind nur der Datenauszug mit 262 Zeichen. Momentan übernehme ich einfach jeden Wert.
Anschliessend nimmt der Paser den code und splittet diesen auf und schreibt die Werte dann in eine seperate Spalte in einer Excel File.
Wie kann ich jetzt den Parser sagen, dass er nur Werte mit einer Länge von 262 Zeichen verarbeitet?
Danke
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 03.02.2015, 12:34
Titel:
|
 |
Hallo,
ich vermute sehr, dass das nicht die komplette Fehlermeldung ist?
Jetzt wissen wir zwar, wo der Fehler auftritt, aber nicht welcher.
Zitat: |
Wie kann ich jetzt den Parser sagen, dass er nur Werte mit einer Länge von 262 Zeichen verarbeitet? |
Du kannst z.B.
überprüfen.
Um zu sehen, ob der Code das gewünschte macht, kann auch der Debugger hilfreich sein.
Kannst du eine Beispieldatei zur Verfügung stellen und welche Ergebnisse von dieser Datei erwartet werden?
Grüße,
Harald
|
|
|
nero1186 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 01.12.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.02.2015, 12:56
Titel:
|
 |
|
 |
|
Der ganze Fehlercode lautet:
Als Beispieldatei kann ich leider nur einen Auszug bereitstellen:
Wie gesagt, es gibt mehrere Datenpakete des Typs DATA. Data. Relevant sind nur die Datenpakete mit 262 Zeichen. Der Rest ist fehlehrhaft und soll nicht berücksichtigt werden.
Die Datenpaekte kommen aus einem Protokoll einer Maschine und übermittelt als hexadezimaler Code einen Statusbericht der Maschine. So sind die ersten beiden Zeichen z.B. der aktuelle Stromverbrauch der Anlage, das nächste Zeichen wiederum ob z.B. die Maschine an ist oder nicht.
Der Parser soll daher als ersten schritt das Datenpaket mit 262 Zeichen aus der großen Datei mit tausenden Einträgen herausnehmen und im nächsten Schritt in eine Exceldatei schreiben und das Paket schon entsprechend aufschlüsseln.
Den zweiten Teil mit dem aufschlüsseln macht er schon. Jedoch hat er Probleme mit dem ersten Schritt. Daher kommt auch, denke ich mal, die Fehlermeldung.
Baue ich
einfach ein oder brauche ich dafür eine if-Bedingung?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 03.02.2015, 14:45
Titel:
|
 |
Hallo,
ich bekomme die Fehlermeldung, dass count nicht existiert - gibt es ja auch nicht. Wenn ich Count auf 1 initialisiere und in der Schleife inkrementiere und dann noch das fclose nach die Schleife ziehe (sonst kann man nicht mehr in der Datei lesen), bekomme ich für deinen Datenausschnitt keine Fehler und
ValueHex =
0 6 262 189
0 3 277 193
0 6 262 196
0 3 265 198
0 6 387 199
0 6 387 200
0 6 387 201
0 6 387 202
Grüße,
Harald
Der von mir verwendete Code:
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|