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 if (iberr == ECIC) printf (\" ECIC if (iberr == ENOL) printf (\" ENOL if (iberr == EADR) printf (\" EADR if (iberr == EARG) printf (\" EARG if (iberr == ESAC) printf (\" ESAC if (iberr == EABO) printf (\" EABO if (iberr == ENEB) printf (\" ENEB if (iberr == EOIP) printf (\" EOIP if (iberr == ECAP) printf (\" ECAP if (iberr == EFSO) printf (\" EFSO if (iberr == EBUS) printf (\" EBUS if (iberr == ESTB) printf (\" ESTB if (iberr == ESRQ) printf (\" ESRQ if (iberr == ETAB) printf (\" ETAB printf (\"ibcntl = %ld\\n\ printf (\"\\n\"); /* Call ibonl to take the device and interface offline */ ibonl (Device,0); ibonl (BoardIndex,0); exit(1); } 因篇幅问题不能全部显示,请点此查看更多更全内容\\n\");