Seite 1 von 2

Test BMP Buchfahrplan

Verfasst: 21.01.2017 13:10:49
von Holger Lürkens
Ich vermisse das Erstellen aller Buchfahrpläne als BMP-Bild im temp-Ordner. Zum manuellen nach bearbeiten der Buchfahrpläne muss ich manchmal eine höhere zweistellige Zahl an Buchfahrplänen im Fahrplaneditor (Buchfahrplan testen - Buchfahrplan aus xml generieren...) anklicken. Diese Funktion benutze ich sehr oft. Ein abschließender Gesamtüberblick über alle Buchfahrpläne nach Fertigstellung der Fahrpläne ist damit auch nicht möglich. Es wäre toll, wenn es einen Button gäbe, nicht nur einen sondern alle Buchfahrpläne mit einem Klick zu generieren.

Holger

Re: Test BMP Buchfahrplan

Verfasst: 21.01.2017 14:01:43
von F. Schn.
a) Lege eine Datei "BmpCreator.cs" mit folgendem Inhalt an:

Code: Alles auswählen

public class BmpCreator
{
    [System.Runtime.InteropServices.DllImport("C:\\Program Files (x86)\\Zusi\\_InstSetup\\lib\\timetable\\Buchfahrplan_DB_1979.dll", 
    EntryPoint="Config", CallingConvention=System.Runtime.InteropServices.CallingConvention.StdCall)] 
    public static extern void Config(System.IntPtr AppHandle);
    [System.Runtime.InteropServices.DllImport("C:\\Program Files (x86)\\Zusi\\_InstSetup\\lib\\timetable\\Buchfahrplan_DB_1979.dll", 
    EntryPoint="Autor", CallingConvention=System.Runtime.InteropServices.CallingConvention.StdCall)] 
    public static extern string Autor();
    [System.Runtime.InteropServices.DllImport("C:\\Program Files (x86)\\Zusi\\_InstSetup\\lib\\timetable\\Buchfahrplan_DB_1979.dll", 
    EntryPoint="Bezeichnung", CallingConvention=System.Runtime.InteropServices.CallingConvention.StdCall)] 
    public static extern string Bezeichnung();
    [System.Runtime.InteropServices.DllImport("C:\\Program Files (x86)\\Zusi\\_InstSetup\\lib\\timetable\\Buchfahrplan_DB_1979.dll", 
    EntryPoint="dllVersion", CallingConvention=System.Runtime.InteropServices.CallingConvention.StdCall)] 
    public static extern string dllVersion();
    [System.Runtime.InteropServices.DllImport("C:\\Program Files (x86)\\Zusi\\_InstSetup\\lib\\timetable\\Buchfahrplan_DB_1979.dll", 
    EntryPoint="FahrplanErzeugen", CallingConvention=System.Runtime.InteropServices.CallingConvention.StdCall)] 
    public static extern string FahrplanErzeugen(string Arbeitsverz, string xmlDateiAbsolut, string bmpDateiAbsolut);

    public static void Main()
    {
        System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("C:\\Program Data\\Zusi\\Timetables\\Deutschland\\Ruhrtalbahn\\Fahrplan1981_04Uhr-12Uhr");
        System.IO.FileInfo[] files = dir.GetFiles("*.timetable.xml");
        System.IO.DirectoryInfo outputDir = new System.IO.DirectoryInfo("C:\\Program Data\\Zusi\\temp\\TestBMP");
        outputDir.Create();
        foreach(System.IO.FileInfo fi in files)
        {
            System.Console.WriteLine(FahrplanErzeugen("C:\\Program Data\\Zusi\\", //Wenn der Pfad mit "\\" endet, werden die Meldungen 
                                                                                //nach temp\\exportlog.txt geschrieben, andernfalls gibt es Meldungsboxen.
                   fi.FullName, outputDir.FullName + "\\" + fi.Name + ".bmp"));
        }
    }
}

b) Ersetzte die Pfade "C:\\Program Files (x86)\\Zusi\\_InstSetup\\lib\\timetable\\Buchfahrplan_DB_1979.dll" (DLL), "C:\\Program Data\\Zusi\\Timetables\\Deutschland\\Ruhrtalbahn\\Fahrplan1981_04Uhr-12Uhr" (Quellordner), "C:\\Program Data\\Zusi\\temp\\TestBMP" (Zielordner) und "C:\\Program Data\\Zusi\\" (Zusi-Datenverzeichnis) so, wie es auf deinem System passt.

c) Drücke in dem Ordner, wo du die Datei gespeichert hast, bei gedrückt gehaltener Shift-Taste mit der rechten Maustaste auf eine freie Fläche.
d) Wähle "Eingebeaufforderung hier öffnen"
e) Kopiere folgendes in die Konsole: (Edit: Über das Kontextmenü, Strg+V funktioniert hier nicht)

Code: Alles auswählen

C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc /platform:x86 BmpCreator.cs
f) Wenn kein Fehler kommt, kannst du die Datei mit folgendem Befehl ausführen:

Code: Alles auswählen

