| |
|
|
- Seite 1 - |
|
Detlef Tussing | ich schreibe mit einem XProfan Prog Daten in eine .DAT Datei um diese mit einem 2. Prog aufzurufen , und auszuführen. Um den Aufruf des 2.Prog leichter zu machen, lass ich gleichzeitig eine Batchdatei erzeugen Prog2.exe Daten.DAT doch bei dem Aufruf wird immer der störende Windows CMD Bilschirm angezeigt. Kann man das verhindern, oder gibt es andere Möglichkeiten? |
|
|
| |
|
|
| |
|
- Seite 3 - |
|
|
| |
|
| |
|
|
|
Detlef Tussing | Das funktioniert
Habe mein Prog umgeschrieben poste es mal, obwohl ohne Relaiskarte funktioniert es nicht richtig. Mit editor.prf erstellt man eine *.DAT Datei die von der zB zBV.exe oder DL.exe beim Aufruf gelesen wird(diese EXE`S werdenvon der FMS-Software aufgerufen, die unter NT läuft), diese schreibt Daten in die daten.dat die von dem ständig laufenden Prog relais.exe gelesen und ausgeführt wwerden. Unter XP kein Problem aber unter NT Ich hoffe das ich meine Prog`s verständlich beschrieben habe im Anhang die Prog´s EDITOR |
|
|
| |
|
|
|
Michael Wodrich | Ich habe mir diesen Thread genau durchgelesen, doch zur Lösung fehlen mir einfach Informationen.
Was genau macht die externe Software? - Ruft sie nur ein einziges definiertes Programm auf oder wird für jedes Fahrzeug ein eigenes Programm aufgerufen? - Schreibt diese Software Daten in ein Datenfile? -- Wann werden diese Daten geschrieben (was ist der Auslöser dafür) -- Wie schnell erfolgen weitere Einträge? Jede Sekunde? -- Was passiert wenn die Datendatei nicht da ist? Wird sie automatisch neu angelegt? -- Welche Daten werden geschrieben?
Anscheinend werden 2 Relaiskarten angesteuert. Hier fehlen genauere Informationen - was wird wie geschaltet.
Die Daten aus den erfolgten Schaltungen am Relais sollten protokolliert werden, damit man sehen kann wann die Software welche Relais betätigt hat. Das könnte in einer DBF-Datei gespeichert werden.
Ich sehe mir Deine Programmierung mal genauer an - wahrscheinlich wird da schon einiges klarer werden. Aber die Informationen über das, was das externe Programm da genau macht, die fehlen natürlich. Welche Daten können denn über den Funk alle abgegriffen werden.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 02.05.2007 ▲ |
|
|
|
|
Detlef Tussing | Das FMS-Auswerteprogramm liest Daten über die Soundkarte ein und stellt sie in Listenform da. Als Option kann dieses Programm bei einem eingetragenen Fahrzeug das den Status 2 sendet ein Aktion auslösen. D. h. es ruft eins von 10 meiner Exe-Dateien auf, die dann direkt die Relaiskarten steuern, das läuft auch sehr gut. Nun habe ich etwas geändert. Die 10 Exe-Dateinen steuern nicht mehr die Relaiskarte, sondern schreiben Datum, Uhrzeit, Tornummer und von wann bis wann das Licht nicht eingeschaltet werden soll in eine *.DAT Datei. Also die DL. Exe in die DL.Dat, die TLF.Exe in die TLF.Dat, die zbv.exe ind die zbv.Dat Im Hintergrund läuft die Relais.Exe, die die Anderung in den *.DAT Dateien merkt, diese Daten ausliest und dann entsprechen bearbeitet und zur Relaiskarte sendet. Und das mit den DAT Dateien lauft unter NT nicht. Unter XP habe ich eine Batch Datei geschrieben die nacheinander die 10 Exe-(Fahrzeug)Dateien aufruft, das entpricht dem, als wenn 10 Fahrzeuge fast zeitgleich einrücken. Dies erkennt die Relais.exe und öffnet nach und nach alle 10 Tore |
|
|
| |
|
|
|
Detlef Tussing | Hallo Michael, und alle anderen die mir helfen wollen.
Hab den Fehler gefunden
Wenn ich alle von mir geschriebenen Dateien in den Ordner des FMS-Programm kopiere funktioniert es, soga mit der Version Relais.exe DL.DAT
nochmal Dankeschön an alle
werde bestimt noch öfter auf eure Hilfe angewiesen sein, plane was neues(altes verbessern) wo ich schon auf Probleme stosse |
|
|
| |
|
|
|
Michael Wodrich | Eine weitere Idee:
In der Hilfe unter Par$() steht ein Programmteil, der Dir den Namen des laufenden Programmes nennt.
Wenn Du die 10 EXEn also mit NAME01 bis NAME10 benennst, dann bekommst Du innerhalb des Programmes über den Namen heraus welches davon aufgerufen wurde.
Schreibe also nur ein Programm und steuere intern über den abgefragten Namen die zu bearbeitenden Daten (parameterfrei).
Dann brauchst Du ein und das selbe Programm nur noch 9 mal kopieren (das läßt sich über eine Stapeldatei lösen).
Dadurch bearbeitest Du alle Fahrzeuge in nur einer einzigen Datei - der Programmname selbst ist dann sozusagen der Parameter.
Wenn man dann die Daten in einer DBF speichert kann auch ein Feld zum abhaken aufgenommen werden. z.B. ein 1-Zeichen Feld: A - dieser Datensatz wurde gerade angelegt (von der NAMEnn.exe) B - Datensatz wurde von Relais.exe verarbeitet X - dies ist ein Testdatensatz von NAMEnn Y - dieser Testdatensatz ist verarbeitet Damit hat man dann auch automatisch ein Protokoll. Hierfür kann man dann ein eigenständiges Programm bauen, das diese Daten (mit oder ohne Testdaten) anzeigt. Solche Protokolle können sehr hilfreich sein.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 04.05.2007 ▲ |
|
|
|
|
Detlef Tussing | Hallo Michael
Das mit der DBF ist eine gute Idee, werde mal versuchen das zu verwirklichen.
Den anderen Teil hab ich schon geändert. es gibt nur noch die Relais.exe die mit Parametern für das jeweilige Fahrzeug aufgerufen wird. Die Parameter stehen z.B. in der DL.DAT diese wird wiederum von der Editor.exe erzeugt b. z. w. geändert. Somit kann ich auch neue Fahrzeuge einfügen. Was mir noch nicht gelungen ist, neue Fahrzeuge in der Editor.exe anzuzeigen, dafür brauche ich wohl eine ListBox und keine ChoiceBox aber das funktioniert bei mir nicht. muss noch etwas üben |
|
|
| |
|
|
|
Detlef Tussing | Da bin ich schon wieder mit einer neuen Frage
kann mann das, weil es so einfach aussieht
AddFiles *.DAT Wahl$ = @ListBox$(Wähle Datei:, 7)
anstelle meiner ChoichBox Fahrzeug im oben genannten EDITOR.PRF einbauen, mit der Funktion CREATE(LISTBOX,%HWND,LISTBOX,0013,0023,0132,0255) komm ich nicht klar |
|
|
| |
|
|
|
| @Hallo Detlef
mit der Funktion CREATE(LISTBOX,%HWND,LISTBOX,0013,0023,0132,0255) komm ich nicht klar
Warum kommst Du damit nicht klar ? - Du musst der Listbox ein handle% geben. Dann hast Du mehr Möglichkeiten. Wenn die Listbox auf das Hauptfenster kommt, dann %HWnd. Soll sie aber auf ein Dialogfenster, dann an Stelle von %HWND das handle% des Dialogfensters: KompilierenMarkierenSeparierenDECLARE list&,x%,y%,xb%,yh%,font%
font%=CREATE(FONT,ARIAL,16,6,0,0,0) Font auswählen
x%=20 diese 4 Werte anpassen
y%=50
xB%=250
yh%=400
-----------------------------------------------------------------
WINDOW 0,0-%MaxX,%MaxY
CLEARLIST
list&=CREATE(LISTBOX,%HWND,,x%,y%,xb%,yh%)
SetFont list&,font%
AddFiles *.dat wenn nötig mit Pfad
MoveListToList(list&)
MoveListToHandle(list&)ab XProfan10
WAITINPUT
DesTroywindow(list&)
CLEARLIST
Der Code ist ungeprüft. Denke aber, dass er läuft |
|
|
| |
|
|
|
Detlef Tussing | Hallo Horst Bei
MovelisttoHandle(list&)ab XProfan10
bekomm ich die Fehlermeldung
Funktion nicht auf dieses Fensterobjekt anwendbar |
|
|
| |
|
|
|
| @Detlef Du musst erst ein Fenster erstellen- Sorry hab ich vergessen.
Füge vor dem ersten CLEARLIST ein CLS ein.
Dann sollte es klappen. Natürlich kannst Du auch mit
WINDOW links%,oben%-rechts%,unten%
ein Hauptfenster mit Deinen Maßen erstellen |
|
|
| |
|
|
|
Detlef Tussing | Hallo Horst Aber die Fuktion die ich bei
AddFiles *.DAT Wahl$ = @ListBox$(Wähle Datei:, 7)
erziele hab ich noch nicht !
in dem Editor.prf, hatte mir IF geholfen die ChoiceBox5 Fahrzeug editierbar zu machen, das läuft auch aber ich hab es nicht verstanden warum. Nun bräuchte ich die Funktion das ich erst alle Fahrzeuge aufgelistet bekomme, sie veränder kann, ader auch neue Fahrzeuge abspeichern kann. Bisher konnte ich nur die im Prog gelisteten Fahrzeuge sehen, jedoch auch neue eintragen aber nicht sehen.
kannst du mir weiter helfen ? |
|
|
| |
|
|