Discussion in 'OpenFormat' started by FHKarlsruhe, May 10, 2009.

  1. FHKarlsruhe

    FHKarlsruhe New Member

    Hallo wir sind zwei Studenten an der FH Karlsruhe und wollen LogView gerne für unser Projekt benutzen. Wir wollen mittels serieller Schnittstelle unsere Daten von einem Picos 18 rüberholen. Wir haben dazu auch wie beschrieben ein Open Format selbst erstellt und wie beschrieben in den dafür vorgesehenen Ordner koppiert. Die Open Format
    .INI haben wir im Anhang mal miteingestellt ob sie auch richtig ist ? Wir bekommen unsere richtigen 6 Werte von unseren Sensoren auch geliefert aber leider nicht in den Graf sondern nur im unteren Fenster als Text.

    17:32:53,829 [A] $1;1;;150;32;150;40;40;40;0<CR><LF>
    17:32:54,814 [A] $1;1;;150;32;150;40;40;40;0<CR><LF>
    17:32:55,784 [A] $1;1;;150;32;150;40;40;40;0<CR><LF>
    17:32:56,769 [A] $1;1;;150;26;150;40;40;40;0<CR><LF>
    17:32:57,738 [A] $1;1;;150;28;150;40;40;40;0<CR><LF>

    Wir haben alles versucht und wissen leider nicht mehr weiter. Wir haben auch unseren C-Code mit angehängt, weil wir nicht genau wissen ob er wirklich in ASCII ausgibt.

    while(1)
    {
    WaitEvent(ALARM_EVENT);
    ClearEvent(ALARM_EVENT);
    GetEvent(id_tsk_run, &Time_event);
    WaitEvent(UPDATE_EVENT);

    Printf("$1;1;;%u;%u;%u;%u;%u;%u;0<CR><LF>",(unsigned int)dist[1],(unsigned int)dist[2],(unsigned int)dist[3],(unsigned int)dist[4],(unsigned int)dist[5],(unsigned int)dist[6]);


    ClearEvent(UPDATE_EVENT);

    Wir haben dann auch alles mit der Logconsole überprüft und es gab uns keine fehler aus, ein Auschnitt davon ist auch unten in dem Zip Ordner.
    Es wäre sehr nett wenn uns da jemand weiter helfen könnte. Wir Vielen Dank schon mal.

    Grüße

    Attached Files:

  2. wkrug

    wkrug New Member

    Lasst doch mal eueren Log in ein Terminalprogramm laufen und zeichnet die Datei mal auf.
    z.B. Hyper Terminal oder Terra Term.

    Wenn es da sauber läuft kann es eigentlich nur noch an der entsprechenden .ini für Logview liegen.

    Das Log, auch wenn es nur mal so 20...30 Zeilen beträgt, könntet Ihr dann hier mal einstellen.
    Eventuell hat ja dann nochmal jemand eine Idee.
  3. FHKarlsruhe

    FHKarlsruhe New Member

    Hallo,

    das HyperTerminal hat uns folgendes ausgespuckt:

    $1;1;;150;32;150;40;40;40;0<CR><LF>$1;1;;150;32;150;40;40;40;0<CR><LF>$1;1;;150;32;150;40;40;40;0<CR><LF>$1;1;;150;32;150;40;40;40;0<CR><LF>$1;1;;150;32;150;40;40;40;0<CR><LF>$1;1;;150;32;150;40;40;40;0<CR><LF>

    und so weiter
    bei einer baudrate von 9600
  4. Dominik

    Dominik Administrator Staff Member

    Moin !

    Ok ich denke ich kann das Rätzel auflösen :)

    Auch wenn ich nicht der C Guru bin, aber das ist falsch. Ihr sendet da den String "<CR><LF>". Das ist so nicht richtig. Gemeint ist das der String mit CR/LF abgeschlossen werden muss.

    Ich denke mal so wäre es richtig:
    Printf("$1;1;;%u;%u;%u;%u;%u;%u;0\n",(unsign ed int)dist[1],(unsigned int)dist[2],(unsigned int)dist[3],(unsigned int)dist[4],(unsigned int)dist[5],(unsigned int)dist[6]);
    -> http://mc-computing.com/languages/CR_LF.htm
  5. FHKarlsruhe

    FHKarlsruhe New Member

    Hallo ihr beiden und vielen Dank für eure schnellen Antworten. Wir haben den C-Code nun geändert in :

    Printf("$1;1;;%u;%u;%u;%u;%u;%u;0\n",(unsigned int)dist[1],(unsigned int)dist[2],( unsigned int)dist[3],( unsigned int)dist[4],( unsigned int)dist[5],( unsigned int)dist[6]);

    Im Hyperterminal gibt es uns genauso aus wie im Logview Textfenster.
    Wir bekommen aber im Logview immer noch nicht die Grafik sondern nur die Werte im Textfeld.

    13:16:56,625 [A] $1;1;;150;9;90;40;11;10;0<LF>
    13:16:57,609 [A] $1;1;;150;9;90;40;11;40;0<LF>
    13:16:58,577 [A] $1;1;;150;9;75;40;10;10;0<LF>
    13:16:59,561 [A] $1;1;;150;9;75;40;10;10;0<LF>
    13:17:00,466 [A] $1;1;;150;9;150;40;11;10;0<LF>
    13:17:01,450 [A] $1;1;;150;9;150;40;11;10;0<LF>

    Wir bekommen im Inspector noch folgende Aussage :

    ExtractNextData
    DatenempfangAuswertung
    Daten als ASCII = '$1;1;;150;9;150;40;11;10;0$1;1;;150;9;150;40;11;10;0<LF>'
    Daten als HEX = '24313B313B3B3135303B393B3135303B34303B31313B31303B3024313B313B3B3135303B393B3135303B34303B31313B31303B300A'
    Länge der Daten = 53
    Gerät: OpenFormat\OpenFormat Clustersize: 27 ClusterErweiterung: 0
    ACHTUNG: Falsche Clustersize! Datenlänge der INI passt nicht zu den empfangenen Daten!
    DatenempfangAuswertung
    ExtractNextData
    Data Länge 0

    Muss und wenn ja wie stellt man die paasende Clutersize ein ?????

    Vielen dank schonmal im Vorraus.
  6. Dominik

    Dominik Administrator Staff Member

    Moin !

    Das ist immer noch keine komplette Zeile!

    Eine Zeile muss mit Carriage Return / Linefeed abgeschlossen werden. Schaut doch mal nach wie das in C geht.

    \n bewirkt namlich NUR ein Linefeed (LF).

    Wie gesagt ich bin kein C Guru. Aber es kann auch sein das ihr folgendes noch einbauen müsst:
    Printf("$1;1;;%u;%u;%u;%u;%u;%u;0\r\n",(unsigned int)dist[1],(unsigned int)dist[2],( unsigned int)dist[3],( unsigned int)dist[4],( unsigned int)dist[5],( unsigned int)dist[6]);

    \r = CR = Carriage Return
    \n = LF = LineFeed

    HINWEIS:
    Wenn ihr in unserem Terminal oder in LogView irgendwo <CR><LF> lesen könnt dann liegt das daran das wir Sonder- & Steuerzeichen in eine lesbare Form konvertieren!
  7. FHKarlsruhe

    FHKarlsruhe New Member

    Ok vielen Dank, jetzt stehen sie schön untereinander.
    Wir bekommen aber folgenden Text vom Smart Inspector geliefert :

    Aufgezeichnete serielle Daten
    ExtractNextData
    Data Länge 54
    ExtractNextData
    DatenempfangAuswertung
    Daten als ASCII = '$1;1;;150;19;0;40;17;10;0<CR><LF>'
    Daten als HEX = '24313B313B3B3135303B31393B303B34303B31373B31303B300D0A'
    Länge der Daten = 27
    Gerät: OpenFormat\OpenFormat Clustersize: 44 ClusterErweiterung: 0
    ACHTUNG: Falsche Clustersize! Datenlänge der INI passt nicht zu den empfangenen Daten!
    DatenempfangAuswertung
    ExtractNextData
    Data Länge 26
    ExtractNextData
    Empfang von Daten - SerialPortRxClusterEvent
    Empfang von Daten - SerialPortRxClusterEvent


    Kannst du uns sagen was wir für eine Clustersize einstellen müssen ?

    Bei Logview sind unten die drei kleinen grünen Anzeigen, con , rx , tx.
    Bei uns leuchtet con dauernd und rx blinkt rot/gelb, was bedeutet das ?
  8. FHKarlsruhe

    FHKarlsruhe New Member

    Hallo Dominik, vielen Dank nochmal für deine Tips, wir haben es jetzt hinbekommen, als Clustersize haben wir wie voreingestellt die - 10 genommen und dann liefs. Wir bekommen jetzt ne super Grafik hin die auch mit unseren Werten übereinstimmt :) .

    Kannst du uns sagen warum wir manchmal logview neu starten müssen um die daten wieder geliefert zu bekommen ?

    Wir bekommen auch nen Fehler angezeigt , wenn wir unsere Livedaten ne weile laufen lassen , dann kommt der Fehler " Nelist voll" . Kann man die älteren Livedaten dann wieder löschen irgendwie ?

    Grüße
  9. Dominik

    Dominik Administrator Staff Member

    Moin !

    Aus eurer INI Datei ...

    [serielle Schnittstelle]
    ....
    Stopbits = 0
    Parität = 0
    Flusskontrolle = 0
    ClusterSize = 44
    SetDTR = 0
    SetRTS = 0

    ...

    Ermittele mal grob die Anzahl der Bytes pro Telegramm. Also den String z.B. nehmen und durchzählen:
    $1;1;;150;19;0;40;17;10;0<CR><LF> -> 27 Bytes.

    Also trage bei Clustersize (ein bisserl aufrunden) mal eine 30 ein. Und damit LogView auch weiss das die Telegrammlänge variabel ist, setzt man ein Minus davor:
    Flusskontrolle = 0
    ClusterSize = -30
    SetDTR = 0


    Dann werden die Telegramme auch nicht mehr verworfen weil die Länge nicht passt (rx blinkt rot/gelb) ;)
  10. Dominik

    Dominik Administrator Staff Member

    Moin !

    Dazu brauchen wir das Fehlerlog. Am besten mal per Mail direkt verschicken lassen wenn der Fehler kommt.

    ??? Evtl. wird ein neuer Datensatz erzeugt.

    Ihr könnt mal versuchen unter [Gerät] noch folgendes in der INI einzutragen:
    TimeStep_ms = 0
    TimeGiven = 0


    Damit berechnet LogView die Zeit der X Achse anhand des Telegrammeingangs.
  11. FHKarlsruhe

    FHKarlsruhe New Member

    Hallo Dominik,

    wir übermitteln jetzt den Timestamp, dadurch tritt der fehler des Indexüberlaufs nichtmehr auf.

    leider funktioniert die Grafik nicht immer, sobalt wir die Aufzeichnung einmal unterbrechen lässt sie sich nichtmehr neustarten, meist hilft nur ein neustart von Logview
    Serial logging funktioniert immer, + live daten oft, + grafik manchmal

    die RX leuchte blinkt auch oft rot, bei einer clustersize von -10 haben wir noch die besten erfolge
    kann es an der stelle vielleicht helfen wenn wir die messwerte (schwanken von 0 bis 150) auf eine definierte länge von 3 zeichen setzen? z.b. aus einer 25 eine 025 machen? um damit eine definierte clustersize zu bekommen?

    edit: das mit der definierten clustersize hat geklappt
    als timestamp übermitteln wir eine integer variable die von 0 bis 99 zählt, und das in einer schleife
    allerdings wird die grafik jedesmal zurückgesetzt wenn unser timestamp wieder von 0 anfängt, und der status wird um 1 hochgezählt
    unser ziehl ist eigentlich die daten der letzten 1-2 minuten zu sehn
  12. wkrug

    wkrug New Member

    Soweit ich weiß ist das auch so gewollt, da Logview annimmt, das eine neue Aufzeichnung gewünscht wird
  13. FHKarlsruhe

    FHKarlsruhe New Member

    das find ich aber nich gut, gibts da denn ne bekannte sinnvolle möglichkeit nur nen ausschnitt der daten anzeigen zu lassen? letzen 1-2 minuten oder sowas in die richtung
  14. Dominik

    Dominik Administrator Staff Member

    Moin !

    Sorry aber das verstehe ich jetzt nicht.

    Entweder du ....
    • sendest nur deine 1-2 Minuten und "kontrollierst" die Anzeige mit deinem Gerät
    • du nutzt die Zoomfunktionen
    • du schneidest dir die Grafik im Nachhinein mit den "Grafik manipulieren" Tools zurecht.
  15. FHKarlsruhe

    FHKarlsruhe New Member

    Hallo,

    Unser Projekt sieht so aus das wir an einem ferngesteuerten auto, Abstandssensorgen rundherum montiert haben, und würden gern im laufenden Betrieb sehen was die letzten 1-2 min im Umkreis des Autos passiert ist
    und hatten bisher die Hoffnung das dies mit Logview möglich ist, und uns damit die Arbeit erspart eine eigene grafische Oberfläche zu entwerfen.

    Grüße
    Chris
  16. Dominik

    Dominik Administrator Staff Member

    Moin !

    Wenn ich dich richtig verstehe braucht ihr also eine Art "Oszilloskop"-Funktion? Es kommen fortlaufend Daten rein, aber ihr wollt immer nur die letzten 1-2 Minuten sehen.
    Falls dem so ist ... Diese Funktion gibt es in V2 derzeit nicht. Wir könnten aber mal schaun ob man das nicht für die V2 in vereinfachter Art noch nachrüsten kann. Die Grundlagen dafür habe ich schon mal mit dem Support der Grafikengine besprochen.
  17. FHKarlsruhe

    FHKarlsruhe New Member

    ja, genau
    besten dank
    uns gefällt die Bedienung und die Funktionen von Logview sehr gut, auch das System mit dem OpenFormat ist sehr gut umgesetzt, daher würden wir dein Programm gern im Rahmen unseres Projektes verwenden
    Das würde uns viel Arbeit ersparen

    Grüße

    Chris

Share This Page