.\BmpCreator.exe
Edit: Powershell-Kompatiblität
Edit: exportlog.txt-Hinweis

Re: Test BMP Buchfahrplan

Verfasst: 21.01.2017 15:40:34
von Holger Lürkens
Vielen Dank für das kleine Programm. Es funktioniert und arbeitet sehr schnell.

Holger

Re: Test BMP Buchfahrplan

Verfasst: 19.12.2017 16:51:55
von Holger Lürkens
Ich hatte den BmpCreator recht häufig und ohne Probleme benutzt. Als ich ihn jetzt nach mehreren Monaten Pause wieder benutzen wollte, funktioniert er nicht mehr. Die Dateipfade müssten stimmen. Hier mal das Bild mit meinen Einstellungen:
Bild

Nach der ersten Eingabeaufforderung "C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc /platform:x86 BmpCreator.cs" scheint noch alles in Ordnung zu sein. Nach Eingabe von "BmpCreator.exe" kommt dann diese Fehlermeldung im PowerShell Fenster:
Bild

Klicke ich die Datei BmpCreator.exe im Ordner Zusi3_Daten an, dann kommt die Meldung "BmpCreator.exe funktioniert nicht mehr". Das war früher nicht der Fall. Nachdem ich jetzt alle möglichen Varianten durchprobiert habe bin ich ratlos, warum der BmpCreator nicht mehr funktioniert.

Holger

Re: Test BMP Buchfahrplan

Verfasst: 19.12.2017 18:19:02
von Michael Springer
Hallo Holger,

im Abschnitt Main liegen die Zusi-Daten bei mir unter C:\\Users\\Public\\Documents\\Zusi_SVN\\Temp

