Mehrere Ausgaben mit SWRITE

  • Hallo ich habe leider folgendes Problem.


    Ich möchte mehrere Textausgaben ins Meldungsfenster des KCP senden.
    Hierzu haben ich mehrere SWRITE benutzt.
    Leider wird immer nur die letzte SWRITE Anwendung auch Angezeit.
    Ich möchte diese nachher aus den LogDatein auslesen. Mir ist also bewusst, dass die Meldungen nicht lange zu lesen sind.


    Der Code sieht wie folgt aus:
    (Ist nur einer von mehreren Interrupts, die aber alle ähnlich ablaufen)



    Die Variablen sind global. Ich habe das Programm erweitert, also nicht komplett selber geschrieben.
    Hängt das ganze etwa mit dem $LOOP_MSG[] zusammen? :denk:
    Vielen Dank schon mal für eure Hilfe

  • Schritt für Schritt zum Roboterprofi!
  • 1. Am Anfang interrupt off 2, am Ende Interrupt on 1. Ist das Absicht? Dürfte aber nicht das Problem sein.


    2. Vermute mal, dass das System etwas Zeit braucht um den Inhalt von $Loop_msg[] auszuwerten und zum Windows zu übertragen, wenn man den Inhalt zu schnell ändert, dann geht das verloren. Also testweise mal eine kurze Wartezeit zwischen den beiden Zuweisungen reinbauen.

  • Hallo BobRob,


    $LOOP_MSG[]=" "


    dies löscht die letzte Ausgabe mit $LOOP_MSG[].
    Und zwar soviel Zeichen wie Leerschläge. Rest bleibt stehen.


    SWRITE ($LOOP_MSG[],STATE,OFFSET, "Taktzeitkonto = %#5.2f Sekunden", RTZ_KONTO)
    Aber auch ohne überschreibt Dir die Zweite die erste Ausgabe.
    Wäre die erste länger als die zweite, würdest Du den Rest noch sehen.


    Es wird alles in der gleichen Zeile gehandhabt.
    Zweite Message gibt nicht neue Zeile.


    Grus SJX

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Also schon mal vielen Dank für die Antworten.



    1. Am Anfang interrupt off 2, am Ende Interrupt on 1. Ist das Absicht? Dürfte aber nicht das Problem sein.


    Ja das ist wirklich mit Absicht das sind 2 verschachtelte Interrupts



    2. Vermute mal, dass das System etwas Zeit braucht um den Inhalt von $Loop_msg[] auszuwerten und zum Windows zu übertragen, wenn man den Inhalt zu schnell ändert, dann geht das verloren. Also testweise mal eine kurze Wartezeit zwischen den beiden Zuweisungen reinbauen.


    Das mit den Wartezeiten hat funktioniert! Das ist ja schon mal ein Anfang. Allerdings musste ich Wartezeiten von 0,2 sek einbauen. Die beeinflussen natürlich erheblich den Takt.


    Gibt es eine Möglichkeit das vlt anders zu regeln? Ein anderes Array als $Loop_msg zu nehmen wird nicht funnktionieren denke ich mal oder?


    Ich habe auch schon überlegt den Text einfach anzuhängen, quasi beide Meldungen als eine auszugeben. Das müsste ja gehen, wenn ich den Offset einfach nicht zurück setze. Aber das würde auch nicht klappen, da ich die Log Datein nachher mit Matlab auswerte und sich pro Zeile nur eine Zahl befinden darf.



    Zweite Message gibt nicht neue Zeile.


    Gibt es denn die Möglichkeit diese zu erzeugen? dann hätte ich auch mein Matlab Problem nicht mehr


  • ..
    Ich habe auch schon überlegt den Text einfach anzuhängen, quasi beide Meldungen als eine auszugeben. Das müsste ja gehen, wenn ich den Offset einfach nicht zurück setze. Aber das würde auch nicht klappen, da ich die Log Datein nachher mit Matlab auswerte und sich pro Zeile nur eine Zahl befinden darf.
    ..


    Kenne Matlab jetzt nicht so genau, kann mir aber überhaupt nicht vorstellen, daß das soo unflexibel sein soll, daß man da nicht mehrere Zahlen aus einer Zeile einlesen können soll. :denk:

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden