Beiträge von maSu

    Guten Abend,


    Ich nutze seit längerem Socketmessaging bei mehreren FANUC Robotern.


    Alles klappt hervorragend, sofern sich ein Client beim Server anmeldet. Bleibt diese Anmeldung aus, dann bleibt das Karel Programm scheinbar auf ewig in der Zeile "MSG_CONNECT(...)" stecken und wartet auf einen Client. Es handelt sich um ein Hintergrundprogramm.


    Ist die Kommunikation aufgebaut, steht er in While Schleifen bis der Client weg ist oder ein IO Flag gesetzt wird.


    Nur wenn kein Client kommt, dann kann ich das Programm nicht beenden. Im Falle von Serviceeinsätzen unschön: der Techniker vor Ort kann das Programm nicht ohne weiteres beenden. Cold-Start bringt nichts, es wird beim Start des Roboters mitgestartet. Dem Techniker erklären, wie man das ändern kann ... ist hier nicht sinnvoll bzw gewünscht. Das Programm muss irgendwie sicher und einfach beendet werden können, sodass dann in der Anleitung für Softwareupdates steht:
    "MakroTaste1 drücken (dann startet ein Programm, welches IO Flag xy = true setzt, sodass sich alle Hintergrundprogramme beenden und das Update kopiert werden kann). Updaate installieren gemäß Anleitung."


    Ich sehe nun zwei Möglichkeiten:


    1. Timeout. Irgendwie müsste man dafür sorgen, dass der Server nur XX Sekunden (30?) auf einen Client wartet. Kommt keiner: Neustart des Servers in einer abbrechbaren Schleife.
    Folge: Setzt man ein IO Flag, kann man das Programm beenden bzw verhindern, dass der Server erneut auf Clients wartet.


    2. Ein zweites Hintergrundprogramm, welches die IO Flags beobachtet (Endlosschleife mit Delay) und bei IO Flag xy=True dann den Server (und sich selbst) beendet.
    Hier muss ich aber passen, weil ich nicht weiß, wie Karel Programm A nun Programm B beenden könnte (finde dazu nichts).




    Wenn mir da jemand weiterhelfen könnte, wäre das echt super. Schönen Abend noch! :)

    Hallo,
    ich habe eine kurze Frage:
    Kann man irgendwie alle Dateien in einem Ordner auflisten?
    Ich lege dann zB ein ARRAY[50] OF STRING[50] an und eine Funktion füllt dann die ersten 50 Dateien, die in einem Ordner gefunden wurden in das Array.


    Weiß jemand wie das geht?



    Edit: Habs in der Doku gefunden:
    FILE_LIST Built-In Procedure