在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于HP-VISA庫(kù)的VXI總線測(cè)試應(yīng)用編程

            基于HP-VISA庫(kù)的VXI總線測(cè)試應(yīng)用編程

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

              5.屬性
              屬性(Attribute)是與會(huì)話或資源相關(guān)的,可以通過(guò)查詢或設(shè)備屬性的值來(lái)獲取或改變會(huì)話、資源的狀態(tài)(某些屬性是只讀的,另有一些屬性則是可讀寫的)。屬性可分為以下幾類:
             ?、儋Y源屬性
              包括與資源的制造商及VISA庫(kù)版本有關(guān)的信息,以及資源管理會(huì)話的狀態(tài)。
             ?、谝话銉x器屬性
              與會(huì)話相關(guān)的,主要用于確定諸如超時(shí)設(shè)置、緩沖區(qū)是否清除、接口類型等信息。
             ?、厶囟ń涌陬愋拖嚓P(guān)的屬性
              包括與、GPIB、ASRL、GPIB-等接口類型相關(guān)儀器的狀態(tài)信息。
             ?、苁录傩?
              這是一些只讀的屬性,可以查詢?nèi)绠?dāng)前允許的事件、觸發(fā)線設(shè)置等信息。
              6.事件及句柄
              事件指需要應(yīng)用程序進(jìn)行處理的一些情況,一般有三類:服務(wù)請(qǐng)求(SRQs)、中斷及硬件觸發(fā)器(Trigger)。事件只有在被設(shè)置為允許狀態(tài)后才能被接收和處理。
              這可以通過(guò)兩種方式完成:
             ?、偈紫妊b載一個(gè)事件句柄(ViInstallHandler函數(shù)),設(shè)置事件為允許狀態(tài)(ViEnableEvent)。這樣,當(dāng)指定的事件發(fā)生后,就可以轉(zhuǎn)到事件句柄回調(diào)函數(shù)中進(jìn)行處理(通常是提供一些提示信息)。
             ?、谟肰iEnableEvent函數(shù)設(shè)置事件為允許,然后在程序中適當(dāng)?shù)牡胤秸{(diào)用ViWaitOnEvent函數(shù)以等待事件的發(fā)生,這將暫停程序的執(zhí)行過(guò)程直到事件發(fā)生并被處理或超時(shí)。(這兩種方法在同一個(gè)會(huì)話中也不能并用)。
              另外,在事件響應(yīng)完之后,設(shè)置為允許的事件應(yīng)在適當(dāng)?shù)牡胤街匦抡{(diào)為禁止,并卸載事件句柄(ViUNInstallHandler函數(shù)和ViDisableEvent函數(shù))。
              7.出錯(cuò)處理
              在程序中考慮對(duì)出錯(cuò)的處理是一種好的編程風(fēng)格。VISA庫(kù)對(duì)此也提供了支持。一般可以在每一個(gè)VISA庫(kù)函數(shù)的調(diào)用后通過(guò)檢查返回值(與VI-Success常量比較)來(lái)判別是否有錯(cuò)誤發(fā)生。同樣,這里也需要定義相應(yīng)的錯(cuò)誤句柄回調(diào)函數(shù),完成對(duì)錯(cuò)誤的處理(如顯示提示信息、關(guān)閉會(huì)話、退出應(yīng)用等)。
              8.鎖機(jī)制
              在VISA庫(kù)編程中,可以同時(shí)對(duì)同一個(gè)設(shè)備保持多個(gè)會(huì)話,同樣,多個(gè)應(yīng)用也可以通過(guò)不同的會(huì)話對(duì)同一個(gè)設(shè)備或資源訪問(wèn)。在某些情況下,這將帶來(lái)問(wèn)題(與數(shù)據(jù)庫(kù)中的并發(fā)操作以及完整性概念相似)。這樣,可能某一應(yīng)用在訪問(wèn)資源時(shí)就希望能限制其它應(yīng)用對(duì)這一資源的訪問(wèn)。這時(shí),就需要用到加/解鎖函數(shù)調(diào)用。
              ViLock函數(shù):對(duì)資源加鎖,可以有兩種類型的鎖:排他鎖與共享鎖。
              ViUnLock函數(shù):解鎖。
              9.對(duì)設(shè)備編程
              VISA庫(kù)中對(duì)VXI儀器模塊的應(yīng)用開發(fā)提供了豐富的函數(shù),并可以支持VXI、GPIB及GPIB-VXI三種接口類型。
              VXI儀器模塊可分類為兩種:消息基設(shè)備和寄存器基設(shè)備。前者擁有自己的處理器,因而可以直接解釋并執(zhí)行SCPI命令,在VISA庫(kù)函數(shù)調(diào)用中,這只需把SCPI命令字串作為相應(yīng)的調(diào)用參數(shù)即可。同時(shí),VISA庫(kù)中還提供了直接對(duì)其寄存器操作的函數(shù)。后者則沒(méi)有自己的處理器,因而不能解釋SCPI命令。
              VISA庫(kù)中為VXI儀器模塊提供了兩級(jí)內(nèi)存操作函數(shù)接口:
              ①高級(jí)內(nèi)存函數(shù)
              它屏蔽了低層的內(nèi)存映射及寄存器訪問(wèn)機(jī)制,向用戶提供了簡(jiǎn)單易用的函數(shù)調(diào)用接口,從而可以方便地訪問(wèn)VXI接口上指定的內(nèi)存空間。
              ViInxx函數(shù):讀入指定內(nèi)存空間的值
              ViOutxx函數(shù):向指定內(nèi)存空間輸出值
              ViMoveInxx函數(shù):對(duì)指定內(nèi)存處成塊數(shù)據(jù)的讀入
              ViMoveOutxx函數(shù):向內(nèi)存輸出成塊數(shù)據(jù)
              xx分別對(duì)應(yīng)8、16或32位數(shù)據(jù),相應(yīng)為8、16、32。
              ②低級(jí)內(nèi)存函數(shù)
              高級(jí)內(nèi)存函數(shù)簡(jiǎn)單易用,但其缺陷在于速度上的損失(內(nèi)部的地址映射及寄存器訪問(wèn)帶來(lái)的影響),因而在某些對(duì)速度有較高要求的場(chǎng)合,還需使用VISA庫(kù)中的低層內(nèi)存函數(shù)。
              ViMapAddress函數(shù):完成內(nèi)存空間的映射
              ViPeekxx函數(shù):讀入寄存器內(nèi)容
              ViPokexx函數(shù):向寄存器中寫入
              ViUnMapAddress函數(shù):釋放內(nèi)存映射
              xx同樣代表8、16或32位后綴。
              10.應(yīng)用示例
              前面幾小節(jié)中分別討論了基于的VXI應(yīng)用開發(fā)中的一些細(xì)節(jié),下面,通過(guò)給出一個(gè)具體的程序?qū)嵗M(jìn)一步說(shuō)明:
              //示例程序example.c源代碼清單
              #include<visa.h>    //包含VISA庫(kù)頭文件
              #include<stdio.h>
              voidmainO
              {
              ViSessiondefaultRm,Vi;  //定義保存會(huì)話句柄的變量
              doubleres;
              doublelist【2】=(1,0.001);
              ViOpenDefaultRM(defaultRM);//打開缺省資源管理器會(huì)話
              //打開儀器會(huì)話(接口類型為VXIO,邏輯地址24)
              ViOpen(defaultRM,“VXIO∶∶22∶∶INSTR”,VI-NULL,VI-NULL,Vi);
              //設(shè)置對(duì)會(huì)話的獨(dú)占鎖
              ViLock(Vi,VI-EXCLUSIVE-LOCK,2000,VI-NULL,VI-NULL);
              /*下面一段代碼為格式化I/O函數(shù)演示*/
              ViPrintf(Vi,“*RST\n”);//利用格式化I/O函數(shù),初始化儀器
              ViPrintf(Vi,“CALC∶DBM∶REF50\n”);//利用格式化I/O函數(shù)向儀器發(fā)送命令,
              VIPrintf(Vi,“MEAS∶VOLT∶AC?%,2f\n”,list);//本例為進(jìn)行直流電壓測(cè)量
              ViScanf(Vi,“%lf”,res);//利用格式化I/O函數(shù)讀出測(cè)量結(jié)果
              printf(“MeasurementResults:%lf\n”,res);

            c++相關(guān)文章:c++教程




            評(píng)論


            相關(guān)推薦

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

            關(guān)閉