Seite 21 von 37 ErsteErste ... 7891011121314151617181920212223242526272829303132333435 ... LetzteLetzte
Ergebnis 301 bis 315 von 549

Thema: monitor 1.9.0 - aber richtig :)

  1. #301
    Registriert seit
    21.08.2005
    Beiträge
    251
    OK: Ich habe jetzt folgendes unter Ubuntu 7.10 32-Bit gemacht:

    sudo aptitude install build-essential
    sudo aptitude install tofrodos
    chmod +x configure config.sub install-sh config.guess
    dos2unix config.sub
    dos2unix config.guess
    ./configure
    Das bringt mich zumindest schon mal bis hier:
    checking if PIC flag -fPIC works... no
    checking if supports -c -o file.o... no
    checking whether the linker (/usr/bin/ld) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... yes
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking dynamic linker characteristics... ./configure: line 14490: -print-search-dirs: command not found
    GNU/Linux ld.so
    checking for ALSA CFLAGS...
    checking for ALSA LDFLAGS... -lasound -lm -ldl -lpthread
    checking for libasound headers version >= 0.9.1... not present.
    checking for snd_ctl_open in -lasound... no
    configure: creating ./config.status
    .infig.status: error: cannot find input file:
    Was geht hier schief?

    Andreas

  2. #302
    Registriert seit
    15.11.2007
    Beiträge
    213
    Hallo,

    ich habe gleich mal ins SVN geschaut eben und schonmal eine sehr angenehme und nachvollziehbare Ordnung gefunden :). Toll, danke!

    Ich möchte Dich, Buebchen, aber noch bitten, den /tags/1.9.0 zu einem /branches/1.9.0 zu verschieben, da die Tags (rein interpretativ) als "Kennzeichnungspunkte" (in der Regel in Bezug auf /trunk) verstehbar sind und die 1.9-er ja nicht mehr im /trunk entwickelt wird (und an sich auch nie wurde). Im /branches könnte (so jemand wollte) dann auch noch an der 1.9er geschraubt werden (in /tags sollte ja grundsätzlich eher nicht entwickelt werden, wenngleich es dem SVN prinzipiell egal ist, wo was liegt - die Bedeutung interpretiert der Mensch ja hinein).

    Außerdem wäre in meinen Augen gleich ein Tag /tags/2.0-301107 gut, um lauffähige Versionen nach größeren Änderungen der aktuellen Entwicklung zu markieren. Der jetzte Stand in /trunk ist (jedenfalls war er es gestern noch ;)) lauffähig und kann daher meiner Meinung nach gut entsprechend als "offizieller Anfang der 2.0" markiert werden. Gut, die Probleme, die nepomuck hier schildert, sollten wir vielleicht vorher noch im Griff haben.

    Danke für die Mühe :)!
    Martin

  3. #303
    Registriert seit
    15.11.2007
    Beiträge
    213
    Hallo,

    Zitat Zitat von Buebchen Beitrag anzeigen
    Ich kenne SQLite nicht. Aber ich suche noch eine effektive Methode um die Nachrichten vom Decoder zu den Socketthreads zu queuen oder spoolen. Könnte man nicht sogar eine SQListe-DB (oder mehrere) nehmen ?
    ja, das könnte man.
    SQLite ist eine SQL-Datenbank auf Dateibasis (ein File - eine Datenbank), die mit dem Dateinamen ":memory:" auch rein im Speicher (entprechend flüchtig) Daten halten kann. Das ist allerdings in dem Fall glaube ich nicht so praktisch, da der gesamte Datenbank-Overhead dazu käme, was hier ja nicht nötig wäre.
    Wenn aber die Geschichte mit den *msg-Objekten realisiert wird - dann könnte doch einfach eine Datenstruktur (Array, verkettete Liste, ...) die *msg-Objekte pro Thread halten (hält der Thread selber oder soll das gebündelt vor der Übergabe an die Threads passieren?).

    Änderung I:
    Ich habe mal das anhängende Bild gemalt... ZVEImsg, POCmsg und FMSmsg sind abgeleitet von BASEmsg. Die Display- und Storage-Master sind quasi die Manager der Ausgabe-Module (sprich sie halten eine Liste der bestehenden Display/Storage-Module und geben die eingehenden Nachrichten *msg an die einzelnen Module weiter, können die auflaufenden Nachrichten aber auch queuen, falls bei den Modulen ein Problem auftritt - pro Modul wäre da eine Queue sinnvoll, damit bei fehlerhaftem Verhalten eines Moduls die anderen noch sauber weiterarbeiten können). Ich würde dann bevorzugen, pro Modul eine eigene Ausgabe-Routine pro *msg-Subtyp einzusetzen, damit erst im spezifischen Modul die Ausgabe-Formatierung geschehen muss. Die hier als einzelne Manager gezeichneten "Dinger" könnten auch zu einem Manager zusammengefasst werden, ebenfalls könnte der Manager eine Queue für eingehende *msg haben und die Ausgabemodule bei Bedarf eine eigene Queue halten (das wäre beim HTTP-Push nicht schlecht, weil Antwortzeiten zu berücksichtigen sind, beim monitor-Socket ist das wiederum nicht so wichtig, weil hier keine Zeitgeschichten/Feedbacks zu berücksichtigen sind).

    Änderung II:
    Mir fiel beim Einkaufen ein, dass genau im Manager (als dem "Sammler" für *msg-Objekte) auch die History-Geschichte (dann gerne in Form einer SQLite-Datenbank im Speicher oder in einer Datei) zu implementieren sinnvoll wäre, das nur als Ergänzung dazu.

    Martin
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	datenuebergabe.png 
Hits:	223 
Größe:	7,7 KB 
ID:	7206  
    Geändert von mdi (30.11.2007 um 19:57 Uhr) Grund: Überlegungen zu der *msg-Geschichte, Anhang, SQLite-Hinweis/History

  4. #304
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Zitat Zitat von mdi Beitrag anzeigen
    Hallo,

    Wenn aber die Geschichte mit den *msg-Objekten realisiert wird - dann könnte doch einfach eine Datenstruktur (Array, verkettete Liste, ...) die *msg-Objekte pro Thread halten (hält der Thread selber oder soll das gebündelt vor der Übergabe an die Threads passieren?).
    Im Moment sind es getrennte Listen (std::list) pro Thread. Geht auch soweit. Ich würde sie dann ggf. nur denmächst mal in eine Klasse einbetten, da ich immer auch über eine Semaphore sicherstellen muss, da immer nur ein Prozeß die Liste ändert. Nach meiner Meinung müssen die Objekte pro Thread in eine eigene (private) Queue. Sonst könnte ich erst das Element aus der zentralen Queue entfernen, wenn alle Threads es abgearbeitet habe (was dann synchronisiert werden müßte).

    Zitat Zitat von mdi Beitrag anzeigen
    Änderung I:
    ..., können die auflaufenden Nachrichten aber auch queuen, falls bei den Modulen ein Problem auftritt - pro Modul wäre da eine Queue sinnvoll, damit bei fehlerhaftem Verhalten eines Moduls die anderen noch sauber weiterarbeiten können ...

    Martin
    So in der Art würde ich mir das auch vorstellen können. Dann sollten wir einen Dispatcher als Dreh- und Angelpunkt für die Nachrichten vorsehen. Dieser bedient dann bei ihm registrierte Module (Füllt deren privaten Queues - ggf aber nur bis zu einem Limit von vielleicht 100 Einträge). Ich wüßte im Moment nur nicht, warum ich für Display und Storage verschiedene Dispatcher brauche. Die Daten sind identisch - nur die spätere Verarbeitung nicht. Wenn jedes Modul - wie es schon beim SocketThread ist - seine eigene Queue könnte man die StorageModule genauso behandeln.

  5. #305
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Ich habe nun begonnen, noch einen Dispatcher für die Nachrichten der Auswerter zu schreiben.

    Vom Ablauf stelle ich mir es dann so vor:

    1. Modul meldet Daten in einem einheitlichen Format (z.B. std::map) an Dispatcher (z.B. FMS Auswertung)
    2. Dispatcher (eigener Thread, Auswerter läuft also ohne Unterbrechnung weiter) verteilt Daten an SocketServer und Plugins (Jeweils eigene Threads)
    3. SocketServer und Plugins erstellen dann für sich die passenden Strings, die dann weiter verarbeitet werden (SocketServer an die einzelnen SocketThreads)

  6. #306
    Registriert seit
    15.11.2007
    Beiträge
    213
    Hallo,

    ich habe immernoch ein Problem mir vorzustellen, was und warum genau mit dem <std::map> gearbeitet werden soll :7.

    Die Sache mit den Datenobjekten finde ich da einfacher, weil (wie geschrieben) dann eine Oberklasse BASEmsg ausreicht, um egal welche Daten überall im Kern durchzuschieben ohne sich um die innere Struktur kümmern zu müssen (braucht da ja auch niemand).

    Vielleicht könnte man es dann auch sinnvoll implementieren, dass diese Daten-Objekte ihre eigene "getFMSProData", "getmonitordData", "getCrusaderData"-Routine mitbringen, so dass die Aufbereitung der Daten für die verschiedenen Ausgabeformate der Kernfunktionalität des monitord prinzipiell dem Autor der jeweiligen Auswerter- bzw. Datenobjekt-Klassen obliegt aber frei anpassbar ist für kommende Entwicklungen ohne dass die Ausgabe-Klassen extra angefasst werden müssen (die bekommen dann ein Datenobjekt BASEmsg bzw. dessen Ableitung in z.B. FMSmsg, und fordern es auf, seine Daten selber sinnvoll auszugeben bzw. sie sinnvoll formatiert als String an das Ausgabemodul zurückzugeben).

    Hm... ja. So weit.
    Martin

  7. #307
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Zitat Zitat von mdi Beitrag anzeigen
    Hallo,

    ich habe immernoch ein Problem mir vorzustellen, was und warum genau mit dem <std::map> gearbeitet werden soll :7.

    Die Sache mit den Datenobjekten finde ich da einfacher, weil (wie geschrieben) dann eine Oberklasse BASEmsg ausreicht, um egal welche Daten überall im Kern durchzuschieben ohne sich um die innere Struktur kümmern zu müssen (braucht da ja auch niemand).
    Martin
    Ich glaube, die abgeleiteten Klassen mit klassischen Membervariablen finde ich in sofern unflexibel, daß jedes neue Feld dann im Source-Code hinzugefügt werden muss, bevor man es verwenden kann. Eine dynamische Struktur wie die map hat hat so ein Problem nicht. Dennoch kann man die map ja in eine Klasse packen, die den Zugriff auf die Daten nochmal kapselt und überwachen kann. Hin- und herschieben kann man so eine Klasse auch ganz prima :-)

    Wenn man irgendwann beschließt aus einem optionalen Backend (z.B. Datenbank) ein Feld "Fahrzeugname" in den Datensatz einzufügen wäre das möglich (Durch ein "PreDispatcher" Plugin könnten die Daten ergänzt werden.) Und das ohne, die Klassendefinition anpassen zu müssen. Gleiches gilt dann für ein vorhandenes StorageModul. Es kann die ergänzten Daten lesen und nutzen, wenn es sie abfragt. Und das alles ohne SourceCode Änderung. Und andere Module sind davon unbeeindruckt.

    Da fallen mir einige Möglichkeiten ein, um den monitord an ganz verschiedene Bedürfnisse anzupassen. Ich z.B. fände es toll, wenn ein Fahrzeugname schon vor dem Weiterleiten an die Clients ergänzt wird. Oder z.B. auch der POCSAG-Text der letzten Alarmierung. Oder der vorherige Status (wenn es ein FMS Protokoll ist)...

    Sagen wir also mal, daß ich denke die map ist kein Erschwernis (sofern man damit leben kann, daß alle Daten als String behandelt werden) sondern eine Option für die Zukunft :-)

  8. #308
    Registriert seit
    21.08.2005
    Beiträge
    251
    Kurze Bitte:

    Könnte einer von euch mal prüfen, warum bei mir nicht einmal das configure-Skript durchläuft? Ohne das kein make und ohne Make kann ich aktuell gar nichts testen.

    Andreas

  9. #309
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    2 Fragen dazu:

    1. Du hast das aktuelle SVN (jetzt aus dem trunk Pfad) ?
    2. Existiert da eine config.h.in ? Diese scheint zu fehlen. Ist aber im Repository vorhanden

    Andere möglichkeit wäre mal mit dos2unix config.sub zu bearbeiten. Sieht nach nem Fehler mir [cr] und [cr][lf] aus (das .infig.status macht irgendwie keinen Sinn).

  10. #310
    Registriert seit
    15.11.2007
    Beiträge
    213
    Hallo,

    Zitat Zitat von Buebchen Beitrag anzeigen
    Sagen wir also mal, daß ich denke die map ist kein Erschwernis (sofern man damit leben kann, daß alle Daten als String behandelt werden) sondern eine Option für die Zukunft :-)
    ja, da muss ich Dir (nachdem ich endlich verstanden habe, wozu die da sein soll - ich habe da total auf dem Schlauch gestanden) zustimmen, das ist sehr flexibel für mögliche Module, die die von Dir angebrachten Änderungen (Mapping Nummern->Namen, wie auch immer) durchführen. Das würde allerdings bedingen, dass wir drei verschiedene Arten von Modulen haben - Decoder, verarbeitende Module vor der Verteilung an die Ausgabemodule und eben diese Ausgabemodule, richtig?

    Da möchte ich doch noch die Frage in den Raum werfen, ob eine derartige Datenzusammenführung nicht clientseitig oder durch eine Datenbank besser aufgehoben wäre.

    @nepomuck:
    Die Sirenentonerkennung sollte jetzt für alle möglichen Alarme funktionieren, allerdings werden alle zur Zeit noch als Typ 2 deklariert, wodurch der Subtyp nur im Klartext der Message erscheint (Sirenenauslösung: [Probe|Feuer|...]).

    Martin
    Geändert von mdi (05.12.2007 um 17:07 Uhr)

  11. #311
    Registriert seit
    21.08.2005
    Beiträge
    251
    Zitat Zitat von Buebchen Beitrag anzeigen
    1. Du hast das aktuelle SVN (jetzt aus dem trunk Pfad) ?
    Ja. Über Rapidsvn ausgecheckt und unter monitor/trunk den configure gestartet.
    Zitat Zitat von Buebchen Beitrag anzeigen
    2. Existiert da eine config.h.in ? Diese scheint zu fehlen. Ist aber im Repository vorhanden
    Die Datei ist da. Ich habe so gut wie alle Dateien im trunk-Pfad auf cr-lf untersucht und mit dos2unix bearbeitet. Zudem habe ich alle executables mit +x geflagged.

    Es funktioniert nach wie vor nicht.

    Andreas

  12. #312
    Registriert seit
    21.08.2005
    Beiträge
    251
    Wer hat denn in diesem Forum "Häuptlingsrechte"?

    Ich würde gerne mein Draft zur Protokollversion 0.2 posten, aber das PDF hat 130KB und ich darf nur 100 KB anhängen.

    Kann mir jemand bitte erlauben, 140 KB zu posten?

    Danke,
    Andreas

  13. #313
    Registriert seit
    07.08.2003
    Beiträge
    161
    Ich habe hier zwar "Häuptlingsrechte" (Moderator) aber ich darf auch nur 100 KB hochladen.

    Versuche doch mal die Datei zu packen. (ZIP,RAR, etc)
    Oder du versuchst das mit einem "One-Klick-Hoster" (z.B. Rapidshare oder simpleupload) und postest dann den Link hier.

  14. #314
    Registriert seit
    21.08.2005
    Beiträge
    251
    Hallo Zusammen,

    Ich habe das bestehende Protokoll etwas erweitert und ein paar kleine Änderungen daran vorgenommen. Das Draft sieht Befehle vor, über die Client und Server ein paar wichtige Konfigurationsdaten austauschen können.
    Zudem habe ich Kommandos für den Mitschnitt eingebaut.

    Bitte seht euch das Draft an und schickt mir eventuelle Erweiterungen oder Änderungen.
    Da das PDF für das Forum zu fett ist :-) habe ich es auf meinem FTP-Server hinterlegt.

    ftp://andi.rw-labs.de/pub/monitor-protokoll-02.pdf

    Andreas

  15. #315
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    Die Kommandoliste macht einen guten Eindruck.

    Ich würde für die unterstützen Protokolltypen auch eine Liste als Antwort vorsehen. Dann kann der Server die unterstützen Protokolle anbieten und der Client nimmt das für ihn passende. Alternativ könnte/müßte man voraussetzen, daß das Protokoll immer abwärtskompatibel ist (Wenn ein Server Version 2.1 kann muss er auch 1.x bis 2.0 können).

    Den Servernamen hatte ich vorgesehen, wenn man mal später eine Relay-Funktion vorsehen würde: Das Relay verbindet sich zu drei Servern. Der Client nur zum Relay. Dann wäre die Info futsch, welcher Server es war (ok, im Moment eher nicht nötig).

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •