Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 255 → Rev 256

/cvi/instr/K617/K617.c
1,10 → 1,12
#include <ansi_c.h>
#include <utility.h>
#include <gpib.h>
#include "prologix.h"
#include "K617.h"
 
K617STATUS K617Stat;
static int gdev,iret;
static int K617_Interface,K617_Port,K617_Gdev;
static int iret;
 
void GpibError(char *msg) {
 
48,26 → 50,41
printf ("\n");
 
/* Call ibonl to take the device and interface offline */
ibonl (gdev,0);
ibonl (K617_Gdev,0);
 
exit(1);
}
 
void _VI_FUNC K617_open (int interface, int primary_addr, int secondary_addr,
int timeout)
void _VI_FUNC K617_open (int interface, int port, int primary_addr,
int secondary_addr, int timeout)
{
char cmd[100];
/*
gdev = OpenDev ("GPIB0", "");
K617_Gdev = OpenDev ("GPIB0", "");
if (ibsta & ERR) GpibError("OpenDev Error");
iret = ibpad (gdev, 0);
iret = ibpad (K617_Gdev, 0);
if (ibsta & ERR) GpibError("OpenDev Error");
iret = ibsad (gdev, NO_SAD);
iret = ibtmo (gdev, T10s);
iret = ibeot (gdev, 1);
iret = ibeos (gdev, 0);
iret = ibsad (K617_Gdev, NO_SAD);
iret = ibtmo (K617_Gdev, T10s);
iret = ibeot (K617_Gdev, 1);
iret = ibeos (K617_Gdev, 0);
*/
gdev = ibdev(interface,primary_addr,secondary_addr,timeout,1,0);
if (ibsta & ERR) GpibError("OpenDev Error");
K617_Interface=interface;
K617_Port=port;
switch (K617_Interface){
case 1:
PROLOGIX_Open (K617_Port);
sprintf(cmd,"++addr %0d",primary_addr);
PROLOGIX_Send (cmd);
PROLOGIX_Send ("++auto 0");
PROLOGIX_Send ("++eoi 1");
PROLOGIX_Send ("++eot_enable 0");
PROLOGIX_Send ("++read_tmo_ms 1000");
break;
default:
K617_Gdev = ibdev(K617_Port,primary_addr,secondary_addr,timeout,1,0);
if (ibsta & ERR) GpibError("OpenDev Error");
}
Delay(GDELAY);
return;
}
74,17 → 91,29
 
void _VI_FUNC K617_clear (void)
{
iret = ibclr (gdev); /* Clear the device */
if (ibsta & ERR) GpibError("OpenDev Error");
Delay(GDELAY);
switch (K617_Interface){
case 1:
PROLOGIX_Send("++clr");
break;
default:
iret = ibclr (K617_Gdev); // Clear the device
if (ibsta & ERR) GpibError("OpenDev Error");
}
// Delay(GDELAY);
Delay(2.);
return;
}
 
void _VI_FUNC K617_send (char *cmd, int len)
{
iret = ibwrt (gdev, cmd, len);
if (ibsta & ERR) GpibError("OpenDev Error");
switch (K617_Interface){
case 1:
PROLOGIX_Send(cmd);
break;
default:
iret = ibwrt (K617_Gdev, cmd, len);
if (ibsta & ERR) GpibError("OpenDev Error");
}
Delay(GDELAY);
return;
}
91,10 → 120,17
 
int _VI_FUNC K617_receive (char *response, int maxbyt)
{
iret = ibrd (gdev, response, maxbyt);
if (ibsta & ERR) GpibError("OpenDev Error");
response[ibcntl]=0;
return ibcntl;
switch (K617_Interface){
case 1:
PROLOGIX_Send("++read eoi");
return PROLOGIX_Receive (response,maxbyt);
break;
default:
iret = ibrd (K617_Gdev, response, maxbyt);
if (ibsta & ERR) GpibError("OpenDev Error");
response[ibcntl]=0;
return ibcntl;
}
}
 
void _VI_FUNC K617_status (void)
110,7 → 146,9
&K617Stat.vsource_operate,&K617Stat.read_mode,
&K617Stat.data_prefix,&K617Stat.display,
&K617Stat.data_store,&K617Stat.srq,&K617Stat.eoi,K617Stat.terminator);
K617_send ("X", 1);
// printf("617FRRCZNTOBGDQMMKYY\n");
// printf("%s\n",cres);
// K617_send ("X", 1);
return;
}
 
222,9 → 260,15
 
void _VI_FUNC K617_close (void)
{
// iret = CloseDev (gdev);
iret = ibonl(gdev, 0); /* Take the device offline */
if (ibsta & ERR) GpibError("OpenDev Error");
// iret = CloseDev (K617_Gdev);
switch (K617_Interface){
case 1:
PROLOGIX_Close();
break;
default:
iret = ibonl(K617_Gdev, 0);// Take the device offline
if (ibsta & ERR) GpibError("OpenDev Error");
}
return;
}
 
241,31 → 285,33
 
if (InitCVIRTE (hInstance, 0, 0) == 0) return -1; /* out of memory */
K617_open (0, 3, 0, 13);
/*
K617_open (1,5,3,0,13);
K617_clear ();
K617_current_mode (4);
K617_zero_correct (1);
K617_data_format (0);
K617_trigger_mode (0);
K617_trigger_mode (1);
K617_vsource_set (-100.);
K617_vsource_operate (1);
*/
K617_status ();
 
value=K617_get(cres, &i);
K617_status();
 
value=K617_get(cres,&i);
printf("%s, %lg, %d\n",cres,value,i);
value=K617_vsource_get();
printf("%lg\n",value);
value=K617_get(cres,&i);
printf("%s, %lg, %d\n",cres,value,i);
value=K617_get(cres, &i);
value=K617_get(cres,&i);
printf("%s, %lg, %d\n",cres,value,i);
value=K617_get(cres,&i);
printf("%s, %lg, %d\n",cres,value,i);
value=K617_get(cres,&i);
printf("%s, %lg, %d\n",cres,value,i);
Delay(5);
// K617_vsource_operate (0);
K617_vsource_operate (0);
K617_close ();
K617_close();
 
return 0;
}