Jump to content

Empfohlene Beiträge

Geschrieben

Hallo,

habe eine liste von kontaktnamen (string)  (in Reihenfolge).
Wie kann ich daraus ohne schlagworte eine liste machen, die als target funktioniert ?

so geht es jedenfalls nicht :
 

function CreateTargetFromKontaktListe(KontaktListe)
    local liste = {}
    for counter = 1,  #KontaktListe, 1  do
        table.insert (liste, layout:getEntityByName(KontaktListe[counter]))
    end
    return liste
end

Gruss
Gmd

 

Geschrieben (bearbeitet)

Hallo Gmd,

in Lua kannst du einen String mit gfind() zerlegen.
So bekommst du nacheinander alle Teilstrings zwischen deinem Trennzeichen.

Programming in Lua : 20.3

In der unteren Hälfte der Seite ist gfind erklärt.

Auszug:

words = {}

for w in string.gfind(s, "%a") do
  table.insert(words, w)
end

Weil es ein Schleifenkonstrukt ist, kannst du jeden gefundenen Teilstring innerhalb der Schleife an deine Liste anhängen.

Viele Grüße
Götz

Bearbeitet von Goetz
Geschrieben (bearbeitet)

Sorry Goetz,

das war nicht die frage .. die Kontaktliste und die for schleife ist voellig ok,
table.insert .. etc der Kontaktobjekte funktioniert nicht als target.
Gruss
Gmd

 

Bearbeitet von gmd
Geschrieben

Hallo @gmd,

das Skript ist in Ordnung. Wenn ich eine Liste mit Objektnamen "reinschicke", erhalte ich eine Liste der so benannten Objekte. Gibt es ein Objekt nicht, so fehlt der entsprechende Eintrag in der Ergebnisliste.

Das Problem scheint eher daran zu liegen, was Du später mit der Ergebnisliste machen möchtest. Möchtest Du eine Liste von Zielen zu einem Fahrzeug eintragen?

Viele Grüße,
    Wolfgang

 

 

Geschrieben
3 minutes ago, prinz said:

Hallo gmd,

das Skript ist in Ordnung. Wenn ich eine Liste mit Objektnamen "reinschicke", erhalte ich eine Liste der so benannten Objekte. Gibt es ein Objekt nicht, so fehlt der entsprechende Eintrag in der Ergebnisliste.

Das Problem scheint eher daran zu liegen, was Du später mit der Ergebnisliste machen möchtest. Möchtest Du eine Liste von Zielen zu einem Fahrzeug eintragen?

Viele Grüße,
    Wolfgang

 

 

ja .. vehicle.target = listeVonKontaktObjekten
Gruss
Gmd

Geschrieben

Haha, nur weil ich das versuche heist das nicht dass es geht.
Es geht nicht, deshalb die frage, aber wahrscheinlich liege ich daneben .. :) 
Gruss
Gmd

 

Geschrieben

Sorry, ich dachte das ist ausreichend ..
Wenn du mir sagen kannst dass das so funktionieren muesste, dann kann ich das weiter eingrenzen.
Ich dachte es gibt einen trick bei der erstellung der target liste.
Die steuerung und die tabellen auf der sie arbeitet ist sehr umfangreich und ist nicht wirklich sinnvoll 
als kontext, meine ich jedenfalls
Gruss
Gmd

 

Geschrieben (bearbeitet)
vor 5 Minuten schrieb gmd:

Ich dachte es gibt einen trick bei der erstellung der target liste.

Der einzige "Trick", der mir einfällt ist, dass die Objekte in der richtigen Reihenfolge aufgelistet sein müssen.
Wenn du eine Liste übergibst, hangelt sich das Fahrzeug von einem Kontakt zum nächsten.

Aber immer, wenn ich solche Hinweise gebe, kommt "weiß ich doch längst" zurück.

Du sagst, was du "richtig" machst. Aber diese Beschreibung enthält keinerlei Hinweis darauf, was du dabei eventuell falsch machst.

Wieder und wieder sagen wir hier jedem Fragesteller: "Zeig uns, was du getan hast. Gib uns deine Anlage!" 
Weil jeder nur aufzählt, was er alles richtig gemacht hat. Das nützt dem Helfenden aber nichts!

Bearbeitet von Goetz
Geschrieben

Goetz,
ich verstehe was du sagst, und wenn es eine kleine anlage mit ein paar zeilen Lua waere wuerde ich das ja auch tun.
Aber wenn ich so eine anlge zur fehlersuche bekaeme, dann waere das eine zumutung, also habe ich versucht die frage auf das wesentliche zu beschraenken.
Ich entnehme aus deiner antwort, dass das script so funktionieren muesste (mit reihenfolge der kontakte)..
Also werde ich stueck fuer stueck  eingrenzen woran es liegt ..
 
hier nur ein kleines beispiel


