Herunterladen Diese Seite drucken

Rohde & Schwarz FSEA20 Bedienhandbuch Seite 387

Vorschau ausblenden Andere Handbücher für FSEA20:

Werbung

FSE
Programmierbeispiel:
Im folgenden C-Beispielprogramm wird auf dem Gerät mit der IP-Adresse IP 89.10.38.97 ein Single
Sweep gestartet und anschließend ein Marker auf den maximalen Pegel gesetzt. Bevor jedoch das
Maximum bestimmt werden kann, muß der Sweep beendet sein. Die Synchronisation auf das Ende
des Sweeps erfolgt mit dem SRQ-Mechanismus. Hierzu wird mit dem Befehl "*OPC" (Operation
complete) ein Service Request am Ende des Sweeps ausgelöst, auf den das Steuerprogramm mit
der
Funktion
RSDLLWaitSrq()
("CALC:MARK:MAX") und der Pegel ausgelesen ("Y?"). Vor dem Auslesen wird mittels Serial Poll
geprüft, ob Daten verfügbar sind (MAV Bit im Status-Register gesetzt, nur bei Geräten mit Windows
NT-Rechner.)
Hinweis: Bei Geräten mit DOS-Rechner muß die Adresse '@local' verwendet werden.
#define MAX_RESP_LEN 100
short
unsigned long
short
short
char
char
// Handle fuer das Gerät ermitteln
ud = RSDLLibfind( "89.10.38.97", &ibsta, &iberr, &ibcntl );
// falls Gerät existiert
if ( ud >= 0 ) {
// Timeout fuer RSDLLWaitSrq() auf 10 Sekunden einstellen
RSDLLibtmo( ud, 10, &ibsta, &iberr, &ibcntl );
// SRQ-Erzeugung durch Event-Status-Register (ESR) aktivieren
// und ESB-Bit im SRE-Register freigeben
RSDLLibwrt( ud, "*ESE 1;*SRE 32", &ibsta, &iberr, &ibcntl );
// Single Sweep einstellen, Sweep auslösen und mit "*OPC" die
// Erzeugung eines Service Requests am Ende des Sweeps veranlassen
RSDLLibwrt( ud, "INIT:CONT off;INIT;*OPC", &ibsta, &iberr, &ibcntl );
// RQS/MSS Bit loeschen
RSDLLibrsp( ud, &spr, &ibsta, &iberr, &ibcntl );
// auf SRQ (Ende des Sweeps) warten
RSDLLWaitSrq( ud, &srq, &ibsta, &iberr, &ibcntl );
// falls Sweep beendet
if (srq) {
// dann Marker auf erstes Maximum setzen und den Pegel abfragen
RSDLLibwrt( ud, "CALC:MARK:MAX;Y?", &ibsta, &iberr, &ibcntl );
// Pruefen, ob Daten vorhanden (MAV Bit im Statusregister gesetzt)
RSDLLibrsp( ud, &spr, &ibsta, &iberr, &ibcntl );
if (spr & 0x10) {
// dann Daten auslesen
RSDLLilrd( ud, MaxPegel, MAX_RESP_LEN, &ibsta, &iberr, &ibcntl );
}
}
// Verbindung zum Gerät beenden
RSDLLibonl (ud, 0, &ibsta, &iberr, &ibcntl ) ;
}
else {
; // Fehler Geraet nicht gefunden
}
1065.6016.11
wartet.
ibsta, iberr;
ibcntl;
ud;
srq;
MaxPegel[MAX_RESP_LEN];
spr;
Anschließend
wird
7.11
Programmbeispiele
das
Maximum
bestimmt
D-16

Werbung

loading