TwinCat Load Symbol Data @camper



  • @camper sagte in TwinCat Load Symbol Data @camper:

    Urspünglich ging es ja auch nur darum, die bereitgestellten Daten auszulesen und zugänglich zumachen. Der Einbau von Workarounds wegen Bugs war nicht geplant

    Nun ja. Ich sag mal so die ganze string fumelei wurde ja nur gemacht weil die ADS Schnittstelle voller bugs ist. Das alles war also sowieso schon ein workaround weil Beckhoff die meisten Informationen in dem feld Typename als string codiert und hier mehr ausnahmen drin sind als Regeln.

    @camper sagte in TwinCat Load Symbol Data @camper:

    Wenn ich mich recht erinnere, war das ja mit ein Teil des Problems, dass im ursprünglichen Code, den du hattest, der Speicherverbrauch enorm war, ...

    Ja klar lag es daran, aber ich habe ja nichts davon wenn ich einfach Informationen weglasse die ich benötige nur damit ich den Speicherverbrauch reduziere. Ich muss in meiner Liste nach einem Vollständigen Namen suchen können.


  • Mod

    @camper sagte in TwinCat Load Symbol Data @camper:

    Wenn ich mich recht erinnere, war das ja mit ein Teil des Problems, dass im ursprünglichen Code, den du hattest, der Speicherverbrauch enorm war, ...

    Ja klar lag es daran, aber ich habe ja nichts davon wenn ich einfach Informationen weglasse die ich benötige nur damit ich den Speicherverbrauch reduziere. Ich muss in meiner Liste nach einem Vollständigen Namen suchen können.

    Es wird ja gerade keine Information weggelassen: eine Liste aller Variablen kann jederzeit leicht generieren werden, es muss nur beachtet werden, dass eine einfache Schleife nicht ausreicht, sondern (zweckmäßigerweise) rekursiv gearbeitet werden muss (einige meiner simplen Testprogramme tun genau das).
    Welche konkrete Funktionalität vermisst du?



  • Unser Konzept war bisher so dass ich mir alle Symbole aus der SPS lade und nur von den benötigten Symbolen Instanzen erzeuge für den lesenden und schreibenden Zugriff.

    Für dieses erzeugen der Klassen haben wir eine Factory geschrieben die Informationen über den Datentypen des Symbols benötigt. Da wir nur zugriff auf ein paar bestimmte Datentypen benötigen ist das mit den vielen ausnahmen im typename gar nicht aufgefallen bzw. war uns auch egal.
    Das Regelwerk hat für uns ausgereicht. Unser vorhaben war eigentlich nie die Intigrität der SPS zu prüfen. Sowieso nicht über die fehlerhafte ADS Schnittstelle.

    Was natürlich nicht optimal war, war das auslesen und aufbereiten der Symbole was ja aber größenteils von Beckhoff war.
    Hier hast du mir ja sehr viel geholfen.

    Nun zu deiner Frage:
    Ich will ja keine Liste aller Variablen generieren sondern nur die Informationen von ein paar benötigten Variablen anfordern.
    Und hier möchte ich ja nicht über alles interieren.

    Aber: Ich habe nun denn fullname zum test mit in AdsData abgelegt. Und muss sagen mein Speicher steigt nicht wirklich deutlich an.
    Speichverbrauch beim Start meines Programmes : 12.000 KB
    Speichverbrauch Nach dem laden aller Symbole : 18.000 KB

    Von dem her sieht das doch gut aus.



  • Würde nun gerne die AdsVarData Instanz einer Ads Variablen in meiner Zugriffsklasse auf die Ads Variable speichern. Aber dazu natürlich keine Kopie der AdsVarData anlegen. Hätte dies jetzt als shared_ptr auf die adsVardata Instanz ablegen.

    Du hast in deinem Code keinen shared_ptr verwendet.

    Weiß jetzt nicht wie ich nun von deinen zurückgelieferten AdsVarData Objekten keine kopien ablege sondern nur Zeiger darauf.

    Kannst du mir da nochmals helfen?



  • Wie wär's wenn du die Sprache lernst bevor du Auftragsarbeiten annimmst?



  • @Swordfish sagte in TwinCat Load Symbol Data @camper:

    Wie wär's wenn du die Sprache lernst bevor du Auftragsarbeiten annimmst?

    Danke für die harten Worte. Würde jetzt zwar nicht sagen dass ich ganz ungelernt bin. Aber mit dem Code von Camper habe ich etwas zu kämpfen.

    Aber nur weil nun ein paar Dinge Unklar sind darf ich hier nicht nachfragen? Genau aus den Antworten von hier lerne ich ja dazu.



  • Hm? Zeig mal wo du nicht Pointer machen kannst?



  • @booster sagte in TwinCat Load Symbol Data @camper:

    Weiß jetzt nicht wie ich nun von deinen zurückgelieferten AdsVarData Objekten keine kopien ablege sondern nur Zeiger darauf.

    Nun ja Pointer kann ich schon machen. Die Frage war eigentlich eher an Camper wieso seine Klasse eine Kopie auf adsvardata zurückliefert und keinen Zeiger darauf.



  • Ah, uh, ah



  • @spiri sagte in TwinCat Load Symbol Data @camper:

    Ah, uh, ah

    ??


Anmelden zum Antworten