新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于GPIB總線的無(wú)線電頻譜監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)

基于GPIB總線的無(wú)線電頻譜監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)

作者: 時(shí)間:2009-11-04 來(lái)源:網(wǎng)絡(luò) 收藏

  BOOL C∷Open(int BdIndx,int pad,int sad,int tmo,int eot,int eos)

{ if (m_bOpened==TRUE)

    return TRUE;

  m_ctrl=ibfind(″0″);//獲得卡的控制句柄

  if (m_ctrl0)

   return FALSE;

  ibconfig(m_ctrl,IbcAUTOPOLL,0);//禁止AutoPoll

  eot=1;

  eos=0x0C0A;

  m_dev=ibdev(BdIndx,pad,sad,tmo,1,eos);

               //獲得ESVN40的控制句柄

  if (ibsta ERR)

  { sprintf(ErrString,″打開GPIB卡出錯(cuò)!錯(cuò)誤號(hào):ibsta=

               0x%x iberr=%dn″,ibsta,iberr);

   this->SetError(ErrString);

   return FALSE;

  }

  ibbna(m_dev,″GPIB0″);  //將ESVN40分配給GPIB卡

  setGPIBEos(0x0C0A);

  m_bOpened=TRUE;

  return m_bOpened;

  }

 ?、贕PIB類中向儀器寫字符串的方法主要用于完成從控制計(jì)算機(jī)向儀器發(fā)送控制字符串的功能,可以用異步或者同步方式進(jìn)行傳送。在寫之前,要對(duì)超時(shí)進(jìn)行合理的設(shè)置。通常,如果字符串較長(zhǎng),可以把超時(shí)設(shè)定得大一些。其關(guān)鍵代碼如下:

int CGPIB∷SendData(const char*buf,int DataLength)

{ string tmpbuf;

  tmpbuf=buf;

  tmpbuf +=10;

  ibeot(m_dev,1);

  ibwrta(m_dev,(void*)tmpbuf.c_str( ),tmpbuf.size( ));

               //異步寫字符串到儀器

  ibwait(m_dev,0x4100);   //等待寫操作完成

  ibwait(m_dev,0x0000);   //讀出GPIB的狀態(tài)

  if(ibsta ERR)

  {

return FALSE;

  }

  return ibcntl;

  }

 ?、蹚膬x器接收字節(jié)的方法主要用于完成從ESVN40的數(shù)據(jù)緩沖區(qū)中讀入一個(gè)字節(jié)。該方法對(duì)于讀取儀器的狀態(tài)寄存器非常有用。

int CGPIB∷ReadChar(char*ch)

{

  if(!(m_bOpened)||(m_dev==NULL))

return FALSE;

  int i=1;

  RecvData((void*)ch,i);

  return TRUE;

}

  



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