Ticketdrucker neu Scripten - Probleme

Welcome to the OMSI-WebDisk!
As guest you can only see content in your selected language! Registered users can choose the visibility of other languages in their control panel, more informations here. All topics are marked with a language flag inside the forums: = English [EN], = German [DE], = French [FR].
If you're not able to speak the topic language than write in English!
  • Hallo zusammen,


    ich habe in letzter Zeit angefangen, mich mit Scripts zu beschäftigen und habe nun angefangen, den AFR200 neu zu scripten. Logfile-Fehlermeldung kommen beim aktuellen Stand nicht mehr, jedoch reagiert das script nicht ganz so wie ich will.


    Soll:

    -Ticketdrucker ausgeschaltet, wenn Elektrik aus, autom. Anschalten bei Start der Elektrik

    -Bei Start: Wechsel in Mode 1 (Startbildschirm)

    -Bei Drücken der Auslösetaste in Mode 1: Wechsel zur Codeeingabe

    -Code richtig: Wechsel zu Mode 5 (Temporär)

    -Code falsch: Wechsel zu Mode 4 (Falsche Eingabe)

    -In Mode 4: Timer 3sec., danach zurück zu Mode 3


    Ist:

    -Der Drucker reagiert auf elektrik

    -Bei Drücken der Auslösetase kann man den Code eingeben

    ABER:

    -Der Bildschirm aktualisiert sich nicht, lediglich an der Akustik lassen sich z.B: die Codeeingabe erkennen

    -Nach der Codeeingabe passiert nichts mehr.


    Noch ein Paar erklärungen:

    Das Druckerdisplay wird folgenden Variablen angesteuert:

    ticketprinter_display (1. Zeile)

    IBIS (2. Zeile)


    Hier die Scripte, anhand der Logfile ließ sich erkennen, dass mit Varlist und Stringvarlist alles ok zu sein scheint.

    Ich weiß, es ist etwas Länger, trotzdem würde es mich echt freuen wenn sich jemand der Sache annehmen würde und mich somit beim Scriptlernen unterstützt!


    EDIT: Script, Varlist, Stringvarlist & Constfile sind angehängt (AFR200.zip)

    Hauptscript:

    Constfile:

    Code
    [const]
    AFR_Code
    1111
    [const]
    AFR_Code_2
    2222


    Über Hilfe würde ich mich freuen!


    LG Niklas

    Aktuell: Projekt Dreiländereck: Map & Repaints aus dem Großraum Basel


    Edited once, last by der_Nik_ ().

  • Advertisement
  • Hello,


    It's a little hard to give you any pointers without being able to test first. Is there a bus/mod that would allow me to easily/conveniently test your code (sorry -- I've lost track of all the different ticket printers)?


    One obvious little bug nonetheless: Your AFR_Codeeingabe-macro lacks a closing {end}. That might cause the script interpreter to also execute the next macro, AFR_Setmode_4, whenever the former gets called, in turn leading to erroneous side effects.


    As usual, feel free to respond in German.

  • Danke für deine Schnelle Antwort!

    Ich habe den [end]-Eintrag ergänzt, wa aber leider keine Veränderung brachte.


    Der Verwendete Drucker ist der AFR200 für den Citaro von Sven Daniel (hier erhältlich).


    Danke für deine Hilfe, ich habe meine Scriptdateien angehängt (AFR200.zip), diese sollten sämtliche IBIS- und Ticketprinter-Script ersetzen.


    LG Niklas

    Aktuell: Projekt Dreiländereck: Map & Repaints aus dem Großraum Basel


  • I'm sorry -- I thought that this would be a quick and painless bug hunt; I was wrong. Your script gave me a hard time to even get it to run last night. After a bit of banging my head against the wall, I realized it's probably due to the classic OMSI Unicode-related quirks (UTF-8-encoded file + non-ASCII (German) characters within the file + Windows configured with a non-German locale --> magic inexplicable Zugriffsverletzung + non-spawning bus); once I had removed everything from your file, leaving just two blank pairs of init and frame macros behind, the bus would at least spawn. Anyway, unless someone else helps you out meanwhile, I'll get back to you later today or tomorrow, once I've had some time to go over your code line-by-line to get rid of all non-ASCII characters.


    For the time being, some more syntax issues (line numbers as per your attached AFR.osc):

    • Line 262: You need an {endif} instead of an {end} there.
    • Line 349: By the time you reach the end of the ticketprinter_frame-macro, you still have 2 open {if}s, i.e., you are missing 2 complementing {endif}s. In the code you have directly included in your opening post, you seem to have fixed that.
  • Danke für deine Mühe! Deine genannten Fehler habe ich angepasst.

    Der hauptfehler lag daran, dass ich den Befehl "Refresh_Strings" vergessen habe!

    Jetzt scheint es zu funktionieren.


    Evtl. kann ich ja das Textfeld-Problem nochmal ansprechen, das untere Textfeld wird zu weit unten angezeigt.

    Ich habe gegenüber dem Original-Screen nichts in der Model.cfg verändert, gibt es noch weitere Optionen bei der Textansteuerung, die ich beachten muss?



    LG Niklas

    Aktuell: Projekt Dreiländereck: Map & Repaints aus dem Großraum Basel


  • For reasons unknown to me, the original script appends a line-break ("@" character) at the end of its IBIS string-variable (see AFR200\IBIS-2.osc, line 504). With that line-break, the string gets output at the proper height. Perhaps an expert on the field of text-textures and fonts could illuminate us both on why that is.


    Good catch on the Refresh_Strings callback variable!

  • Ja, du musst die String Ausgabe ab und an mal neu laden. Kannst du über genannte Funktion machen. Einfach auf 1 setzen. Ist eine interne OMSI Variable, brauchst du nicht eintragen.

    "But you won't fool the children of the revolution" :evil:

  • Lazarus danke für den Hinweis, ich habe es mithilfe der OMSi-Wiki schon hinbekommen (dort bin ich auch über diese Variable gestolpert)

    Unorthodox Paradox Auch dir Danke, ein "@" am Zeilenende verschiebt Tatsächlich den Text in die RIchtige Position!


    Danke für eure Hilfsbereitschaft!

    Bisher habe ich die Codeeingabe & Linienbeschilderung programmiert, jetzt gehts an die Haltestellenanzeige & Weiterschaltung sowie den Fahrscheinverkauf.



    LG Niklas

    Aktuell: Projekt Dreiländereck: Map & Repaints aus dem Großraum Basel