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!
ich hoffe mir kann hier jemand weiter helfen. Ich arbeite zurzeit an einem Projekt, in dem ich eine Datenkommunikation zwischen Labview und CANoe herstelle. Zu dieser Datenkommunikation wird eine von der Firma Vector (CANoe Hersteller) erstellte Bibliothek verwendet. Zu dieser Bibliothek gehört ein Bedienelement, mit dem man die Möglichkeit hat auf die im CANoe Programm erstellten Variablen zuzugreifen. Anschließend wird die ausgewählte Variable in einen String-Anzeigelement geschrieben, welches auch noch zu dem Bedienelement des Bibliothek Blockes gehört.
Bevor man das Labview Programm startet, muss man über diesen Block die entsprechenden Variablen aussuchen (Definition). Anschließend kann man das Programm starten. Man sieht, dass die entsprechenden Variablen in dem Block zu sehen sind.
Das Problem was ich hierbei habe ist, dass sobald ich eine Exe erzeuge diese Definition nicht übernommen wird. Das selbe Problem hat man Übringens auch bei einem String Bedienelement. Gibt es eine Möglichkeit diese Definition vor dem erzeugen einer Exe irgend wie zu Speichern, sodass die Definition beim erzeugen einer Exe bestehen bleibt?
Da diese Frage sehr spziell ist habe ich mcih natürlich mit dem Vector Support in verbindung gesetzt leider konnten die mir auch keine Lösung nennen. Sie haben lediglich dadrauf verwiesen, dass es bei normalen Strings auch nicht geht!
Wenn mir jemand weiter helfen kann wäre ich sehr dankbar.
Im Anhang ein Bild von dem Schalter-Block
Anzeige
21.12.2016, 09:19 (Dieser Beitrag wurde zuletzt bearbeitet: 21.12.2016 09:35 von GerdW.)
Schönes Bild. Und nun?
(Das ist ungefähr so, als wenn du in eine Autowerkstatt gehst, dort ein Foto deines Autos zeigst und sagst: "Der Motor springt nicht an. Was kann man tun?")
Zitat:Anschließend wird die ausgewählte Variable in einen String-Anzeigelement geschrieben, welches auch noch zu dem Bedienelement des Bibliothek Blockes gehört.
Wie kann ein Anzeigeelement (Indicator) zu den Bedienelementen (Control) gehören?
Zitat:Das Problem was ich hierbei habe ist, dass sobald ich eine Exe erzeuge diese Definition nicht übernommen wird.
Dann musst du debuggen!
Zitat:Das selbe Problem hat man Übringens auch bei einem String Bedienelement. Gibt es eine Möglichkeit diese Definition vor dem erzeugen einer Exe irgend wie zu Speichern, sodass die Definition beim erzeugen einer Exe bestehen bleibt?
Ja, sowas geht: Defaultvalues von Controls/Indicators kann man vorgeben und dauerhaft speichern!
Zitat:Sie haben lediglich dadrauf verwiesen, dass es bei normalen Strings auch nicht geht!
Aber sicher doch kann man "normalen" Strings Defaultwerte vorgeben!
Kannst du dein Problem mal genauer erläutern? So, dass man es versteht und keine Widersprüche auftauchen?
Und vielleicht auch mal ein relevantes VI anhängen?
Ja natürlich kann ich das machen. Sry ich hatte mir schon gedacht, dass ich es nicht so gut erklärt habe.
Ich schick am besten einfach mal einen Screenshot.
Links im Screenshot ist meine Exe die ich mir erzeugt habe und rechts das Programm in Labview. Wie man anhand der Markierungen sieht hat sich der "Schalterblock" verändert. ZUm einen ist der Button oben rechts weg, mit dem man die Variablen auswählen kann. Und zum anderen ist der Ausgewählte Text in dem Schalterblock nicht mehr zu erkennen.
Am schönsten wäre es natürlich wenn es eine Lösung geben würde, dass der Schlater nach dem erstellen der Exe genauso aussieht wie zuvor. Ein abgespeckte Lösung, die mir zumindest den Text im String Element behält, wäre für meine Zwecke auch schon ausreichend. Vor dem erstellen der EXE habe ich den Wert des "Schalterblocks" als Standartwert festgelegt. Aber dennoch war der Wert nach dem erzeugen der Exe nicht vorhanden.
Ich kann das Programm gerne anhängen, aber leider kann man ohne CANoe keine Variablen im "Schalterblock" auswählen.
Ich hoffe diesesmal ist das ganze Problem besser verständlich.
21.12.2016, 13:11 (Dieser Beitrag wurde zuletzt bearbeitet: 21.12.2016 13:13 von GerdW.)
Zitat:Ich kann das Programm gerne anhängen, aber leider kann man ohne CANoe keine Variablen im "Schalterblock" auswählen.
Ohne CANoe-Bibliothek kann man da leider nicht helfen.
Das Problem dürfte an diesen X-Control-"Schalterblöcke" liegen.
So sieht das nämlich bei mir aus:
Kannst du mal dieses "SymbSelBtn"-X-Control hier bereitstellen?
ich hoffe mal, du hast diese VIs nicht auch schon von Vector als LLB bekommen - so fehlt leider die eigentlich XCtl-Definition!
Aber die im XCtl enthaltenen VIs sind in der LLB enthalten…
Was ich sehen konnte:
Im Event "Ausführungszustandsänderung" wird der "Select"-Button unsichtbar gemacht, wenn sich dein XCtl im "Run Mode" befindet. Dieser "Run Mode" ist dann TRUE, wenn das VI, in welchem sich das XCtl befindet, ausgeführt wird - wie z.B. in einem Executable.
Mit dieser Info solltest du jetzt mal den Vector-Support fragen, warum dieser Select-Button explizit versteckt (und das String-Control deaktiviert) wird, wenn das VI läuft! Die haben das doch programmiert und sollten Zugriff auf die hausinterne Programmierdoku haben!
Alternativ: einfach mal das XCtl editieren und dieses Verhalten disablen… (Vorher ein Backup erstellen und sicher verwahren!)
(Als Hilfestellung zum Thema kann ich das XControl-Projekt empfehlen, welches über den Menüpunkt Datei -> Neu… aufgerufen werden kann!)
Ich habe deine alternative Lösung ausprobiert. Der "Select"-Button war daraufhin wieder sichtbar. Leider konnten damit keine Auswahl von Variablen gemacht werden.
Der Wert der in der String-Control vor erzeugen der Exe stand, war ebenfalls wieder weg.
Ich habe mich zusätzlich nochmal mit dem Vector Support in Verbindung gesetzt. Als Antwort kam dann folgende Aussage:
"Die xControl bzw. die Information des Edit-Feldes werden beim Kompilieren nicht übernommen. Der Auswahldialog steht nur zum Definitionszeitpunkt zur Verfügung. Das Verhalten der nicht übernommenen Strings ist beispielsweise auch bei normalen Strings zu beobachten".
Die Aussage mit den Strings ist ja wie du zuvor erwähnt hattest nicht korrekt. Könntest du mir vllt ein kurzes Feedback geben, ob das mit dem xControl stimmt oder gibt es doch eine Möglichkeit das beim Kompilieren zu übernehmen.
Zitat:Die xControl bzw. die Information des Edit-Feldes werden beim Kompilieren nicht übernommen.
Korrekt.
Zitat:Der Auswahldialog steht nur zum Definitionszeitpunkt zur Verfügung.
Weil es so programmiert wurde. Ich kann nicht beurteilen, ob es technische Gründe dafür gibt…
Zitat:Das Verhalten der nicht übernommenen Strings ist beispielsweise auch bei normalen Strings zu beobachten
Jein.
Man kann Strings einen Defaultwert zuweisen, der bleibt dann auch in der EXE erhalten. Bei einem XControl ist das so nicht möglich (IMHO).
Was willst du eigentlich genau erreichen?
Sind diese Kanalnamen eigentlich schon vor dem Aufruf/Start der EXE bekannt? Kannst du die XControls nicht durch einfache String-Controls ersetzen?
Oder die Kanalnamen mit Konstanten vorgeben?
Oder eine eigene Kanal-Auswahl programmieren?
entschuldige meine verspätete Antwort. Ich war über die Feiertage weg.
Vielen Dank für deine Antwort. Jetzt bin ich deutlich schlauer
Zitat:Was willst du eigentlich genau erreichen?
Sind diese Kanalnamen eigentlich schon vor dem Aufruf/Start der EXE bekannt? Kannst du die XControls nicht durch einfache String-Controls ersetzen?
Oder die Kanalnamen mit Konstanten vorgeben?
Oder eine eigene Kanal-Auswahl programmieren?
Im Prinzip sind die Kanalnamen vor dem Aufruf/Start der Exe bekannt. Dadurch kam mir auch schon die Idee auf einfache String-Controls oder Konstanten zurückzugreifen.
Es ist jedoch so, dass das verwendete CANoe Programm in Zukunft erneuert werden könnte. Aus diesem Grund dachte ich, dass es am schönsten wäre wenn die Auswahl genauso vorgenommen werden kann wie zuvor und man sich dadurch evtl. Änderungen an dem Labview Programm sparen kann.
Da wahrscheinlich eine Änderung des CANoe Programms sowieso auch eine Änderung des Labview Programms verursacht werde ich jetzt einfach String Konstanten verwenden.
Vielen vielen Dank für die Hilfe bei diesem Problem. Hat mir sehr geholfen.