Discussion in 'OpenFormat' started by SevenUp, Mar 13, 2009.

  1. SevenUp

    SevenUp New Member

    Ich stelle kurz mein kleines Projekt vor:

    Ich habe hier eine Platine mit einem ATMega644 als µC und einem MMA7456L
    als 3-Achsen-Beschleunigungssensor.
    Die Platine ist an eine Pendel befestigt, wodurch der Sensor also immer
    neue Daten liefern kann.

    Nun sollen die Messdaten für alle 3 Achsen an einem PC grafisch
    dargestellt werden, und das am besten in Echtzeit. Das heisst, anhand
    der Beschleunigung muss die zurückgelegte Strecke ausgerechnet werden
    und als ein Vektor am Bildschirm angezeigt werden. Pendelt das Pendel =
    dann ändern sich die Anzeige des Vektors am PC.

    Die Kommunikation zwischen der Platine und dem PC erfolgt über die
    RS232.
    Mit einem HyperTerminal können die Messwerte schonmal problemlos am PC
    empfangen werden.

    Nun geht es um die grafische Darstellung, und da wurde mir Logview empfohlen.
    Ich habe versucht eine für mich passende .ini Datei mit dem OpenFormat Editor zu erstellen
    Code:
    [Gerät]
    Name                            = BG-931
    Hersteller                      = Andreas Vogel
    Gruppe                          = 09
    Device_ID                       = ID_OPENFORMAT
    Used                            = 1
    Abbildung                       = OpenFormat.jpg
    ChangeSettings                  = 1
    HerstellerLink1                 = 
    HerstellerLink2                 = 
    LogViewLink                     = www.logview.info
    TimeStep_ms                     = 100
    TimeGiven                       = 0
    KanalAnzahl                     = 1
    WerteFormat                     = ASCII
    Prüfsummenberechnung            = keine
    PrüfsummenFormat                = ASCII
    
    [Stati]
    StatiAnzahl                     = 1
    001                             = Messdaten
    
    [serielle Schnittstelle]
    Port                            = COM1
    Baudrate                        = 9600
    Datenbits                       = 8
    Stopbits                        = 0
    Parität                         = 0
    Flusskontrolle                  = 0
    ClusterSize                     = -50
    SetDTR                          = 0
    SetRTS                          = 0
    
    [Schnittstelle TimeOuts]
    RTOCharDelayTime                = 290
    RTOExtraDelayTime               = 100
    WTOCharDelayTime                = 290
    WTOExtraDelayTime               = 100
    
    [Anzeige Einstellungen Kanal 01]
    Zeitbasis                       = Zeit
    Einheit                         = s
    Symbol                          = t
    WerteAnzahl                     = 3
    
    Messgröße1                      = x-Achse
    Einheit1                        = Volt
    Symbol1                         = °
    Faktor1                         = 1.0
    OffsetWert1                     = 0.0
    OffsetSumme1                    = 0.0
    
    Messgröße2                      = y-Achse
    Einheit2                        = Winkel
    Symbol2                         = °
    Faktor2                         = 1.0
    OffsetWert2                     = 0.0
    OffsetSumme2                    = 0.0
    
    
    Für den Anfang reicht mir eine Darstellung von nur 2 Achsen, deshalb sind in der ini nur 2 Messgrössen.

    Mit dem benötigte Telegramm bin ich nicht ganz klar gekommen, und weiss nun auch nicht, ob diese richtig ist.
    Meine Platine liefert mir nur die Messwerte, es liefert keinen Zeitstempel und keine Checksumme.
    "Serial Port Terminal" liefert mir nun folgede Daten
    Code:
    [12:46:15,187][01:26,734][A] þ65;-39;0;<CR><LF>$1;1;0;-6065;-44;0;<CR><LF>$1;1;;>
    [12:46:15,500][00:00,313][A] $1;1;0;-1065;-27;0;<CR><LF>$1;1;0;-2365;-29;0;<CR><LF
    [12:46:15,765][00:00,265][A] >$1;1;0;-3365;-32;0;<CR><LF>$1;1;0;-4665;-36;0;<CR><L
    [12:46:16,078][00:00,313][A] F>$1;1;0;-4765;-40;0;<CR><LF>$1;1;;><LF>$1;1;0;4835;-46;
    [12:46:16,343][00:00,265][A] 0;<CR><LF>$1;1;0;4835;-42;0;<CR><LF>$1;1;0;4135;-39;
    [12:46:16,609][00:00,250][A] 0;<CR><LF>$1;1;0;5135;-34;0;<CR><LF>$1;1;0;5135;-30
    [12:46:16,906][00:00,313][A] ;0;<CR><LF>$1;1;0;6033>$1;1;0;-6765;-48;0;<CR><LF>$1
    [12:46:17,171][00:00,265][A] ;1;0;-6465;-54;0;<CR><LF>$1;1;0;-5965;-59;0;<CR><LF>
    [12:46:17,453][00:00,282][A] $1;1;0;-4765;-63;0;<CR><LF>$1;1;0;-3565;-66;0;<CR><LF>$
    [12:46:17,765][00:00,312][A] 1;1;;>$1;1;0;5535;-29;0;<CR><LF>$1;1;0;6135;-24;0;<CR><L
    [12:46:18,031][00:00,266][A] F>$1;1;0;4735;-20;0;<CR><LF>$1;1;0;2535;-18;0;<CR><
    [12:46:18,312][00:00,281][A] LF>$1;1;0;-265;-18;0;<CR><LF>$1;1;0;-144><LF>$1;1;0;
    [12:46:18,593][00:00,281][A] -4565;-64;0;<CR><LF>$1;1;0;-4065;-67;0;<CR><LF>$1;1;0;-
    [12:46:18,890][00:00,297][A] 865;-68;0;<CR><LF>$1;1;0;1335;-67;0;<CR><LF>$1;1;0;2935;-6
    [12:46:19,171][00:00,281][A] 4;0;<CR><LF>$1;1;0;4435;-61;0;;16;0;<CR><LF>$1;1;0;-265
    [12:46:19,421][00:00,250][A] ;-17;0;<CR><LF>$1;1;0;-1565;-18;0;<CR><LF>$1;1;0;-3
    [12:46:19,687][00:00,266][A] 465;-21;0;<CR><LF>$1;1;0;-5665;-26;0;<CR><LF>$1;1;0
    Wenn ich in LogView versuche meine Daten auszulesen, dann bekomme ich folgendes im Debug-Modus
    Code:
    12:47:54,609 [        Common] Portstatus Änderung
    12:47:54,609 [        Common] aktueller Status     : geschlossen, keine Aufzeichnung
    12:47:54,609 [        Common] vorheriger Status    : geschlossen, keine Aufzeichnung
    12:47:54,625 [        Common] Portstatus Änderung
    12:47:54,625 [        Common] aktueller Status     : geschlossen, keine Aufzeichnung
    12:47:54,640 [        Common] vorheriger Status    : geschlossen, keine Aufzeichnung
    12:47:54,640 [      SerialNG] SerialPort Msg : Msg start reactivating Port (Code: 0)
    12:47:55,046 [    SerialData] Empfang von Daten - SerialPortRxClusterEvent
    12:47:55,046 [    SerialData] Aufgezeichnete serielle Daten
    12:47:55,062 [          Main] DatenempfangAuswertung
    12:47:55,062 [          Main] Daten als ASCII = '<NUL>€€x<NUL>ÿ€øø€x<NUL>ÿ€øø€<NUL>€øø€<NUL>€øø€xþxà€€€x<RS>€øø€<NUL>€øø€<NUL>€ø<NUL>ø€€xþ€€<NUL>€<NUL>€ø€<NUL>ø€€<NUL>€€x<NUL>ÿ€øø€x<NUL>ÿ€øø€<NUL>€øø€<NUL>€øø€xþxà€€€x<RS>€øø€<NUL>€øø€<NUL>€ø<NUL>ø€€xþ€€<NUL>€<NUL>€ø€<NUL>ø€€<NUL>€€x<NUL>ÿ€øø€x<NUL>ÿ€øø€<NUL>€øø€<NUL>€øø€xþxà€€€x<RS>€øø€<NUL>€øø€<NUL>€ø<NUL>ø€€xþ€€<NUL>€<NUL>€ø€<NUL>ø€€<NUL>€€x<NUL>ÿ€øø€x<NUL>ÿ€øø€<NUL>€øø€<NUL>€øø€'
    12:47:55,062 [          Main] Daten als HEX = '0080807800FF80F8F8807800FF80F8F8800080F8F8800080F8F88078FE78E0808080781E80F8F8800080F8F8800080F800F8808078FE808000800080F88000F880800080807800FF80F8F8807800FF80F8F8800080F8F8800080F8F88078FE78E0808080781E80F8F8800080F8F8800080F800F8808078FE808000800080F88000F880800080807800FF80F8F8807800FF80F8F8800080F8F8800080F8F88078FE78E0808080781E80F8F8800080F8F8800080F800F8808078FE808000800080F88000F880800080807800FF80F8F8807800FF80F8F8800080F8F8800080F8F880'
    12:47:55,078 [          Main] Länge der Daten = 225
    12:47:55,078 [    SerialData] Gerät: Testformat Lader   Clustersize: 44   ClusterErweiterung: 0
    12:47:55,093 [    SerialData] ACHTUNG: Falsche Clustersize! Datenlänge der INI passt nicht zu den empfangenen Daten!
    12:47:55,093 [          Main] DatenempfangAuswertung
    12:47:55,093 [    SerialData] Empfang von Daten - SerialPortRxClusterEvent
    12:47:55,125 [    SerialData] Empfang von Daten - SerialPortRxClusterEvent
    12:47:55,125 [    SerialData] Aufgezeichnete serielle Daten
    12:47:55,140 [          Main] DatenempfangAuswertung
    12:47:55,140 [          Main] Daten als ASCII = 'xþxà€€€x<RS>€øø€<NUL>€øø€<NUL>€ø<NUL>ø€€xþ€€<NUL>€<NUL>€ø€<NUL>ø€€<NUL>€€x<NUL>ÿ€'
    12:47:55,140 [          Main] Daten als HEX = '78FE78E0808080781E80F8F8800080F8F8800080F800F8808078FE808000800080F88000F880800080807800FF80'
    12:47:55,156 [          Main] Länge der Daten = 46
    12:47:55,156 [    SerialData] Gerät: Testformat Lader   Clustersize: 44   ClusterErweiterung: 0
    12:47:55,171 [    SerialData] ACHTUNG: Falsche Clustersize! Datenlänge der INI passt nicht zu den empfangenen Daten!
    12:47:55,171 [          Main] DatenempfangAuswertung
    
    Ich versucht, nach dieser Anleitung
    http://www.logview.info/cms/d_openformat_debug.phtml
    den Fehler zu finden, aber scheitere schon an den dafür benötigten Einstellung in LogView.
    Ich benutze die aktuellste Version, und finde in
    Datei --> Einstellungen --> Programm
    kein Debug-Menü, wie auf den Screenshots der Anleitung.

    Deshalb bin ich nun in einer Sackgasse und bitte euch um Hilfe :)


    ----------------
    Andreas
  2. Holger

    Holger LogView Team

    Hallo Andreas,

    da stimmt was mit der Baudrate nicht! Welche Baudrate hattest Du denn im "Serial Port Terminal" eingestellt?
    Für LogView und OpenFormat zählt nur die Baudraten-Vorgabe aus der ini-Datei, nicht die Einstellung im Gerätedialog!
    Die in "Daten als ASCII" angezeigten Daten müssen auf alle Fälle erstmal so wie von Dir im "Serial Port Terminal" gezeigt aussehen.

    Zu der Zeitinfo:
    Nach den gezeigten Einstellungen geht LogView davon aus, dass Dein Controller alle 100ms ein neues Telegramm schickt. Ist das so in Ordnung?

    Falls es später Ärger mit der Checksumme gibt: Bitte eine Null als Checksumme senden, auch wenn keine Checksummenberechnung stattfindet.

    Gruß, Holger
  3. SevenUp

    SevenUp New Member

    Hallo Holger!
    Vielen Dank für eine so schnelle Antwort!

    Im Serial Port Terminal ist die Baudrate auf 9600 eingestellt. Das ist auch richtig so.

    Ebenfalls ist es richtig, dass der Controller jede 100ms ein neues Telegramm schickt. Für meine Anwendung ist das zwar zu lang (besser wäre es unter 20ms), aber für den Anfang reicht das auch.

    Das Programm für den µC ist in C geschrieben, und die Ausgabe des Telegramms erfolgt auf folgender Weise:
    Code:
    printf("$1;1;0;%ld;%ld;0<CR><LF>", X, Y);
    sieht es nach "richtig" aus? ;-)
  4. Dominik

    Dominik Administrator Staff Member

    Moin !

    Ok und hier noch ne kurze Info wegen der Debuginfos ...
    Entweder beim Start von LogView F7 gedrückt halten -> dann kommt ein Logging Dialog wo man die Einstellungen machen kann.
    Oder aber in LogView selber unten bei den drei kleinen grünen Lampen (CON / TX / RX) auf die CON Lampe klicken mit der linken Maustaste. Dann kommt ebenfalls der Dialog.

    Wir haben das mal angepasst, weil der alte Dialog zu komplex war. Müssen wir in der Beschreibung noch anpassen.
  5. SevenUp

    SevenUp New Member

    okay, SmartInspect arbeitet nun mit LogView zusammen.

    Die log-Datei, von dem Start des Programms bis zum Ende der Messung, habe ich als Anhang beigefügt (oder doch lieber als Code hier im Forum?)

    Attached Files:

  6. Dominik

    Dominik Administrator Staff Member

    Moin !

    Wie Holger schon sagte ... Die Daten sind schlichtweg Datenschrott.

    BaudRate : 38400
    Das sollte doch 9600 sein !?

    'øø€x<NUL>ÿ€<NUL>€xà€x<NUL>ÿ€x<RS>€€ø€øø€<NUL>€øø€<NUL>€ø<NUL>ø€€xþ€€<NUL>€<NUL>€ø€<NUL>ø€€<NUL>€€x<NUL>ÿ€øø€x<NUL>ÿ€øø€<NUL>€øø€<NUL>ø€€€€€ø€<NUL>€<NUL>€øø€x<NUL>ÿ€<NUL>€xà€€€€€€€øø€øø€<NUL>€øø€<NUL>€ø<NUL>ø€€xþ€€<NUL>€<NUL>€ø€<NUL>ø€€<NUL>€€x<NUL>ÿ€øø€x<NUL>ÿ€øø€<NUL>€'
    Das sind die Daten. Normal sollte man da Zahlen lesen können :rolleyes:

    Hmm irgendwas stimmt da noch nicht. Er zieht zwar die INI an, springt dann aber zurück auf das Testformat:
    Gerätename : Testformat Lader

    Deine INI Datei liegt auch nicht im Verzeichnis Openformat !
    INIfile : C:\Dokumente und Einstellungen\Thunderstorm\Anwendungsdaten\LogView\Geraete\BG-931.ini

    Das muss so:
    C:\Dokumente und Einstellungen\Thunderstorm\Anwendungsdaten\LogView\Geraete\OpenFormat\BG-931.ini

    PS: Logs als Anhang zu einem Beitrag sind immer besser :)
  7. SevenUp

    SevenUp New Member

    das war auch der Fehler.
    Ich danke Dir, Dominik!

    nun bekomme ich meine Messdaten auf dem Bildschirm angezeigt, aber als "einfache Linie"
    Im erweiterten Grafikeditor habe ich die 3D-Diagramme gefunden, allerdings lassen sie sich nicht auswählen.
    Für mich käme in Frage die Darstellungsart "Vektor 3D"
    Welche Voraussetzungen müssen für diese Darstellungsart erfüllt werden, um es auswählen zu können?
    Ich messe nun 3 Sensoren und habe so alle 3 Achsen zum Zeichnen
  8. Dominik

    Dominik Administrator Staff Member

    Moin !

    Hmm in english heisst das dann "out of scope" ;)

    Das ist mit LogView 2.x leider nicht machbar. Denn wir verwenden die Grafik in eine rganz speziellen Art und Weise (Stichwort Fastplotting). Alle anderen Chart- bzw. Serientypen ignoriert LogView.
    In V3 werden wir dieses Konzept aber ändern. Dort kann der Serientyp vom User bestimmt werden (bei Bedarf).

    Aber du willst ja jetzt Ergebnisse. Und ich hab da mal was probiert. Mit ein paar Handgriffen und einer Demo der Grafikengine kann man sich einen 3D Export basteln :cool:
    (Ich glaube ich muss an die Demo noch LogView - ChartView schreiben :eek:)

    Im Anhang mal zwei Bilder.
    Bild 1 zeigt die 3 Kurven wie sie LogView 2.x verwurstet. Das ist einfach eine Ladekurve (Strom, Spannung, Ladung) von einem Akku.
    Bild 2 zeigt dann wie man diese Daten zu einem 3D Konstrukt verarbeiten kann. Wenn dass das ist was du suchst, dann kann ich hier gerne die Vorgehensweise posten. Ist eigentlich (mit dem extra Tool) schnell gemacht.

    Attached Files:

  9. SevenUp

    SevenUp New Member

    hmmm.
    dann verstehe ich wohl den Sinn von der Darstellungsarten in der "3D"-Gruppe nicht so ganz :) Ich dachte, da werden die Messergebnisse wirklich als 3D angezeigt, wobei die z-Achse ebenfallsvon den Messwerten abhängig ist? :)

    Ich versuche meine Aufgabenstellung zu verdeutlichen: :)
    Meine Schaltung misst die Beschleunigung in x-, y- und z-Achse, wenn die Schaltung in einer der Achsen bewegt wird. Das heisst, ich kann meine Schaltung durch den Raum hin und her bewegen, und anhand der Messergebnisse soll ich diese räumliche Bewegung am Schirm ausgeben :)

    Anhand von deinem angefügten Bild vermute ich, dass deine Lösung genau das ist, was ich meine. Also wenn es dir keine allzugrossen Umstände macht, dann würde ich gerne deine Vorgehensweise erfahren! :)
  10. Dominik

    Dominik Administrator Staff Member

    Moin !

    Öhm wie meinen ?!

    Nochmal ... LogView ist so konfiguriert das es immer 2 Achs Fast Plot Charts generiert. Man kann zwar einiges im erweiterten Editor rumfummeln, aber das wird auf Dauer nichts nutzen.
    Und 3D ist auch wirklich 3D. Sprich du gibst 3 Werte vor die da eine Raumkoordinate bilden. Und das zeigt ja auch der 2 Screen aus meiner letzten Mail.
    Die Grafik mag jetzt nur etwas "gradlinig" aussehen, weil sie eben aus Ladekurven generiert wurden ist. Da hat man eben nicht das "Rumgezappel" was dann dein G-Sensor erzeugen wird.

    Die Info wie man die 3D Grafik erzeugt poste ich gleich.
  11. Dominik

    Dominik Administrator Staff Member

Share This Page