| 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; |
| } |