PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alarme von mehreren Dau´s



sebi911
21.12.2009, 01:57
Wir haben eijnen Server für die SMS Alarmierung in der Feuerwehr. Dort haben wir das Problem das wir die Alarme von mehreren Daus empfangen. Einige Meldungen kommen komplett rein und andere wiederrum nur halb. Wir erzeugen momentan per bat datei eine Textdatei und lassen den Inhalt dann verschicken.
Zuerst war es so das immer die erste meldung komplett war und die weitern dann schlecht. das haben wird dann per if exsist befehl gelöst so das nur die erste meldung verschickt wurde.
Das geht jetzt natürlich nicht mehr da ja jetzt erst der zweite alarm komplett empfangen wird.

Wie ich kann ich denn per bat z.b sagen das wenn zwei alarme kommen er schaun soll wo mehr text enthalten ist und nur den längste verschickt werden soll oder so ähnlich?

Shinzon
21.12.2009, 02:14
Das kannst du nur mit Zusatzsoftware.. der Kommandointerpreter kann das nicht
alleine, ist halt Windows ..

sebi911
21.12.2009, 14:44
mit welcher software geht das denn? Ich nutze momentan serch and replace um bestimmte inhalte raus zu filtern. geht das damit?

Shinzon
21.12.2009, 17:39
Das musst du mir sagen, ich habe /bin/bash und konsorten ^^
Was deine Software kann, steht in der Anleitung.

"Spass" beiseite: Was ist genau deine Aufgabenstellung ?

Lege dir dein Problem in einzelne Schritte zurecht, und schaue dann, wie jeder
einzelne Schritt zu lösen ist.

Je kleiner der Schritt, desto besser.

Ich fange mal dein Problem an, zuendeführen musst du es selbst ^^



Wie ich kann ich denn per bat z.b sagen das wenn zwei alarme kommen er schaun soll wo mehr text enthalten ist und nur den längste verschickt werden soll oder so ähnlich?


Ich nehme mir den Punkt "Die längste verschickte Nachricht" raus, "zwei Alarme" nebenbei
mit, aber die RIC-Unterscheidung muss schon passiert sein.

* Ich prüfe, ob eine Datei (die aus dem nächsten Punkt) existiert, wenn ja, habe ich
schon einen Alarm erhalten und gehe per GOTO in die Vergleichsroutine
* Ich möchte also eine Zeichenkette speichern. Am besten in eine Datei, deren Namen ich
kenne, und die vorher leer war. Dazu nehme ich den ECHO Befehl.
* Ich warte eine definierte Zeit (wait.exe oder so)
* Ich schaue, ob eine andere Datei mit bekanntem Namen existiert. Tut sie das, schaue ich,
ob eine dritte Datei (wo die Alarmmeldung drin steht) existiert.
* Ich muss hier evtl. noch die Alarmtextdatei aus der "ersten Datei" erzeugen (COPY)
* Existiert die Alarmmeldungsdatei und die der zweiten Meldung NICHT, springe ich per
GOTO in die Alarm-Senderoutine. (Grund: Innerhalb der Wartezeit keine weitere Alarmierung,
also muss ich hier nun senden)
* Existiert die Alarmmeldungsdatei und die Datei "zweite meldung", beende ich meine Ausführung hier. (Grund: Der Alarm wird von der "zweiten Instanz" ausgeführt.)
* Alle anderen Fälle sollten auf den ersten Gedanken die Ausführung hier beenden, bitte
aber nochmal selbst drüber nachdenken, welche Fälle auftreten.

:Hier springe ich hin, wenn die Datei "erster alarm" existiert.
* REM Also, wann komme ich hierhin? Genau, es wurde ein erster Alarm empfangen und
gespeichert, das skript wartet. Da ein neuer Alarm empfangen wird, wird dieses Skript ein
zweites Mal aufgerufen, also eine neue Instanz gebildet. Und die landet HIER, weil die
erste Instanz die Datei "erster alarm" erstellt hat.
* Ich speichere also meinen Alarmtext in einer zweiten Datei (ob die existiert, wird dann
weiter oben geprüft).
* Nun vergleiche ich die beiden Dateigrössen. Damit weiss ich ja, welcher Text länger ist.
* Je nachdem, welche Datei grösser ist, schreibe (kopiere) ich die Datei auf die Alarmtext-
Datei.
* Da ich zweiter Alarm bin, schicke ich den Alarm raus, lasse die Alarmdatei stehen, damit
die erste Instanz merkt, das alarmiert wurde.

