基于HP-VISA库的VXI总线测试应用编程
/*下面一段代码为无格式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++教程
评论