Fahrgastinformation - Plugin Vorschau

Für Fragen zu Plugins und zur Plugin-Entwicklung.

Moderatoren: Stellwerk-Admin, Moderatoren

js
Stellwerk-AdminEntwicklerR-Admin [Alternative Stellwerke, München S-Bahn 2004, Test, Zug-Schattenregion]Erbauer
Beiträge: 15436
Registriert: Mi Aug 07, 2002 12:39 pm
StiTz: 700002

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von js »

Also das, was die Klasse Timer (http://download.oracle.com/javase/6/doc ... Timer.html) etwas eleganter löst, nicht durch warten sondern durch gezieltes Aufrufen. Für Nicht-Swing Operationen ist sie ohnehin besser geeignet als der Swing-Timer, der immer im Event-Thread läuft. Er läuft auch genauer.
Hier würde eine Signatur stehen. Beachtet eh keiner, wozu also.
Benutzeravatar
xxJohnxx
Beiträge: 271
Registriert: Do Okt 08, 2009 4:51 pm
StiTz: 711506

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von xxJohnxx »

abrixas hat geschrieben:Habe es bei mir probiert, egal welches Tempo, die Laufschrift springt im Takt weiter (zwischen 1-2 sec).
Wenn das Tool läuft (Start) ist ein Kern bei 100 %.

Mac OS 10.6.6
Kann ich nur bestätigen.
A/Z-Designer: Hier und da und dort auch noch.
HD+?
Benutzeravatar
matej
R-Admin [Tschechien West]Erbauer
Beiträge: 1383
Registriert: Mo Mär 05, 2007 7:46 pm
StiTz: 704347

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von matej »

So dann habe ich das jetzt nochmal mit util.Timer.
Sowie etwas modifiziertem Menü.

http://www.file-upload.net/download-324 ... n.jar.html

Hoffe das mit den 100% ist weg.
Bitte mal nachsehen.
Euer Matthias ♂

R-Admin:
Fernverkehrsteam: Niederlande
LotharImKeller
Beiträge: 3769
Registriert: Mi Sep 19, 2007 10:19 am

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von LotharImKeller »

Kannst Du ja auch mal auf den SVN-Server packen. Siehe unter: http://www.stellwerksim.de/forum/viewto ... 17#p125817
--- Hier wird gebuddelt. ---
Benutzeravatar
matej
R-Admin [Tschechien West]Erbauer
Beiträge: 1383
Registriert: Mo Mär 05, 2007 7:46 pm
StiTz: 704347

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von matej »

Stehe schon mit js im Kontakt.

Will mir dort was anlegen.
Euer Matthias ♂

R-Admin:
Fernverkehrsteam: Niederlande
Benutzeravatar
xxJohnxx
Beiträge: 271
Registriert: Do Okt 08, 2009 4:51 pm
StiTz: 711506

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von xxJohnxx »

Hi,

Nach dem öffnen des Programms, sorgt es für ca 6% CPU-Auslastung. Nach klicken auf 'Start' kommt es auf ca. 36% bei Tempo 25 (variiert je nach Geschwindigkeit des Textes. Schneller Text = Höhere Auslastung; Langsamer Text = Niedrigere Auslastung). Die Darstellung ist nun jedoch flüssig, und gut lesbar.

Gruß John

EDIT: Beim Tempo 50 liegt die CPU Auslastung nur noch bei 26%, bei Tempo 20 liegt sie bei 71%.
A/Z-Designer: Hier und da und dort auch noch.
HD+?
Benutzeravatar
matej
R-Admin [Tschechien West]Erbauer
Beiträge: 1383
Registriert: Mo Mär 05, 2007 7:46 pm
StiTz: 704347

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von matej »

Das ist dann leider sehr anhängig vom PC.

Habe aber auch die Erfahrung gemacht, dass MacOS irgendwie dazu neigt auch Werte über 100% anzuzeigen.
Heißt die Auslastung bedeutet dort war anderes, aber frage mich nicht was.

Ich bekomme bei Tempo 10 nichtmal 1% CPU hin.
Ist aber auch ein Intel Core 2 Quad Q9550 mit 4x2,83 GHz.


Wie sieht es bei anderen MacOS Nutzeren aus?
Euer Matthias ♂

R-Admin:
Fernverkehrsteam: Niederlande
LotharImKeller
Beiträge: 3769
Registriert: Mi Sep 19, 2007 10:19 am

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von LotharImKeller »

Vielleicht solltest Du die Anwendungen auch mal unter anderen Umgebungen testen. Hat ja nicht jeder direkt einen Quad-Core da stehen. Und mit einer virtuellen Maschine solltest Du alle Betriebssysteme auch testen können.
--- Hier wird gebuddelt. ---
Benutzeravatar
xxJohnxx
Beiträge: 271
Registriert: Do Okt 08, 2009 4:51 pm
StiTz: 711506

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von xxJohnxx »

Hi,

Ich möchte noch hinzufügen das mein Mac einen 2.53 GHz Intel Core 2 Duo Prozessor hat. Zwar schon 1 1/2 Jahre alt, läuft aber immer noch super.
Ich vermute mal das eine CPU Auslastung bei über 100% beim Mac eventuell mit einer 'Turboboost' Funktion (Übertaktung einzelner Kerne der CPU) des Prozessors zusammenhängt.

Gruß John
A/Z-Designer: Hier und da und dort auch noch.
HD+?
Benutzeravatar
matej
R-Admin [Tschechien West]Erbauer
Beiträge: 1383
Registriert: Mo Mär 05, 2007 7:46 pm
StiTz: 704347

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von matej »

Mache das Zeichnen mit repaint.

Gibt es da was sparsameres?
Man möge sich auch den Quelltext dazu ansehen.
Entweder in SVN oder hier:

Code: Alles auswählen

  public void paint( Graphics g ){
    if(erstesMal<2){
      super.paint(g);
      g.setColor(Color.DARK_GRAY);
      g.fillRect(links-pG/2,oben-pG/2,pG*(pA+1),(pG*1)+(pG*7));
      for(int i=0;i<pA;i++){
        g.setColor(Color.GRAY);
        for(int u=0;u<7;u++){
          g.setColor(Color.GRAY);
          g.fillOval(links+(i*pG),oben+(u*pG),pG,pG);
        }
      }
      erstesMal++;
    }    
    if(meinText.size()>1){
      int textX;
      for(int aktX = 0;aktX<100;aktX++){
        textX = (aktX+untereGrenze)%meinText.size();
        boolean[] aktSpalte = (boolean[]) meinText.get(textX);
         for(int u=0;u<aktSpalte.length;u++){
          if(aktSpalte[u]){
            g.setColor(Color.YELLOW);
            g.fillOval(links+(aktX*pG),oben+(u*pG),pG,pG);
          }
          else{
            g.setColor(Color.GRAY);
            g.fillOval(links+(aktX*pG),oben+(u*pG),pG,pG);
          }
        }
      }
    }
  }
Unter AMD Turion 64 x2 TK- 57 2x1.9 MHz komme ich bei Tempo 25 auch auf 30% CPU.
Euer Matthias ♂

R-Admin:
Fernverkehrsteam: Niederlande
LotharImKeller
Beiträge: 3769
Registriert: Mi Sep 19, 2007 10:19 am

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von LotharImKeller »

Was mir jetzt beim "nur" überfliegen auffällt ist, daß die Variablen-Namen nicht selbsterklärend sind. Kommentare, was da passiert stehen auch nicht dabei.
--- Hier wird gebuddelt. ---
Benutzeravatar
matej
R-Admin [Tschechien West]Erbauer
Beiträge: 1383
Registriert: Mo Mär 05, 2007 7:46 pm
StiTz: 704347

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von matej »

Dann hier mal was ausführlicher:

Code: Alles auswählen

  private ArrayList meinText = new ArrayList();
  private Alphabet meinAlphabet = new Alphabet();
  private int oben = 105;                                                       // Abstand von oben
  private int links = 35;                                                       // Abstand von links
  private int pG = 4;                                                           // LED (Punkt) Größe
  private int pA = 100;                                                         // LED (Punkt) Anzahl in x-Richtung
  private int delay = 25;                                                       // Laufgeschwindigkeit
  private boolean laeuft = false;                                               // Läuft das Band
  private int untereGrenze = 0;                                                 // erstes anzuzeigendes Zeichen
  private ArrayList eintraege = new ArrayList();                                // Verzeichnis mit den Einträgen und deren unterer Grenze
  private Timer t;                                                              // Timer für das Laufen
  private boolean erstesMal;                                                    // schauen ob paint() schonmal durchlaufen


    @Override
    public void paint( Graphics g ){
    if(erstesMal){                                                              // Wird benötigt um die leere Anzeige zu zeichen, wenn es erstes Mal ist
      super.paint(g);                                                           // Zeichnet Schaltflächen etc.
      g.setColor(Color.DARK_GRAY);                                              // setzt die Stiftfarbe auf Dunkelgrau
      g.fillRect(links-pG/2,oben-pG/2,pG*(pA+1),(pG*1)+(pG*7));                 // Zeichnet den Hintegund der Anzeige
      for(int i=0;i<pA;i++){                                                    // Schleife für Splaten der Anzeige (links --> rechts)
        g.setColor(Color.GRAY);                                                 // setzt die Stiftfarbe auf Grau
        for(int u=0;u<7;u++){                                                   // Schleife für Zeilen der Anzeige (oben --> unten)
          g.fillOval(links+(i*pG),oben+(u*pG),pG,pG);                           // Zeichnet Punkt AUS
        }
      }
      erstesMal = false ;                                                       // erstesMal auf false, damit nicht nochmal durchlaufen wird
    }
    
    if(meinText.size()>1){                                                      // Wenn Text zum schreiben vorhanden

      int textX;                                                                // x-Position (Spalte) im gesamten Text

      for(int aktX = 0;aktX<pA;aktX++){                                         // Schleife für Splaten der Anzeige (links --> rechts)
        textX = (aktX+untereGrenze)%meinText.size();                            // Wenn Ende vom gesamten Text erreicht, wieder beim Ersten zeichen beginnen

        boolean[] aktSpalte = (boolean[]) meinText.get(textX);                  // Liest aktuell zu zeichnende Spalte in aktSplate ein

         for(int u=0;u<aktSpalte.length;u++){                                   // Zeichnet untereinander die LED's bis unterste Zeile von aktSpalte
          if(aktSpalte[u]){                                                     // Wenn die LED an ist
            g.setColor(Color.YELLOW);                                           // setz die Stiftfarbe auf Gelb
            g.fillOval(links+(aktX*pG),oben+(u*pG),pG,pG);                      // zeichnet LED
          }
          else{                                                                 // Wenn die LED aus ist
            g.setColor(Color.GRAY);                                             // setz die Stiftfarbe auf Grau
            g.fillOval(links+(aktX*pG),oben+(u*pG),pG,pG);                      // zeichnet LED
          }

        }

      }

    }

  }
Euer Matthias ♂

R-Admin:
Fernverkehrsteam: Niederlande
js
Stellwerk-AdminEntwicklerR-Admin [Alternative Stellwerke, München S-Bahn 2004, Test, Zug-Schattenregion]Erbauer
Beiträge: 15436
Registriert: Mi Aug 07, 2002 12:39 pm
StiTz: 700002

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von js »

Komplexe Animationen sollte man grundsätzlich immer mit Double-Buffering machen. Also das Malen in einen Puffer und nur diesen dann in der paint-Funktion darstellen. Alleine das dürfte schonmal etliche Ausgabeprobleme beheben.
Hier würde eine Signatur stehen. Beachtet eh keiner, wozu also.
Benutzeravatar
VT628
Beiträge: 55
Registriert: Di Nov 25, 2008 6:48 pm
StiTz: 708721

Re: Fahrgastinformation - Plugin Vorschau

Beitrag von VT628 »

Ich (=Null-Ahnung-Habenden von Java) erlaube mir mal jetzt ein kleines Feedback zu geben.

Ich finde die Idee nicht schlecht, macht Spaß ein wenig damit rumzuspielen :lol:

Was mir aufgefallen ist, dass die Anzeige keine Sonderzeichen wie . + etc. anzeigt. Evtl könnte man da entweder die Eingabe sperren oder es ermöglichen (vor allem der Punkt wäre meiner Meinung wichtig).
Außerdem ist zwischen zwei Nachrichten kein Abstand, die folgen direkt aufeinander ohne Leer. Evtl. Trennung mit +++ oder ähnliches würde sich anbieten, ich weiß es aber nicht, wie es in der Realität ist.

Sonst schauts super aus, und ich freu mich schon, wenn's komplett einsatzfähig ist! Mach(t) weiter so!
Mfg VT628
Ich bin zwar langsam, aber zuverlässig! :-D
Antworten