新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于HP-VISA库的VXI总线测试应用编程

基于HP-VISA库的VXI总线测试应用编程

作者:时间:2013-03-30来源:网络收藏

  /*下面一段代码为无格式I/O函数演示
    ViWrite(Vi,(ViBuf)“RST\n”,5,actual);//设备初始化
    ViWrite(Vi,(ViBuf)“CALC∶DBM∶REF50\n”,16,actual);//直流电压测量
    ViWrite(Vi,(ViBuf)“MEAS∶VOLT∶AC?1,0.001\n”23,actual);
    ViWrite(Vi,(ViBuf)strres,20,actual); //读出测量结果
    strres[actual]=0;  //用空字符结束串
    printf(“MeasurementResults:%s\n”,strres);
  */
  //利用属性设置函数激活触发线
  ViSetAttribute(Vi,VI-ATTR-TRIG-ID,VI-TRIG-TTLO);
  ViInstallHandler(Vi,VI-EVENT-TRIG,myHdlr,(ViAddr)10);//装载事件句柄
  ViEnableEvent(vi,VI-EVENT-TRIG,VI-HNDLR,VI-NULL);//设置事件为允许
  ViAssertTrigger(Vi,VI-TRIG-PROT-SYNC);//引发触发线
  ViDisableEvent(Vi,VI-EVENT-TRIG,VI-HNDLR);//处理完成,设置事件禁止
  ViUninstallHandler(Vi,VI-EVENT-TRIG,myHdlr,(ViAddr)10);//卸载事件句柄
  ViUnlock(Vi);//解锁
  ViClose(Vi);//关闭设备会话
  ViClose(DefaultRM);//关闭资源管理器会话
  }
  //触发器事件句柄函数
  ViStatus-VI-FUNCHmyHdlr(ViSessionVi,ViEventTypeeventType,VIEventctx,ViAddreserHdlr)
  {
  ViInt16trigId;
  if(eventType!-VI-EVENT-TRIG){  //检查事件类型
  returnVI-SUCCESS; }  //其它事件被忽略
  printf(“TriggerEventOccurred!\n.OriginalDeviceSession=%ld\n”,Vi”);
  //通过属性读取函数,获取被引发的触发器
  ViGetAttribute(ctx,VI-ATTR-RECV-TRIG-ID,trigId);
  printf(“Triggerthatfired:”);
  switch(trigId){  caseVI-TRIG-TTLO:
           printf(“TTLO”);
           break;
           default
           printf(“<otherOx%x>”,trigId);
           break;
  }
  printf(“\n”);
  returnVI-SUCCESS;
  }
三、小结
  VISA标准及库的开发为用户提供了简捷易用的函数接口,有效地提高了应用开发效率,并能保证一致性与良好的可移植性。而功能还处于不断的完善和发展中,是一种有别于已有I/O软件标准的大有前途的I/O软件标准构架。

参考文献

1 HPVISAUser’sGuide
2 VISA-虚拟仪器软件构架的结构及应用。《国外电子测量技术》1997.NO.1

c++相关文章:c++教程



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