Klassen in aktivem Projekt modifizieren/austauschen
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Klassen in aktivem Projekt modifizieren/austauschen
Hallo alle zusammen, ich bin hier bei LVOOP auf etwas Ärgerliches Problem gestoßen und hoffe, dass mir jemand weiterhelfen kann.
Mein System: Windows XP SP3,
Labview: LabVIEW 2011
Ich arbeite derzeit mit ein paar Leuten an einem LVOOP Projekt.
Nun ist es so, dass wir eine Basisklasse haben von der viele andere Klassen abgeleitet werden wird. Die Abgeleiteten Klassen dienen ihrerseits auch als Parent Klassen. Insgesamt ist diese Vererbungshierchie aber meistens nie größer als 4-5 Stufen.
Nun ist es so dass wir auf 3 Rechnern das gleiche Projekt haben und jeder an einem Teil Arbeitet. Da leider noch nicht ganz klar definiert werden kann was alles in die jeweiligen Mutterklassen reinkommt, kommt es doch hin und wieder zu modifikationen die auf die anderen Rechner auch übertragen werden sollen.
Nehmen wir den Fall Basisklasse: A, davon abgeleitet: B und von B abgeleitet: C.
Jetzt wird an einem Rechner an C gearbeitet. Es fällt jedoch auf, dads B durchaus noch eine funktionalität benötigt bzw. eine funktionalität modifiziert werden soll.
Nun will ich die modifizierte Klasse B, auf die anderen beiden Rechner drüberkopieren. Und hier fangen dann oft die Probleme an, LabVIEW hängt sich dann teilweise mit 30% CPU Last komplett auf.
Ich habe schon einige Varianten durchprobiert:
-Projekt schließen Klasse B einfach drüberkopieren, dann wieder öffnen und wenn es nicht abstürzt einfach die Änderungen an Klasse C anpassen und es läuft (geht eben nicht wenn alles abstürzt)
-Klasse B vorher aus dem Projekt entfernen, dann Projekt schließen, Modifizierte Klasse B drüberkopieren und dann wieder neu in das Projekt reinladen
-Beide obere Varianten jeweils mit vorheriger löschung der Vererbungsbedingung.
In jedemfall ist es immer ein Glücksspiel ob das überschreiben glückt. Ich habe schon auf allen Möglichen Seiten geschaut, in der DEVzone gelesen und Foren durchforstet. Habe aber keine einfache Lösung gefunden um vererbende und abgeleitete Klassen in einem Projekt durch eine modifizierte Klasse von einem anderen PC zu ersetzen.
Ich hoffe mir kann jemand weiterhelfen, es ist zwischendurch ziemlich nervig und zeitraubend, wenn man alle 3 Computer mit den Projekten auf den selben Stand bringen will.
RE: Klassen in aktivem Projekt modifizieren/austauschen
(22.02.2012 10:46 )schnuufe schrieb: Hallo alle zusammen, ich bin hier bei LVOOP auf etwas Ärgerliches Problem gestoßen und hoffe, dass mir jemand weiterhelfen kann.
Mein System: Windows XP SP3,
Labview: LabVIEW 2011
Ich arbeite derzeit mit ein paar Leuten an einem LVOOP Projekt.
Nun ist es so, dass wir eine Basisklasse haben von der viele andere Klassen abgeleitet werden wird. Die Abgeleiteten Klassen dienen ihrerseits auch als Parent Klassen. Insgesamt ist diese Vererbungshierchie aber meistens nie größer als 4-5 Stufen.
Nun ist es so dass wir auf 3 Rechnern das gleiche Projekt haben und jeder an einem Teil Arbeitet. Da leider noch nicht ganz klar definiert werden kann was alles in die jeweiligen Mutterklassen reinkommt, kommt es doch hin und wieder zu modifikationen die auf die anderen Rechner auch übertragen werden sollen.
Nehmen wir den Fall Basisklasse: A, davon abgeleitet: B und von B abgeleitet: C.
Jetzt wird an einem Rechner an C gearbeitet. Es fällt jedoch auf, dads B durchaus noch eine funktionalität benötigt bzw. eine funktionalität modifiziert werden soll.
Nun will ich die modifizierte Klasse B, auf die anderen beiden Rechner drüberkopieren. Und hier fangen dann oft die Probleme an, LabVIEW hängt sich dann teilweise mit 30% CPU Last komplett auf.
Ich habe schon einige Varianten durchprobiert:
-Projekt schließen Klasse B einfach drüberkopieren, dann wieder öffnen und wenn es nicht abstürzt einfach die Änderungen an Klasse C anpassen und es läuft (geht eben nicht wenn alles abstürzt)
-Klasse B vorher aus dem Projekt entfernen, dann Projekt schließen, Modifizierte Klasse B drüberkopieren und dann wieder neu in das Projekt reinladen
-Beide obere Varianten jeweils mit vorheriger löschung der Vererbungsbedingung.
In jedemfall ist es immer ein Glücksspiel ob das überschreiben glückt. Ich habe schon auf allen Möglichen Seiten geschaut, in der DEVzone gelesen und Foren durchforstet. Habe aber keine einfache Lösung gefunden um vererbende und abgeleitete Klassen in einem Projekt durch eine modifizierte Klasse von einem anderen PC zu ersetzen.
Ich hoffe mir kann jemand weiterhelfen, es ist zwischendurch ziemlich nervig und zeitraubend, wenn man alle 3 Computer mit den Projekten auf den selben Stand bringen will.
Grüße Schnuufe
Herzlich Willkommen im Forum erstmal
Unabhängig von LVOOP würde ich euch ein Repository für den Code empfehlen, wir verwenden bei uns:SubVersion/. Beim Updaten von Projekten (unter anderem auch solche mit LVOOP) haben wir bisher damit noch keine Probleme gehabt.
Mittels Plug-In ist es bei Tortoise SVN (die Client-Applikation) auch möglich die Veränderungen der VI's zwischen den Versionen anzuzeigen.
RE: Klassen in aktivem Projekt modifizieren/austauschen
(22.02.2012 11:04 )M Nussbaumer schrieb: Herzlich Willkommen im Forum erstmal
Unabhängig von LVOOP würde ich euch ein Repository für den Code empfehlen, wir verwenden bei uns:SubVersion/. Beim Updaten von Projekten (unter anderem auch solche mit LVOOP) haben wir bisher damit noch keine Probleme gehabt.
Mittels Plug-In ist es bei Tortoise SVN (die Client-Applikation) auch möglich die Veränderungen der VI's zwischen den Versionen anzuzeigen.
Hoffe das hilft euch etwas weiter.
Gruss Marc
Hi Marc vielen Dank für die Antwort ich werd das auf jedenfall für zukünftige Projekte das ganze berücksichtigen.
Kennst du sonst (oder irgend jemand) sonst eine Möglichkeit modifizierte Klassen einfach vom anderen Rechner drüberzukopieren ohne sich dabei alles zu zerschießen? Es muss doch in LabVIEW unabhängig von drittanbieterlösungen eine möglichkeit geben mit mehreren Leuten an einem OOP Projekt zu arbeiten ohne das man jedesmal einen Kopfstand machen muss nur um eine modifzierte klasse auszutauschen.
RE: Klassen in aktivem Projekt modifizieren/austauschen
(22.02.2012 10:46 )schnuufe schrieb: ...Habe aber keine einfache Lösung gefunden um vererbende und abgeleitete Klassen in einem Projekt ...
Im Projektexplorer Projekt spechern unter wählen. Dort kann man auswählen was man speichern möchte (ohne Gewähr. Ich habe noch nie Teilprojekte überschrieben, sondern nur das Gesamtprojekt).
RE: Klassen in aktivem Projekt modifizieren/austauschen
(22.02.2012 15:31 )abrissbirne schrieb:
(22.02.2012 10:46 )schnuufe schrieb: ...Habe aber keine einfache Lösung gefunden um vererbende und abgeleitete Klassen in einem Projekt ...
Im Projektexplorer Projekt spechern unter wählen. Dort kann man auswählen was man speichern möchte (ohne Gewähr. Ich habe noch nie Teilprojekte überschrieben, sondern nur das Gesamtprojekt).
Hallo danke für den Vorschlag,
ich hab das mal getestet und leider hängt sich auch bei der Methode LabVIEW dann nach dem Start komplett auf, wenn die ausgetauschte Klasse in der Vererbungshierachie zu weit oben ist. Man hat dann leider nicht mal mehr ne chance die dadurch entsandenen Fehler zu reparieren.
LabVIEW startet und sobald der Projektexplorer offen ist, sieht man die Sanduhr und alles steht. Da hilft dann nur noch task beenden.
Falls noch jemand Ideen hat würde ich mich sehr freuen =).
RE: Klassen in aktivem Projekt modifizieren/austauschen
Hatte mal letztens in einem Webcast gesehen, dass LV eine Art Klassenversionierung anlegt und speichert (daher: Die History beim Aufbau der Klassenattribute wird gespeichert) Ändert man da was wird das dann mehr oder weniger mit einer Versionsnummer versehen. Das soll dazu dienen, dass man später, wenn man eine ältere Version der Klasse aus einem Str mit unflatten wieder einliest diese zumindest teilweise richtig eingelesen wird (die Attribute die schon vorher dawaren werden richtig eingelesen, entfallene ignoriert). Eventuell liegt da das Problem vergraben?
*wird nämlich wohl im Labview Install Verzeichnis oder in Eigene Dateien irgendwo gespeichert und nicht direkt in der Klasse*
Gruß Kiesch
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)