function CheckAllTracksForAvailability(Modul, DataDefinition)
  -- Hofstatus bei Einfahrt
  Modul.variables[DataDefinition[8][2]]  = not StatusFreight  (Modul, DataDefinition[1])       -- Belegungspruefung fuer Tore
  Modul.variables[DataDefinition[8][3]]  = not StatusFreight  (Modul, DataDefinition[2])       -- Belegungspruefung fuer Parken
  Modul.variables[DataDefinition[8][4]]  = not StatusEntry    (Modul, DataDefinition[6])       -- Belegungspruefung fuer Wartespuren
  Modul.variables[DataDefinition[8][5]]  = not StatusEntry    (Modul, DataDefinition[7])       -- Belegungspruefung fuer Wendespuren
  Modul.variables[DataDefinition[8][1]]  = Modul.variables[DataDefinition[8][2]] and
                                           Modul.variables[DataDefinition[8][3]] and
                                           Modul.variables[DataDefinition[8][4]] and
                                           Modul.variables[DataDefinition[8][5]]
end

Das script ist sehr abstrakt (total generisch) und es ist aufwand sich damit zu beschaeftigen.. und das moechte ich einfach vermeiden. Also glaube mir, es ist kein boeser wille , dass ich dies frage versucht habe auf den punkt zu bringen.

Werde weiter testen.

Gruss
Gmd

 

Geschrieben
vor 4 Minuten schrieb gmd:

Ich entnehme aus deiner antwort, dass das script so funktionieren muesste (mit reihenfolge der kontakte).

Und der Beispielanlage kannst du auch entnehmen, dass es das wirklich tut.
Vielleicht hilft dir ja der Vergleich mit deiner Anlage, die Fehlerursache zu finden?

Geschrieben

Ja, das hatte ich schon versucht, Deine loesung passt aber nicht fuer mich in diesem fall.
Werde mich zurueckmelden wenn ich ein ergebnis habe.
Gruss
Gmd

 

Geschrieben

Also,
habe den fall einfach drastisch reduziert, was ich von anfang an haette machen sollen,
         

         local target = {}
          table.insert(target, layout:getEntityByName(liste[2]))
          table.insert(target, layout:getEntityByName(liste[3]))
          vehicle.target =  target      

liste ist eine liste von kontakt namen, die schon an anderer stelle verwendet wird und korrekt ist, aber offensichtlich nicht als target eingabe funktioniert.
Werde jetzt jeden eintrag explizit als test hinzufuegen, dann werde ich schon merken wo es klemmt. 

Danke fuer eure antworten.
Gruss
Gmd

 

Geschrieben
vor 6 Minuten schrieb gmd:

Deine loesung passt aber nicht fuer mich

Himmelherrgott!!!
Wenn du wenigstens erklären würdest, was daran nicht passt. (headbang emoji)

Ich mache doch das, was du beschrieben hast. Mit deinem Skript!
Ich nutze deinen Code, um aus einer Namensliste eine Objektliste mit Kontakten zu generieren, die ich dann als Ziel an ein Fahrzeug übergebe.

Und das funktioniert!

Geschrieben

Da hast du aber recht !! .. Ich hatte nicht gesehen, dass du ein beispiel gemacht hattest .. Ich hatte dies fuer das beispiel mit der geradeausfahrt gehalten. 
Bitte vielmals um entschuldigung, dass ich die nicht die volle aufmerksamkeit gewidmet habe.
Werde daraus lernen :) ..
Gruss
Gmd

 

Geschrieben (bearbeitet)

Hier die rueckmeldung und der grund warum es nicht ging.
ueberblick.thumb.jpg.7f169dae20c768efde6f34a72482efed.jpg

Hier ist die uebersicht ueber den spurverlauf fuer die beiden speditionen. Eines an dieser stelle: Die spuren zu verlegen
ist ein geduldsspiel und muss sehr genau erfolgen. Habe 2D zeichnung sehr oft dafuer verwendet, da die andockpunkte
von kurven und geraden genau stimmen muessen. Und das war auch das problem am ende der einen spur.
spur.thumb.jpg.a6e7e694726cd801426f429628df073d.jpg

Das ist die spur um die es ging. Mein fehler war dass ich sie nicht manuell vollstaendig geprueft hatte, dann haette ich
gemerkt, dass der letzte kontakt nicht akzeptiert wurde (Fehler 7 abzweigungen).
spurende.thumb.jpg.f9d5ddfcfb12a9a162464ec21ea24c02.jpg
Man sollte meinen dass das hier kein problem ist, nur eine abzweigung zwischen den kontakten - ABER:
spur_problem.thumb.jpg.85222c1c834393d7326e9568d57e9cc1.jpg

Die weiterfuehrende gerade hat nicht genau am ende des bogens angedockt. Damit wurde keine spur gefunden und
es kam diese fehlermeldung, aber eben nicht im script und der ereignisprotokollierung.
Da war ich einfach schlampig und am ende so genervt, dass ich keinen systemematischen test mehr gemacht habe.
Sorry fuer den aufwand, aber vielleicht profitiert jemand von diesem thread. Dann waere es die sache wert.

Dies ist eine anlagen komponenten die spater von der steuerung bedient wird. Dabei sind alle grundfunktionen
innerhalb des speditionshofes in Lua geloest (mit einem wiederverwendbaren generischen script) und die uebergeordnete
steuerung der frachtfahrten wird nach fahrplan von dem externen programm uebernommen. 
Ausserdem wollte ich einfach mal die zielfunktion ausprobieren, die ja jetzt solche anwendungen ermoeglicht. Mit der alten 
weichenstellung waere ein solches modell und vorhaben einfach nicht denkbar.

Gruss
Gmd

 

Bearbeitet von gmd

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...