您的当前位置:首页正文

GPIB编程资料

2021-10-27 来源:品趣旅游知识分享网


GPIB编程资料

上面的网页有些GPIB编程的资料不过NI的列子是最简单明了的:

*****************************************************************************

* Refer to the language interface documentation for details on

* which header and .obj files to include in your project.

*****************************************************************************/

#include

#include \"decl-32.h\"

#include

void GpibError(char *msg); /* Error function declaration */

int Device = 0; /* Device unit descriptor */

int BoardIndex = 0; /* Interface Index (GPIB0=0,GPIB1=1,etc.) */

void main() {

int PrimaryAddress = 2; /* Primary address of the device */

int SecondaryAddress = 0; /* Secondary address of the device */

char Buffer[101]; /* Read buffer */

/*****************************************************************************

* Initialization - Done only once at the beginning of your application.

*****************************************************************************/

Device = ibdev( /* Create a unit descriptor handle */

BoardIndex, /* Board Index (GPIB0 = 0, GPIB1 = 1, ...) */

PrimaryAddress, /* Device primary address */

SecondaryAddress, /* Device secondary address */

T10s, /* Timeout setting (T10s = 10 seconds) */

1, /* Assert EOI line at end of write */

0); /* EOS termination mode */

if (ibsta & ERR) { /* Check for GPIB Error */

GpibError(\"ibdev Error\");

}

ibclr(Device); /* Clear the device */

if (ibsta & ERR) {

GpibError(\"ibclr Error\");

}

/*****************************************************************************

* Main Application Body - Write the majority of your GPIB code here.

*****************************************************************************/

ibwrt(Device, \"*IDN?\/* Send the identification query command */

if (ibsta & ERR) {

GpibError(\"ibwrt Error\");

}

ibrd(Device, Buffer, 100); /* Read up to 100 bytes from the device */

if (ibsta & ERR) {

GpibError(\"ibrd Error\");

}

Buffer[ibcntl] = '\\0'; /* Null terminate the ASCII string */

printf(\"%s\\n\*/

/*****************************************************************************

* Uninitialization - Done only once at the end of your application.

*****************************************************************************/

ibonl(Device, 0); /* Take the device offline */

if (ibsta & ERR) {

GpibError(\"ibonl Error\");

}

ibonl(BoardIndex, 0); /* Take the interface offline */

if (ibsta & ERR) {

GpibError(\"ibonl Error\");

}

}

/*****************************************************************************

* Function GPIBERROR

* This function will notify you that a NI-488 function failed by

* printing an error message. The status variable IBSTA will also be

* printed in hexadecimal along with the mnemonic meaning of the bit

* position. The status variable IBERR will be printed in decimal

* along with the mnemonic meaning of the decimal value. The status

* variable IBCNTL will be printed in decimal.

*

* The NI-488 function IBONL is called to disable the hardware and

* software.

*

* The EXIT function will terminate this program.

*****************************************************************************/

void GpibError(char *msg) {

printf (\"%s\\n\

printf (\"ibsta = &H%x <\

if (ibsta & ERR ) printf (\" ERR\");

if (ibsta & TIMO) printf (\" TIMO\");

if (ibsta & END ) printf (\" END\");

if (ibsta & SRQI) printf (\" SRQI\");

if (ibsta & RQS ) printf (\" RQS\");

if (ibsta & CMPL) printf (\" CMPL\");

if (ibsta & LOK ) printf (\" LOK\");

if (ibsta & REM ) printf (\" REM\");

if (ibsta & CIC ) printf (\" CIC\");

if (ibsta & ATN ) printf (\" ATN\");

if (ibsta & TACS) printf (\" TACS\");

if (ibsta & LACS) printf (\" LACS\");

if (ibsta & DTAS) printf (\" DTAS\");

if (ibsta & DCAS) printf (\" DCAS\");

printf (\" >\\n\");

printf (\"iberr = %d\

if (iberr == EDVR) printf (\" EDVR \\n\");

if (iberr == ECIC) printf (\" ECIC \\n\");

if (iberr == ENOL) printf (\" ENOL \\n\");

if (iberr == EADR) printf (\" EADR

\\n\");

if (iberr == EARG) printf (\" EARG \\n\");

if (iberr == ESAC) printf (\" ESAC \\n\");

if (iberr == EABO) printf (\" EABO \\n\");

if (iberr == ENEB) printf (\" ENEB \\n\");

if (iberr == EOIP) printf (\" EOIP \\n\");

if (iberr == ECAP) printf (\" ECAP \\n\");

if (iberr == EFSO) printf (\" EFSO \\n\");

if (iberr == EBUS) printf (\" EBUS \\n\");

if (iberr == ESTB) printf (\" ESTB \\n\");

if (iberr == ESRQ) printf (\" ESRQ \\n\");

if (iberr == ETAB) printf (\" ETAB

\\n\");

printf (\"ibcntl = %ld\\n\

printf (\"\\n\");

/* Call ibonl to take the device and interface offline */

ibonl (Device,0);

ibonl (BoardIndex,0);

exit(1);

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 版权所有