' schrieb:Zu Antwort 1:
In der Beschreibung vom Gerät steht das nicht drin. Aber ich denke, da es sich um ein Ventil handelt, schickt es Daten nur auf Anfrage.
Zu Antwort 2:
Wiki habe ich auch schon gelesen. Meine Frage bezog sich auf: Was stelle ich bei den Visa-VIs ein.
Ich habe beide Einstellungen ausprobiert und keinen Unterschied feststellen können.
Was für Auswirkungen hätte es (bei synchroner Übertragung), wenn ich mit einem Schreibbefehl Daten anfordere, das aber schief geht und keine Antwort kommt und ich dann versuche mit einem Read-Befehl 16 Byte zu lesen?
Ach so!!!!!!!!
Also Synchrone VISA Funktionen bleiben in VISA stecken bis die Operation abgelaufen ist. Der entsprechende LabVIEW Thread ist dann vollkommen blockiert.
Asynchrone VISA Funktionen kehren regelmässig zu LabVIEW zurück und LabVIEW kümmert sich selber darum VISA zu pollen, ob die entsprechende Lese- oder Schreiboperation schon beendet ist.
Ist dieser Unterschied sinnvoll? Heutzutage macht es eigentlich nichts mehr aus! Bevor LabVIEW Multithreading war (LabVIEW < 5.0) war das aber sehr wichtig. Bei synchronen VISA Funktionen blockierte das ganze LabVIEW Programm bis die Funktion zurückkam (weil die gefragten Daten gelesen wurden oder ein Timeout auftrat). Bei asynchronen VISA Funktionen konnten andere Teile des LabVIEW-Programms, die keine direkte DatenabhÄngigkeit von der VISA Funktion hatten einfach weiterlaufen. LabVIEW Programme waren damals schon inherent Multithreading auch wenn es mehr ein kooperatives Multithreading war.
Heutzutage verwendet LabVIEW automatische mehrere Betreibssystemthreads und teilt das Programm darauf auf so dass ein blockierter Thread durch eine synchrone VISA Funktion kein wirkliches Problem ist. Asynchrone VISA Funktionen tendieren dazu die CPU Auslastung zu erhöhen da LabVIEW dann alle zur Verfügung stehende CPU Leistung dazu verwendet um VISA zu checken. Aber diese Auslastung ist nur soweit gegeben als die CPU nicht durch irgendetwas anderes verwendet wird, d.h. solange es andere Prozesse gibt die etwas zu tun haben kriegen die einfach die CPU. LabVIEW verwendet einfach den nicht genützten CPU Anteil um mehr oder weniger heftig bei VISA nachzufragen, ob denn die Operation nun endlich abgeschlossen ist.
Rolf Kalbermatter