INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Semaphoren per Variable setzen



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!

04.08.2009, 08:31
Beitrag #1

Corono Offline
LVF-Grünschnabel
*


Beiträge: 32
Registriert seit: Jul 2009

8.6.1
-
en

8050
Schweiz
Semaphoren per Variable setzen
Hallo Leute

Ich habe auf meinem cRio-Controller (9012) ein vi, das von mehrerer Orten auf ein File zugreifft. Deshalb wollte ich das File durch Semaphoren schützen, so dass sichergestellt wurde, dass nicht gleichzeitig darauf zugegriffen wurde. Das heisst, ich erstelle einen Semaphore, setze in runter, greiffe auf das File zu und setze ihn wieder hoch. Das ganze Funktioniert, solange ich den Ausgang nach dem Erstellen direkt weiterverbinde. Nun ist aber so, dass ich an diversen Orten diese Semaphoren benötige, und ich eigentlich nicht überall hin ein Kabel ziehen möchte. Deshalb habe ich einen Indikator gesetzt und danach einfach per Lokale Variable den Semaphore rauf-bzw runtersetzen. Und das funktioniert leider nicht, ich kriege immer einen Error1, was so viel heisst wie dass ein Inputparameter falsch ist. Habe mal ein Bild angehängt wie ich es möchte, nur funktioniert es so nicht.

Mir ist klar, dass es in diesem Bild keinen Sinn macht, mit Variablen zu arbeiten, da sie direkt nebeneinancer liegen. Soll nur das Prinzip erklären. Kann mir jemand sagen, warum das nicht geht?


MFG Corono


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.08.2009, 10:00 (Dieser Beitrag wurde zuletzt bearbeitet: 04.08.2009 10:03 von unicorn.)
Beitrag #2

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
Semaphoren per Variable setzen
Benutze an jeder Stelle, an der Du die Semphore benutzen möchtest, das VI "Obtain Semaphore Reference" und einen Namen für die Semaphore. So musst Du nix über Variablen oder Drähten verteilen und hast eine Reference auf die Semaphore.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.08.2009, 11:01
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Semaphoren per Variable setzen
' schrieb:Benutze an jeder Stelle, an der Du die Semphore benutzen möchtest, das VI "Obtain Semaphore Reference" und einen Namen für die Semaphore. So musst Du nix über Variablen oder Drähten verteilen und hast eine Reference auf die Semaphore.

Also erstens sollte man zu jedem Create Semaphore auch ein Destroy Semaphore tun. Die Semaphore selber ist zwar bedingt durch den Namen immer dieselbe aber sie merkt sich wie oft jemand sie "obtained" hat und wird erst wirklich freigegeben wenn die Applikation abgeschlossen wird oder wenn die letzte Referenz geschlossen wird. Zudem verbraucht jede Referenz auf eine Semaphore oder andere Objekte etwas Speicher für die Referenz selber.

Zweitens sollte an einer Stelle am Anfang in der Applikation eine entsprechende "named" Semaphore erzeugt werden die erst am Ende der Applikation wieder freigegeben wird. Das stellt sicher das diese Semaohore im Speicher bleibt auch wenn sie anderenorts regelmässig erzeugt und wieder freigegeben wird.

Drittens muss die erste Erstellung der Semaphore an einer Stelle im Program sein die Objekt nicht mehr nötig ist. Das gilt übrigens für alle refnum based Objekte in LabVIEW. Erstellen davon in einem Hierarchy Context der irgendwann Idle wird, hat automatisch die zwangsweise Zerstörung des entsprechenden Objektes zur Folge auch wenn diese Objekt irgendwo anders etwa durch globale Variablen noch verwendet wird.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.08.2009, 17:04
Beitrag #4

Corono Offline
LVF-Grünschnabel
*


Beiträge: 32
Registriert seit: Jul 2009

8.6.1
-
en

8050
Schweiz
Semaphoren per Variable setzen
Hey Leute

Vielen Dank für die Hilfe. So funktioniert es.

MFG Corono
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: