void initialize(int myadress, int level) |
myadress |
GPIB-Adresse des KPC-488.2 ( 0, .. , 30) |
level |
0 = System Controller, 2 = KPC-488.2 ist Device |
Beispiel |
initialize( 21, 0); |
|
int send(int address, char[] info, int status) |
address |
Geräteadresse ( 0, .. , 30) |
info |
Datenstring der an das Gerät übertragen wird |
status |
0 = OK, 8 = Zeitüberlauf |
Beispiel |
erg = send( address, "F0R4X", status); |
|
int enter(char[] recv, int maxLen, int Len, int
address, int status) |
recv |
Stringvariable für die zu empfangenden Daten |
maxLen |
max. Anzahl zu empfangender Zeichen |
Len |
aktuelle Anzahl empfangener Zeichen |
address,
status |
siehe send() |
Beispiel |
char recv[30]; int l; int s; enter( recv, 30, l, 7, s); |
|
int srq() |
Prüfung
auf Serial Request |
TRUE, falls ein angeschlossenes Gerät Bedienung anfordert. |
Beispiel
|
while (!srq()); bzw. erg = srq(); // erg = 0 |
|
int spoll(int address, int poll, int status) - Liest
den Status eines einzelnen Gerätes (serial polling) |
address
, status |
siehe send() |
poll |
resultierendes Statusbyte |
Beispiel |
erg = spoll( address, poll, status); // poll = 24 |
|
void ppoll(int poll) - Ermittelt den Service
Request aller Gerätes (parallel polling) |
poll |
0..255 |
Beispiel |
int poll; ppoll( poll);
// poll = 0 |
|
int listener_present(int address) - überprüft,
ob ein Gerät mit der angegebenen Adresse angeschlossen ist |
address
|
Geräteadresse |
Beispiel
|
erg = listener_present( 7); //1, falls
angeschlossen, 0 sonst |
|
int board_present(void) - überprüft, ob
GPIB-Interfacekarte im Rechner vorhanden ist |
0
|
nicht gefunden, |
1
|
KPC-488.2, |
2
|
KPS-488.2, |
3
|
KPC-488.2AT |
Beispiel |
erg = board_present();
// erg = 1 |
|
int transmit(char[] command, int status) - Funktion
wie send(), jedoch auf einer tieferen Programmierebene |
command
|
enthält GPIB-Befehle und Daten (durch
Leerstellen getrennt) |
status
(UND) |
0=OK
1=ungültige Syntax
2=Sendeversuch, wobei KPC-488.2 kein 'Talker'
4=String in "" od. END Kommando gefunden in "LISTEN"
od."TALK" Liste
8= Zeitüberlauf
16= unbekannter Befehl |
GPIB-Befehle |
Datenüber-
tragung |
Talker, Listener definieren |
TALK 7 LISTEN 1 3 5 |
Sekundäradresse |
TALK 7 SEC 8 bzw. LISTEN 1 SEC 9 |
Alle Talker und Listener ausschalten |
UNT UNL |
Rechner wird Talker bzw. Listene |
MTA MLA |
Datenfolge |
DATA 'hello' END (Zeilenvorschub mit EOI) |
End-or-Identify |
EOI |
Remote Enable oder Go To Local (Frontbedienung |
REN oder GTL |
Serial
poll festsetzen |
Enable/Disable |
SPE, SPD |
Parallel
poll festsetzen |
Configure/Disable/Unconfigure |
PPC,
PPD, PPU |
Multiline Befehle |
Device Clear |
DCL |
Local Lockout |
LLO |
Command |
CMD |
Adressierte Befehle |
Group Execute Trigger |
GET |
Selected Device Clear |
SDC |
Take Control |
TCT |
Interface Clear |
IFC |
Beispiele
|
erg = transmit("UNL LISTEN 7", status); // erg = 0, status
= 0
erg = transmit("UNL UNT MTA LISTEN 7 DATA 'F0R2X' END", stat |
|
int receive( char[] recv, int maxLen, int Len, int status) -
wie enter(), jedoch auf Programmierebene wie transmit() |
recv |
Stringvariable, enthält die empfangenen Daten |
maxLen |
maximale Anzahl zu empfangender Zeichen |
Len |
aktuelle Anzahl empfangener Zeichen |
status |
0 = OK
2 = receive, während der PC kein Listener ist
8 = Zeitüberlauf |
Beispiel |
erg = transmit("MLA TALK 7",
status); // erg = 0, status = 0
erg = receive( recv, 30, Len, status); // recv =
"NDCV+000.6824E+0", Len = 16, erg = 0, status = 0 |
|
Binäre Datenübertragung für
Hochgeschwindigkeitsdatenübertragung |
int tarray(char[] info, int count, int eoi, int
status)
sendet 64 kB Binärdaten vom Rechner an die Listener, EOI ist optional |
info |
zu übertragende Information |
count |
Anzahl der zu übertragenden Bytes |
eoi |
EOI mit dem letzten Data-byte senden : 0 = Nein / 1 = Ja |
status |
0 = OK
2 = tarray, während der PC kein Talker war
8 = Zeitüberlauf |
Beispiel |
transmit( "MTA LISTEN 2", status); // Drucker
erg = tarray( "Info", 5, 1, status); |
|
int rarray(char[] info, int count, int len, int status) - liest
bis zu 64 kB Binärdaten ein |
info |
zu übertragende Information |
count |
Anzahl der zu übertragenden Bytes |
len |
aktuelle Anzahl empfangener Datenbytes |
status |
0 = OK
2 = tarray, während der PC kein Talker war
8 = Zeitüberlauf
32 = erfolgreicher Transfer, durch EOI beendet |
Beispiel |
char info[2000];
transmit( "MLA TALK 7", status);
erg = rarray( info, 100, Len, status);
print( info); // NDCV+000.0004E+0 |
|
void dmachannel(int channel)
direkter Speicherzugriff (DMA) über die Kanäle 1 oder 3 (KPC-488.2),
ist normalerweise ausgeschaltet und muß bei Bedarf eingeschaltet werden |
channel |
DMA-Kanal, welcher durch die Interfacekarte verwendet wird, -1 zum
Ausschalten |
Beispiel |
dmachannel(1); |
|
Konfigurieren der Interfaceparameter |
void setport(int board, int port) |
board |
Interfacekartennummer 0..3 |
port |
I/O-Adresse der Karte (Initialwert: 2B8 Hex) |
Beispiel |
setport( 0, 0x2B8); |
|
void boardselect(int board) - wird nur verwendet,
wenn sich mehrere KPC-488.2 - Karten gleichzeitig im Rechner befinden |
board |
Interfacekartennummer 0..3 |
Beispiel |
boardselect( 0); |
|
void settimeout(int time)
wird nur verwendet, wenn sich mehrere KPC-488.2 - Karten gleichzeitig im Rechner
befinden |
time |
Zeitüberlauf in msec ( Vorgabe: 10 sec) |
Beispiel |
settimeout(10000); |
|
void setoutputeos(int eos1, int eos2) |
eos1, eso2 |
Ende-Zeichen (Terminatoren) nach send() oder bei END Kommando |
Beispiel |
setoutputEOS(13,10); // CR LF |
|
void setinputeos(int eos) |
eos |
Ende-Zeichen (Terminator) nach enter() oder receive(),
Voreinstellung 10 = LF |
Beispiel |
setinputEOS(10); // LF |
|
488SD: High Speed Streaming Daten Protokoll |
void enable_488sd(int enable, int timing)
nur auf der KPC-488.2AT-Karte möglich, Datentransferraten bis 5 MB/s mit
488SD-Geräten erlaubt |
enable |
Einschalten (true) oder Ausschalten (false) des 488SD-Modus |
timing |
timing parameter Wert abhängig von Kabellänge (1m: mind. 100, 20m
mind.500) |
Beispiel |
enable_488sd( 0, 250); |