:Alarmblubber
* So, hier alarmiere ich den Inhalt der Alarmtextdatei.



Soweit so gut - das ist nur ein erster Topdown-Gedanke. Dabei versuchte ich, mit den
Kommandozeilen-Fähigkeiten dein Problem zu lösen. Dadurch brauchst du kaum noch
externe Programme, nur eines, welches "wartet" und eines, welches "Dateigrössen vergleicht".

Ein guter Tip übrigens: Nutzt doch die Kommandozeilenversion von PHP oder PERL für
eure Batch-Logiken.

Gruss,
Tim

Andi-Hamburg
21.12.2009, 18:09
Ich würde Dir für dein problem das Programm IBSA empfehlen,gibt es hier im Forum und hat eigentlich alle benötigten funktionen.
Auch das erst Meldungen gesammelt werden,und nur die längste per sms verschickt wird.

Gruß Andi

Firefighter111
21.12.2009, 18:12
Ich fange mal dein Problem an, zuendeführen musst du es selbst ^^


Immer die gleiche Art, die einen vermuten lässt, in der Schule zu sein ... :-)!

Shinzon
21.12.2009, 18:23
Gib jemandem einen Fisch, und er hat nen Tag lang zu essen.
Zeige jemandem, wie er fischt, und er ernährt sich sein Leben lang.

Das Problem ist hier sicher nicht, irgendein Referenzhandbuch zu lesen,
sondern problembezogen zu denken.

Also bitte, hilf ihm (und allen anderen Forenmitgliedern, auch mir!), z.B. durch
Nennung eines Programms (wie neben meinem Lösungsansatz schon geschehen),
oder durch DEINEN Weg, die Sache zu lösen, oder -> lass es.

Gruss,
Tim

sebi911
21.12.2009, 19:42
IBSA kann ich leider nicht nutzen da wir das ganze per blat als email versenden

Shinzon
22.12.2009, 02:25
Hast du meinen Ansatz schon verworfen, bevor du ihn gelesen hast,
oder war das einfach zu viel Aufwand ?

Andi-Hamburg
22.12.2009, 10:11
IBSA kann ich leider nicht nutzen da wir das ganze per blat als email versenden

Ach so, nee dann geht das nicht. ;-)

Ich nutze für dieses Problem das Programm PDW2.53 neben FMS32, mit FMS32 + IBSA mache ich den SMS-Alarm, mit PDW den e-Mail Alarm.

Gruß Andi

sebi911
22.12.2009, 11:01
Hast du meinen Ansatz schon verworfen, bevor du ihn gelesen hast,
oder war das einfach zu viel Aufwand ?

Dein Ansatz ist gut und ich bin gerade dabei das umzusetzen

faboi
22.12.2009, 11:15
Wäre vlt. ein allgemeinerer Ansatz die Zeichen per Schleife zählen zu lassen und somit den längsten Text herauszufinden?
Habe dazu mal gestern KURZ gegoogelt und bin auf diverse Foren gestoßen, die hier vlt. sehr gut weiterhelfen könnten.

Shinzon
22.12.2009, 11:19
Der Ansatz ist deshalb unpraktisch, weil die Schleife ja im Dekoder laufen müsste.

Woher soll denn das Skript wissen, das die zweite Alarmierung kam. Das Problem liegt
doch eben in dieser zweiten Datenquelle.

Ob man nun Dateigrössen vergleicht oder ne Zählschleife baut, mag jedem selbst über-
lassen sein.. aber das Skript darf nicht auf den zweiten Alarm warten - wie sollte es auch
die Daten übergeben bekommen? (Klar, über Dateioperationen, aber dann starte ich lieber
dasselbe Skript mit Lock nochmal, als eine Instanz in ne potentielle Endlosschleife zu
schicken..

Gruss,
Tim

faboi
22.12.2009, 17:45
In Kombination mit einer Zeit, welche in einem Main-Programm läuft, wären aber dann auch die Fälle abgedeckt, wenn mal aus irgendeinem Grund kein zweiter DAU empfangen wird.

Shinzon
22.12.2009, 18:21
Es ist dir aber schon bewusst, das wir vom MS-Kommandointerpreter reden? ;)