基于HP-VISA庫的VXI總線測試應(yīng)用編程
/*下面一段代碼為無格式I/O函數(shù)演示
ViWrite(Vi,(ViBuf)“RST\n”,5,actual);//設(shè)備初始化
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); //讀出測量結(jié)果
strres[actual]=0; //用空字符結(jié)束串
printf(“MeasurementResults:%s\n”,strres);
*/
//利用屬性設(shè)置函數(shù)激活觸發(fā)線
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);//設(shè)置事件為允許
ViAssertTrigger(Vi,VI-TRIG-PROT-SYNC);//引發(fā)觸發(fā)線
ViDisableEvent(Vi,VI-EVENT-TRIG,VI-HNDLR);//處理完成,設(shè)置事件禁止
ViUninstallHandler(Vi,VI-EVENT-TRIG,myHdlr,(ViAddr)10);//卸載事件句柄
ViUnlock(Vi);//解鎖
ViClose(Vi);//關(guān)閉設(shè)備會話
ViClose(DefaultRM);//關(guān)閉資源管理器會話
}
//觸發(fā)器事件句柄函數(shù)
ViStatus-VI-FUNCHmyHdlr(ViSessionVi,ViEventTypeeventType,VIEventctx,ViAddreserHdlr)
{
ViInt16trigId;
if(eventType!-VI-EVENT-TRIG){ //檢查事件類型
returnVI-SUCCESS; } //其它事件被忽略
printf(“TriggerEventOccurred!\n.OriginalDeviceSession=%ld\n”,Vi”);
//通過屬性讀取函數(shù),獲取被引發(fā)的觸發(fā)器
ViGetAttribute(ctx,VI-ATTR-RECV-TRIG-ID,trigId);
printf(“Triggerthatfired:”);
switch(trigId){ caseVI-TRIG-TTLO:
printf(“TTLO”);
break;
default
printf(“<o(jì)therOx%x>”,trigId);
break;
}
printf(“\n”);
returnVI-SUCCESS;
}
三、小結(jié)
VISA標(biāo)準(zhǔn)及庫的開發(fā)為用戶提供了簡捷易用的函數(shù)接口,有效地提高了應(yīng)用開發(fā)效率,并能保證一致性與良好的可移植性。而功能還處于不斷的完善和發(fā)展中,是一種有別于已有I/O軟件標(biāo)準(zhǔn)的大有前途的I/O軟件標(biāo)準(zhǔn)構(gòu)架。
參考文獻(xiàn)
1 HPVISAUser’sGuide
2 VISA-虛擬儀器軟件構(gòu)架的結(jié)構(gòu)及應(yīng)用?!秶怆娮訙y量技術(shù)》1997.NO.1
c++相關(guān)文章:c++教程
評論