一个GPIB的操作类,采用Adlink的GPIB板卡,使用Adlink提供的C#类(只是调用DLL封装了一下) 类中包括对安捷伦数字万用表的基本操作,对固纬程控电源的基本操作和程控变阻箱的基本操作 using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace GPIB { class gpib { #region GPIB操作包括DMM,PWR,PRS0,PRS1 public short DMMaddr = 22, PWRaddr = 8, PRS0addr = 16, PRS1addr = 17; private int ud = 0; private int ibsta, iberr, ibcnt, ibcntl; public bool write(int addr, string strWrite) { //Open and intialize an GPIB instrument int dev = GPIB.ibdev(0, addr, 0, (int)GPIB.gpib_timeout.T1s, 1, 0); GPIB.gpib_get_globals(out ibsta, out iberr, out ibcnt, out ibcntl); if ((ibsta & (int)GPIB.ibsta_bits.ERR) != 0) { //MessageBox.Show("Error in initializing the GPIB instrument."); return false; } //clear the specific GPIB instrument GPIB.ibclr(dev); GPIB.gpib_get_globals(out ibsta, out iberr, out ibcnt, out ibcntl); if ((ibsta & (int)GPIB.ibsta_bits.ERR) != 0) { //MessageBox.Show("Error in clearing the GPIB device."); return false; } //Write a string command to a GPIB instrument using the ibwrt() command GPIB.ibwrt(dev, strWrite, strWrite.Length); GPIB.gpib_get_globals(out ibsta, out iberr, out ibcnt, out ibcntl); if ((ibsta & (int)GPIB.ibsta_bits.ERR) != 0) { //MessageBox.Show("Error in writing the string command to the GPIB instrument."); return false; } //Offline the GPIB interface card GPIB.ibonl(dev, 0); GPIB.gpib_get_globals(out ibsta, out iberr, out ibcnt, out ibcntl); if ((ibsta & (int)GPIB.ibsta_bits.ERR) != 0) { //MessageBox.Show("Error in offline the GPIB interface card."); return false; } return true; } public bool read(int addr, string strWrite, string strRead) { StringBuilder str = new StringBuilder(100); //Open and intialize an GPIB instrument int dev = GPIB.ibdev(0, addr, 0, (int)GPIB.gpib_timeout.T1s, 1, 0); GPIB.gpib_get_globals(out ibsta, out iberr, out ibcnt, out ibcntl); if ((ibsta & (int)GPIB.ibsta_bits.ERR) != 0) { //MessageBox.Show("Error in initializing the GPIB instrument."); return false; } //clear the specific GPIB instrument GPIB.ibclr(dev); GPIB.gpib_get_globals(out ibsta, out iberr, out ibcnt, out ibcntl); if ((ibsta & (int)GPIB.ibsta_bits.ERR) != 0) { //MessageBox.Show("Error in clearing the GPIB device."); return false; } //Write a string command to a GPIB instrument using the ibwrt() command GPIB.ibwrt(dev, strWrite, strWrite.Length);