Code: Alles auswählen

 public static void Main()
    {                                                              
        System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("C:\\Users\\Public\\Documents\\Zusi_SVN\\Temp");
        System.IO.FileInfo[] files = dir.GetFiles("*.timetable.xml");    
        System.IO.DirectoryInfo outputDir = new System.IO.DirectoryInfo("C:\\Users\\Public\\Documents\\Zusi_SVN\\Temp");
In deinem Beispiel liegen die Zusi-Daten aber im Programme-Verzeichnis. Kann das sein?

Michael

Re: Test BMP Buchfahrplan

Verfasst: 19.12.2017 18:53:58
von F. Schn.
Kann das Problem bestätigen. Liegt offensichtlich an PowerShell, er legt die exe irgendwohin, nur nicht dahin, wo es cmd macht. Abhilfe war mit /out: möglich:

Code: Alles auswählen

C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc /platform:x86 /out:BmpCreator.exe BmpCreator.cs
[/x]
Ähm... Quark...

Das Problem liegt aber trotsdem an PowerShell... Moment...

Also, das Problem müsste vermutlich sein, dass PowerShel den aktuellen Pfad nicht nach exes durchsucht. Abhilfe sollte schaffen

Code: Alles auswählen

.\BmpCreator.exe
zu verwenden, mein PC weigert sich aber gerade, mich das sowohl in cmd als auch in PS testen zu lassen...

Edit: So, hat jetzt doch noch geklapt. Also: wie gesagt: .\ an den Ausführungsbefehl vorne anstellen. Dann klappt es sowohl mit PS als auch mit cmd. Anleitung oben ist geupdated.

Re: Test BMP Buchfahrplan

Verfasst: 19.12.2017 19:45:09
von Holger Lürkens
Michael Springer hat geschrieben:Hallo Holger,

im Abschnitt Main liegen die Zusi-Daten bei mir unter C:\\Users\\Public\\Documents\\Zusi_SVN\\Temp

Code: Alles auswählen

 public static void Main()
    {                                                              
        System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("C:\\Users\\Public\\Documents\\Zusi_SVN\\Temp");
        System.IO.FileInfo[] files = dir.GetFiles("*.timetable.xml");    
        System.IO.DirectoryInfo outputDir = new System.IO.DirectoryInfo("C:\\Users\\Public\\Documents\\Zusi_SVN\\Temp");
In deinem Beispiel liegen die Zusi-Daten aber im Programme-Verzeichnis. Kann das sein?

Michael
Ja, bei mir liegt Zusi3 einschließlich temp-Verzeichnis unter I:\\Program Files (x86)\\Zusi3_Daten.

Leider funktioniert es immer noch nicht bei mir. Nach Eingabe von ".\BmpCreator.exe" habe ich dieses Bild:
Bild

Holger

Ich habe bei mir den Fehler gefunden. Es war noch der alte Name der Fahrplandatei im BmpCreator. Der Fahrplan läuft jetzt unter Ruhrtalbahn_Fahrplan1981_04Uhr-12Uhr.

Holger

Re: Test BMP Buchfahrplan

Verfasst: 19.12.2017 20:06:18
von Holger Lürkens
Jetzt funktioniert wieder alles. Vielen Dank für die Hilfe. War das früher auch schon so, dass der BmpCreator jeden Fahrtrichtungswechsel mit Fenster anzeigt und abfragt? Ich kann mich da nicht dran erinnern.
Bild

Holger

Re: Test BMP Buchfahrplan

Verfasst: 19.12.2017 20:21:54
von F. Schn.
Also mein Code-Anteil kann eigentlich gar keine Messageboxen erstellen. Passiert das auch, wenn du den Zug mit Zusi startest? (Ich würde mal das auf die DLL 1979 schieben.)

Re: Test BMP Buchfahrplan

Verfasst: 19.12.2017 20:36:48
von Michael Springer
Das war schon immer so. Ist bei mir auch so. Jeder Fahrtrichtungswechsel benötigt 1x Enter mit der 1979er DLL. Jens DLL braucht das nicht, die scheint den XML-Knoten zu kennen.

Michael

Re: Test BMP Buchfahrplan

Verfasst: 20.12.2017 20:33:11
von F. Schn.
Hm, in der Tat...

@Carsten: Zusi selbst schaft es irgendwie die Meldungen der DLL zu unterdrücken. Wie funktioniert das?

Re: Test BMP Buchfahrplan

Verfasst: 28.12.2017 22:12:05
von Carsten Hölscher
Habt Ihr denn nicht die 79er dll vom November 2017 am Start? Die sollte das xml-Format kennen.
Kann mir sonst mal jemand eine timetable.xml-Datei schicken, die das Problem erzeugt?

Carsten

Re: Test BMP Buchfahrplan

Verfasst: 28.12.2017 22:20:33
von F. Schn.
Ah, nein, in dem Fall bin ich noch auf der 3.1.3.0. Aber die Fragestellung bleibt gleich: Warum kann Zusi die Meldungen der DLL unterdrücken? Zusi arbeitet ja mit den selben Daten und der selben DLL wie das Script auch.

Re: Test BMP Buchfahrplan

Verfasst: 29.12.2017 00:00:22
von Carsten Hölscher
Kann ich so auch nicht sagen.
Carsten

Re: Test BMP Buchfahrplan

Verfasst: 31.12.2017 18:42:58
von Johannes
Eine moegliche Fehlerquelle ist, dass das Zusi-Datenverzeichnis (erster Parameter der FahrplanErzeugen-Funktion) mit abschliessendem Backslash angegeben werden muss. Wenn man das nicht tut, scheitert er bei dem Versuch, den absoluten Pfad der Datei "Temp\exportlog.txt" zu ermitteln -- er bastelt sich dann etwas in der Art "C:\Users\Public\Documents\ZusiTemp\exportlog.txt" zusammen -- und gibt vermutlich ersatzweise die Fehlermeldung im Dialogfenster aus.

Re: Test BMP Buchfahrplan

Verfasst: 31.12.2017 19:31:17
von Michael Springer
Die Meldung tritt nur bei wendenden Zügen auf. Bei Zügen ohne Wende läuft alles glatt mit dem Erstellen und dem Rendern des Bitmaps. Wäre das ein Pfad-Problem müssten doch alle Züge diese Meldung bringen, oder?

Michael

Re: Test BMP Buchfahrplan

Verfasst: 01.01.2018 13:31:27
von F. Schn.
Johannes, du hast vollkommen Recht. :)
Habe den Code oben um einen Hinweis ergänzt.

Re: Test BMP Buchfahrplan

Verfasst: 03.04.2018 22:16:23
von Michael Springer
Hallo,

ich habe einen neuen Rechner mit Windows10 und auch Schmerzen mit BmpCreator. BmpCreator crasht sofort beim Starten. Kurioserweise TifCreator geht ohne Probleme im gleichen Verzeichnis.

Code: Alles auswählen

PS C:\Users\Public\Documents\Zusi_ALL\temp> .\bmpcreator

Unbehandelte Ausnahme: System.DllNotFoundException: Die DLL "C:\Program Files (x86)\Zusi3\_InstSetup\lib\timetable\Buchfahrplan_DB_1979.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von n) kann nicht geladen werden.
   bei BmpCreator.FahrplanErzeugen(String Arbeitsverz, String xmlDateiAbsolut, String bmpDateiAbsolut)
   bei BmpCreator.Main()
Markiere und kopiere ich den DLL-Pfad C:\Program Files (x86)\Zusi3\_InstSetup\lib\timetable\Buchfahrplan_DB_1979.dll aus der Ausgabe in den Explorer, sagt Windows sie versuchen eine DLL zu öffnen, bla bla. Also die Datei liegt an dem Ort, warum findet er die dann nicht? Oder fehlen mir auf dem neuen Rechner weitere Abhängigkeiten?

Michael

Re: Test BMP Buchfahrplan

Verfasst: 03.04.2018 23:01:20
von F. Schn.
Beim Kompilieren das /platform:x86 vergessen?

Re: Test BMP Buchfahrplan

Verfasst: 03.04.2018 23:13:25
von Holger Lürkens
Obwohl ich seit der letzten Benutzung außer dem Namen des Fahrplan nichts verändert habe, bekomme ich jetzt auch wieder eine Fehlermeldung.
Bild
Einen Absturz würde ich das noch nicht nennen, aber auf jede Eingabe bekomme ich eine Fehlermeldung.

Holger