RIGOL DSG3000 Series User Manual

Page 174

Advertising
background image

RIGOL

Chapter 4 Programming Demos

4-18

DSG3000 Programming Guide

status = viWrite(instr, (unsigned char *)SendBuf, strlen(SendBuf), &retCount);

//close the instrument

status = viClose(instr);

status = viClose(defaultRM);

return bWriteOK;

}

2) Encapsulate the read operation of VISA for easier operation.

bool CDSG3000_DEMO_VCDlg::InstrRead(CString strAddr, CString *pstrResult)

//Read from the instrument

{

ViSession defaultRM,instr;

ViStatus status;

ViUInt32 retCount;

char * SendAddr = NULL;

unsigned char RecBuf[MAX_REC_SIZE];

bool bReadOK = false;

CString str;

//Change the address's data style from CString to char*

SendAddr = strAddr.GetBuffer(strAddr.GetLength());

strcpy(SendAddr,strAddr);

strAddr.ReleaseBuffer();

memset(RecBuf,0,MAX_REC_SIZE);

//open the VISA instrument

status = viOpenDefaultRM(&defaultRM);

if (status < VI_SUCCESS)

{

// Error Initializing VISA...exiting

AfxMessageBox("No VISA instrument was opened !");

return false;

}

//open the instrument

status = viOpen(defaultRM, SendAddr, VI_NULL, VI_NULL, &instr);

//read from the instrument

status = viRead(instr, RecBuf, MAX_REC_SIZE, &retCount);

//close the instrument

status = viClose(instr);

status = viClose(defaultRM);

(*pstrResult).Format("%s",RecBuf);

return bReadOK;

}

7. Add the control message response codes.

1) Connect the instrument

void CDSG3000_DEMO_VCDlg::OnConnect()

{

// TODO: Add your control notification handler code here

ViStatus status;

Advertising