' schrieb:1. Fehlercode
Tja ich war mit nicht bewusst dass diese property für GPIB nicht funktioniert aber verwende die ehh nie, auch nicht für serial.
Zitat:Warum soll bei obigem Beispiel immer eine Warnung auftreten?
Die VISA Read liefert eine Warnung zurück (error status = FALSE, error code != 0) die besagt dass die zurückgelieferten Anzahl Bytes den angeforderten entspricht um darauf aufmerksam zu machen dass da noch mehr Bytes im Empfangsbuffer sein könnten.
Zitat:2. Byte Count Wert
D.h. die Lösung ist einfach nur einen ByteCount vorzugeben, der auf jedenfall groß genug ist und VISA-Read stoppt sobald nix mehr kommt?
Vorteil: Einfach
Nachteil: Verschwendung von Systemressourcen? Oder werden garnicht soviele Bytes vorweg reserviert wie ich im Bytecount vorgebe? Bzw. die ungenutzten Bytes wieder freigegeben falls nicht gebraucht? (Gut prinzipiell wird mich bzw. den PC die hier genutzte Anzahl weniger kratzen, ist rein informativ gefragt, bzw. man wills ja richtig machen)
Wegen der Systemresourcen solltest Du Dir vorab mal nicht zuviel Sorgen machen. Du wirst ja wohl nicht 2000000 Bytes oder mehr anfordern und ob LabVIEW einen Buffer von 10 oder 1000 Bytes alloziert macht in der Laufzeit keinerlei Unterschied.
Zitat:3. VISA einmal öffnen und schließen
Nummer 1 =Variante A: VISA wiederholt öffnen und schließen
Nummer 2 = Variante B: VISA einmal öffnen und schließen
Variante B so richtig mit dem einmal öffnen und schließen? Hier ist für mich zunächst ungewöhnlich, dass die VISA-Resource des Writes für den Frequenzspannenfall nicht zum Close geführt wird, sondern einfach "in der Luft" endet.
Variante A oder 1????? Jedenfalls sind B/2 richtig. Das mit dem offenem VISA Resource am zweiten Strang ist kein Problem. Aber eigentlich würde ich das Write ebenfalls im selben Strang einschlaufen. So wie Du das jetzt hast kann das in komplexeren Fällen dann diesem auf einem Multicore System theoretisch ein Problem provozieren Da beide Funktionen von LabVIEW effektiv parallel ausgeführt werden können.
Zitat:4. GPIB Doppelpunkt
Letzte Frage für heute:
Wozu wird einem GPIB Befehl ein Doppelpunkt vorangestellt, obwohl dem Instrument kein weiterer Befehl übergeben wurde.
Also z.B.
- zwei Befehle von FREQUENCY kombiniert einem Write übergeben: "FREQUENCY:CENTER 100MHz;SPAN 20MHz"
- zwei Befehle einem Write übergeben, eines von FREQUENCY und eines von FORM: "FREQUENCY:CENTER 100MHz;:FORM ASC"
- und jetzt kommts, nur ein Befehl: ":FORM ASC"
wozu ist im letzten Beispiel das ":" bzw. der Zusatznutzen zu "FORM ASC"? (Heißt ausgeschrieben Format ASCII)
warum wird ":" vor den LabVIEW befehl gesetzt?
Nun das jeweilige Kommandoset eines Instrumentes ist im Manual zu dem Instrument definiert und erklärt. Diese Kommandos scheinen sich am SCPI Standard zu orientieren aber das ist kein strikter Standard im eigentlichen Sinn sondern einfach ein Empfehlung wie ein Instrumentenbefehlssatz aufgebaut sein kann. Manche Instrumentenbauer halten sich in keiner Weise daran, andere mehr oder weniger aber die Idee dass man ein DMM von Hersteller X mit den gleichen Befehlen ansteuern kann dann ein DMM vom Hersteller Y ist auch mit SCPI nur ein frommer Wunsch. Das funktioniert oft nicht mal mit ähnlichen Instrumenten vom gleichen Hersteller.
Rolf Kalbermatter