VISA函數

Tektronix示波器可以使用NI-VISA驅動來控制, 安裝NI-VISA後, 存在/Library/Frameworks/VISA.framework,

此framework種全部是C語言接口, 查到了一些這些接口的使用和含義, 在此記錄學習:

https://blog.csdn.net/yaogangganggang/article/details/103366396

https://blog.csdn.net/yu__jia/article/details/46044083


VISA函數
viOpenDefaultRM
原型    ViStatus viOpenDefaultRM (ViSession sesn );
描述    這個函數用來初始化一個VISA資源管理器,此函數必須要在其他任何VISA函數之前調用。函數通過sesn參數返回一個獨立的VISA資源管理器ID。
參數    名稱    方向    類型    描述
sesn    OUT    ViSession    返回一個獨一無二的VISA資源管理器邏輯標識符

返回值    返回值爲函數運行結果,如果成功sesn返回VISA資源管理器標識符,否則返回0。
標識符    值    描述
VI_SUCCESS    0    VISA資源管理器初始化成功。
VI_ERROR_ALLOC    系統資源不足。
VI_ERROR_INV_SETUP    配置文件無效或者不存在。
VI_ERROR_SYSTEM_ERROR    VISA系統初始化失敗。

viOpen
原型    ViStatus viOpen (ViSession sesn, ViRsrc rsrcName, ViAccessMode accessMode, ViUInt32 timeout, ViSession vi);
描述    連接一個指定的設備,返回一個可用於調用其他功能的連接標識符。
參數    名稱    方向    類型    描述
sesn    IN    ViSession    VISA資源管理器邏輯標識符。
rsrcName    IN    ViRsrc    地址名稱。
accessMode    IN    ViAccessMode    連接打開方式,可以是以下值:
VI_EXCLUSIVE_LOCK獨佔方式打開;
VI_LOAD_CONFIG更具外部配置文件打開;
VI_NULL正常多訪問打開。
timeout    IN    ViUInt32    如果是以獨佔模式連接,該參數是一個絕對時間(單位ms),超時就返回一個錯誤。其他連接方式忽略此值。
vi    OUT    ViSession    返回打開連接邏輯標識符。

返回值    返回值爲函數運行結果,如果成功vi返回設備連接標識符,否則返回0。
標識符    值    描述
VI_SUCCESS    0    連接成功。
VI_SUCCESS_DEV_NPRESENT    連接成功。但是指定的地址無響應。
VI_WARN_CONFIG_NLOADED    指定的地址不存在或者地址格式不正確。
VI_ERROR_ALLOC    系統資源不足。
VI_ERROR_INTF_NUM_NCONFIG    指定的地址是有效的,但無法使用。
VI_ERROR_INV_ACC_MODE    非法的存取模式。
VI_ERROR_INV_RSRC_NAME    地址名稱語法錯誤。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    無效的vi。
VI_ERROR_LIBRARY_NFOUND    VISA庫加載不完全。
VI_ERROR_NSUP_OPER    資源管理器sesn不支持此函數。
VI_ERROR_RSRC_BUSY    sesn是有效的,但當前無法訪問。
VI_ERROR_RSRC_LOCKED    sesn被獨佔。
VI_ERROR_RSRC_NFOUND    信息不足或者資源不存在。
VI_ERROR_TMO    0xBFFF0015
操作超時。

viClose
原型    ViStatus viClose(ViSession vi);
ViStatus viClose(ViEvent vi);
ViStatus viClose(ViFindList vi);
描述    關閉一個資源管理器或者設備連接,並釋放內存。
參數    名稱    方向    類型    描述
vi    IN    ViSession
ViEvent
ViFindList    需要關閉的對象。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    關閉成功。
VI_WARN_NULL_OBJECT    要關閉的對象是空對象。
VI_ERROR_CLOSING_FAILED    vi不能標識正當對話通道。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    無法釋放與該對話通道相關聯的內存數據結構。

viFindRsrc
原型    ViStatus viFindRsrc(ViSession sesn, ViString expr, ViPFindList findList,
ViPUInt32 retcnt, ViRsrc instrDesc);
描述    該函數用於查找VISA系統裏與指定接口相連的資源設備。該函數查找的與expr參數相匹配的有效資源設備。
該函數成功完成將返回與exor相匹配的資源組中的第一個資源(instrDesc),還返回一個資源組中的個數(retnt)。
另外還返回一個找到的隊列句柄,可以同過調用viFindNext傳入這個句柄來獲得其他找到的資源。當這個句柄不需要時必須調用viClose關閉。
expr參數不區分大小寫,搜尋標準由兩個部分組成:一個資源的正則表達式和一個可選的屬性值邏輯表達式。這個正則表達式是與已知的VISA資源管理器相匹配。
如果這資源字符串與正則表達式相匹配,並且屬性值也與邏輯表達式匹配,則這匹配是成功的,這資源將添加到資源查詢隊列(findList)中。(安捷倫的VISA不支持匹配屬性值。)
這可選的屬性邏輯表達式允許使用邏輯符號AND,OR,NOT。相等(==)和不等(!=)可以用與任何類型的屬性比較。另外的非等號比較的(>,<,>=,<=)只能用於數值類型的屬性比較。僅僅全局屬性才能參與屬性表達式。
如果findList參數傳入的是VI_NULL,則會自動調用viClose關閉查找到的資源隊列。findList參數和retcnt參數都是可選的,如果只需要第一個匹配到的設備並且不需要知道連接了多少設備這兩個參數都可以傳入VI_NULL。
所有返回的字符串都需要經過viParseRsrc和viOpen函數的驗證,不是所有查詢到的資源都可以通過和查詢的。
參數    名稱    方向    類型    描述
sesn    IN    ViSession    資源管理器。必須要被viOpenDefaultRM函數初始化。
expr    IN    ViString    表達要搜索的一個接口或者所有接口存在的設備。(參照下面的格式描述字符串表)
findList    OUT    ViPFindList    返回一個搜索到的句柄標識符,這句柄可以作爲viFindNext函數的參數傳入。如果爲VI_NULL,自動動調用viClose關閉findList。
retcnt    OUT    ViPUInt32    匹配到的設備數量。如果爲VI_NULL,不返回找到的個數。
instrDesc    OUT    ViRsrc    返回一個設備識別地址字符串,可以直接傳給viOpen建立一個會話。
expr參數描述字符串說明:
接口    表達
GPIB    GPIB[0-9]*::?*INSTR
VXI    VXI?*INSTR
GPIB-VXI    GPIB-VXI?*INSTR
GPIB和GPIB-VXI    GPIB?*INSTR
All VXI    ?VXI[0-9]::?INSTR
ASRL    ASRL[0-9]::?*INSTR
All    ?*INSTR

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    找到資源。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    傳遞的對象無效。
VI_ERROR_NSUP_OPER    不支持該函數。
VI_ERROR_INV_EXPR    無效的搜索指定。
VI_ERROR_RSRC_NFOUND    沒有找到設備。

viFindNext
原型    ViStatus viFindNext(ViFindList findList, ViPRsrc instrDesc);
描述    返回查找資源隊列上的下一個資源。
參數    名稱    方向    類型    描述
findList    IN    ViFindList    查找隊列句柄。必須由viFindRsrc函數創建。
instrDesc    OUT    ViPRsrc    返回一個地址字符串。字符串可以通過調用viOpen函數建立一個會話連接。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    找到資源。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    findList不能標誌正確的連接。
VI_ERROR_NSUP_OPER    findList不支持該函數。
VI_ERROR_RSRC_NFOUND    沒找到資源。

viParseRsrc
原型    ViStatus viParseRsrc(ViSession sesn, ViRsrc rsrcName, ViPUInt16 intfType, ViPUInt16 intfNum);
描述    從語法上分析一個指向設備的資源字符串。這操作分析字符串的有效性。viFindRsrc函數返回的所有字符串都必須在分析成功後才能調用viOpen函數。
返回的intfType和intfNum分別對應VI_ATTR_INTF_TYPE和VI_ATTR_INTF_NUM屬性。這些值將與使用viOpen函數連接後使用viGetAttribute函數查詢的值一樣。
在viOpen函數中設置別名,viParesRsrc函數也能識別。
rsrcName參數不區分大小寫。
參數    名稱    方向    類型    描述
sesn    IN    ViSession    默認資源管理器(必須經過viOpenDefaultRM函數初始化)。
rsrcName    IN    ViRsrc    資源獨立的名稱。
intfType    OUT    ViPUInt16    會話連接的接口類型。
intfNum    OUT    ViPUInt16    會話連接的板號。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    資源字符串是有效的。
VI_ERROR_ALLOC    內存不足。
VI_ERROR_INTF_NUM_NCONFIG    接口類型是有效的,但接口號是無效的。
VI_ERROR_INV_RSRC_NAME    無效的資源指示字符串。語法錯誤。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    sesn不能標誌正確的連接。
VI_ERROR_LIBRARY_NFOUND    一個VISA必須庫無法加載。
VI_ERROR_NSUP_OPER    給定的sesn不支持該函數。例如,該函數僅僅支持默認資源管理器的sesn。
VI_ERROR_RSRC_NFOUND    位置信息不足。

viClear
原型    ViStatus viClear(ViSession vi);
描述    清空設備,執行IEEE 488.1系統的清空操作。
如果連接方式是使用VXI總線,將清空所有連接設備;
如果連接方式是使用GPIB數據採集板,將只清空指定地址的設備;
如果連接方式是使用TCPIP套接字,需要把VI_ATTR_IO_PROT屬性設置成VI_PROT_4882_STRS,將相當於向設備發送”*CLS\n”字符串,其他設置操作無效。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    函數執行成功。
VI_ERROR_BERR    總線錯誤。
VI_ERROR_CONN_LOST    連接丟失。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_INV_SETUP    設置無效,不能執行操作。
VI_ERROR_NCIC    非法控制器。
VI_ERROR_NLISTENERS    沒有檢測到聽者。
VI_ERROR_NSUP_OPER    vi不支持此函數
VI_ERROR_RAW_RD_PROT_VIOL    傳輸時讀協議被破壞。
VI_ERROR_RAW_WR_PROT_VIOL    傳輸時寫協議被破壞。
VI_ERROR_RSRC_LOCKED    vi被獨佔。
VI_ERROR_TMO    操作超時。

viFlush
原型    ViStatus viFlush(ViSession vi, ViUInt16 mask);
描述    手動刷新格式化I/O緩衝區。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
mask    IN    ViUInt16    緩衝區類型。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    函數執行成功。
VI_ERROR_INV_MASK    緩衝區類型設置錯誤
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_IO    I/O錯誤
VI_ERROR_RSRC_LOCKED    存取鎖定模式不支持特定操作
VI_ERROR_TMO    超時。

viReadSTB
原型    ViStatus viReadSTB(ViSession vi, ViPUInt16 status);
描述    讀取一個服務請求狀態。例如,在IEEE488.2接口上,這消息將輪訓所有的連接設備。其他接口這消息只讀取一個設備的服務請求狀態。
連接方式是使用TCPIP套接字,如果VI_ATTR_IO_PROT屬性的值爲VI_PROT_4882_STRS,將向這設備發送字符串”*STB?\n”查詢狀態,其他設置則操作將無效。
如果這個設備狀態信息只有一個字節(BYTE)長度,則另外一個字節設爲0。如果服務請求沒有在規定時間週期內完成,將返回VI_ERROR_TMO。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
status    OUT    ViUInt16    服務請求狀態字節。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    函數執行成功。
VI_ERROR_BERR    總線錯誤。
VI_ERROR_CONN_LOST    連接丟失。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_INV_SETUP    設置無效,不能執行操作。
VI_ERROR_NCIC    非法控制器。
VI_ERROR_NLISTENERS    沒有檢測到聽者。
VI_ERROR_NSUP_OPER    vi不支持此函數
VI_ERROR_RAW_RD_PROT_VIOL    傳輸時讀協議被破壞。
VI_ERROR_RAW_WR_PROT_VIOL    傳輸時寫協議被破壞。
VI_ERROR_RSRC_LOCKED    vi被獨佔。
VI_ERROR_SRQ_NOCCURRED    對象沒有收到服務請求。
VI_ERROR_TMO    操作超時。

viRead
原型    ViStatus viRead(ViSession vi, ViBuf buf, ViUInt32 count,ViUInt32 retCount);
描述    同步讀取數據。讀取的數據存儲在buf中。當數據讀取完畢函數才返回。任何時間都只能存在一個同步讀取。遇到以下情況同步讀取結束:
收到END指示器
讀取到終止符
讀取的數據大小達到count的值
注意:必須設置讀取終止符。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
buf    OUT    ViBuf    返回數據存取地址。
count    IN    ViUInt32    指定讀取長度。
retCount    OUT    ViUInt32    實際讀取長度。如果爲VI_NULL表示不關心該值。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    成功讀取,讀取到END指示器結束。
VI_SUCCESS_MAX_CNT    成功讀取,已經達到最大長度count。
VI_SUCCESS_TERM_CHAR    成功讀取,讀取到特定終止符。
VI_ERROR_ASRL_FRAMING    構架錯誤。
VI_ERROR_ASRL_OVERRUN    溢出錯誤。
VI_ERROR_ASRL_PARITY    同步錯誤。
VI_ERROR_BERR    總線錯誤。
VI_ERROR_CONN_LOST    連接丟失。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_INV_SETUP    設置無效,不能執行操作。
VI_ERROR_IO    未知I/O錯誤。
VI_ERROR_NCIC    非法控制器。
VI_ERROR_NLISTENERS    沒有檢測到聽者。
VI_ERROR_NSUP_OPER    vi不支持此函數
VI_ERROR_OUTP_PROT_VIOL    設備記錄一個輸出協議錯誤。
VI_ERROR_RAW_RD_PROT_VIOL    傳輸時讀協議被破壞。
VI_ERROR_RAW_WR_PROT_VIOL    傳輸時寫協議被破壞。
VI_ERROR_RSRC_LOCKED    vi被獨佔。
VI_ERROR_TMO    操作超時。

viReadAsync
原型    ViStatus viReadAsync(ViSession vi, ViBuf buf, ViUInt32 count, ViJobId jobId);
描述    異步讀取數據。讀取的數據存儲在buf中。當數據讀取完畢函數才返回。當數據傳輸結束時觸發一個I/O結束事件。
該函數返回一個jobId表示該操作的標識符,可以使用viTerminate函數傳入jobId終止或者等待I/O結束事件來確定異步讀操作完成。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
buf    OUT    ViBuf    返回數據存取地址。
count    IN    ViUInt32    指定讀取長度。
jobId    OUT    ViJobId    異步讀操作工作標識符。如果爲VI_NULL表示不關心該值。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    異步讀成功進入隊列。
VI_SUCCESS_SYNC    讀操作進行異步。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_QUEUE_ERROR    隊列錯誤。
VI_ERROR_RSRC_LOCKED    vi被獨佔。

viReadToFile
原型    ViStatus viReadToFile (ViSession vi, ViConstString fileName,
ViUInt32 count, ViUInt32 retCount);
描述    同步讀取數據並把數據保存到文件中。fileName指定的文件只有只寫權限。
如果VI_ATTR_FILE_APPEND_EN屬性值爲VI_FLASE,數據寫入將直接覆蓋原來的數據,否則在文件內容尾部添加數據。僅當數據讀取和保存操作完成此函數才返回。此函數一般用於保存未處理的數據便於後期處理。
VSIA使用ANSI C(標準C)文件操作。viReadToFile的模式通常是”wb”或者”ab” 。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
fileName    IN    ViConstString    寫入的文件地址。
count    IN    ViUInt32    讀取數據長度。
retCount    OUT    ViUInt32    實際讀取數據長度。如果爲VI_NULL表示不關心該值。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    操作成功。
VI_SUCCESS_MAX_CNT    讀取的數據長度達到了count的值。
VI_SUCCESS_TERM_CHAR    讀取到指定的終止符號。
VI_ERROR_ASRL_FRAMING    格式錯誤。
VI_ERROR_ASRL_OVERRUN    溢出錯誤。
VI_ERROR_ASRL_PARITY    同步錯誤。
VI_ERROR_BERR    總線錯誤。
VI_ERROR_CONN_LOST    連接丟失。
VI_ERROR_FILE_ACCESS    打開文件錯誤。可能是提供的無效路徑或者沒有訪問權限。
VI_ERROR_FILE_IO    訪問文件時發生錯誤。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_INV_SETUP    設置無效,不能執行操作。
VI_ERROR_IO    未知I/O錯誤。
VI_ERROR_NCIC    非法控制器。
VI_ERROR_NLISTENERS    沒有檢測到聽者。
VI_ERROR_NSUP_OPER    vi不支持此函數
VI_ERROR_OUTP_PROT_VIOL    設備報告輸出協議錯誤。
VI_ERROR_RAW_RD_PROT_VIOL    傳輸時讀協議被破壞。
VI_ERROR_RAW_WR_PROT_VIOL    傳輸時寫協議被破壞。
VI_ERROR_RSRC_LOCKED    vi被獨佔。
VI_ERROR_TMO    超時。

viWrite
原型    ViStatus viWrite(ViSession vi, ViBuf buf, ViUInt32 count, ViUInt32 retCount);
描述    同步寫入數據。寫入的數據存儲在buf中。當數據寫入完畢函數才返回。任何時間都只能存在一個同步寫入。
如果retCount的值爲VI_NULL將不返回寫入數據長度值。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
buf    IN    ViBuf    寫入數據存放地址。
count    IN    ViUInt32    指定寫入長度。
retCount    OUT    ViUInt32    實際寫入長度。如果爲VI_NULL表示不關心該值。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    成功讀取,讀取到END指示器結束。
VI_SUCCESS_MAX_CNT    成功讀取,已經達到最大長度count。
VI_SUCCESS_TERM_CHAR    成功讀取,讀取到特定終止符。
VI_ERROR_ASRL_FRAMING    格式錯誤。
VI_ERROR_ASRL_OVERRUN    溢出錯誤。
VI_ERROR_ASRL_PARITY    同步錯誤。
VI_ERROR_BERR    總線錯誤。
VI_ERROR_CONN_LOST    連接丟失。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_INV_SETUP    設置無效,不能執行操作。
VI_ERROR_IO    未知I/O錯誤。
VI_ERROR_NCIC    非法控制器。
VI_ERROR_NLISTENERS    沒有檢測到聽者。
VI_ERROR_NSUP_OPER    vi不支持此函數
VI_ERROR_OUTP_PROT_VIOL    設備報告輸出協議錯誤。
VI_ERROR_RAW_RD_PROT_VIOL    傳輸時讀協議被破壞。
VI_ERROR_RAW_WR_PROT_VIOL    傳輸時寫協議被破壞。
VI_ERROR_RSRC_LOCKED    vi被獨佔。
VI_ERROR_TMO    操作超時。

viWriteAsync
原型    ViStatus viWriteAsync(ViSession vi, ViBuf buf, ViUInt32 count, ViJobId jobId);
注意:在安捷倫設備中將調用同步寫入。
描述    異步寫入數據。需要寫入的數據存放在buf中。當數據寫入完畢函數才返回。當數據傳輸完整結束時會觸發一個I/O結束事件。
該函數返回一個jobId表示該操作的標識符,可以使用viTerminate函數傳入jobId終止或者等待I/O結束事件來確定異步讀操作完成。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
buf    IN    ViBuf    寫入數據存取地址。
count    IN    ViUInt32    寫入數據長度。
jobId    OUT    ViJobId    異步寫入操作工作標識符。如果爲VI_NULL表示不關心該值。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    異步寫成功進入隊列。
VI_SUCCESS_SYNC    寫操作進行異步。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_QUEUE_ERROR    隊列錯誤。
VI_ERROR_RSRC_LOCKED    vi被獨佔。

viWriteFromFile
原型    ViStatus viWriteFromFile (ViSession vi, ViConstString fileName,
ViUInt32 count, ViUInt32 retCount);
描述    從一個指定的文件中獲取數據並同步寫入設備中。指定的fileName是以只讀模式打開讀取數據(讀取全部數據或者數據長度達到count的值)。讀取到的數據都將寫入到設備中。該函數僅當操作完成才結束返回。
該操作通常是發送已經經過處理的數據。VISA以ANSI C(標準C)文件操作,所以viWriteFromFile模式一般都是”rb”。如果retCount參數設爲VI_NULL,函數將不返回實際發送的數據長度,此操作常用於只需知道是否成功的操作。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
fileName    IN    ViConstString    讀取的文件地址。
count    IN    ViUInt32    寫入數據長度。
retCount    OUT    ViUInt32    實際寫入長度。如果爲VI_NULL表示不關心該值。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    操作成功。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_NSUP_OPER    vi不支持該函數。
VI_ERROR_RSRC_LOCKED    vi被獨佔。
VI_ERROR_TMO    超時。
VI_ERROR_RAW_RW_PROT_VIOL    傳輸時讀協議被破壞。
VI_ERROR_RAW_RD_PROT_VIOL    傳輸時寫協議被破壞。
VI_ERROR_OUTP_PROT_VIOL    傳輸時設備報告輸入協議錯誤。
VI_ERROR_BERR    總線錯誤。
VI_ERROR_NCIC    非法控制器。
VI_ERROR_NLISTENERS    沒有檢測到聽者。
VI_ERROR_IO    未知I/O錯誤。
VI_ERROR_FILE_ACCESS    打開文件錯誤。可能是提供的無效路徑或者沒有訪問權限。
VI_ERROR_FILE_IO    訪問文件時發生錯誤。
VI_ERROR_CONN_LOST    連接丟失。

viPrintf
原型    ViStatus viPrintf(ViSession vi, ViString writeFmt, arg1, arg2,…);
描述    格式化字符串併發送格式化後的字符串給設備。(字符串格式化可以參照MFC裏CString類中的Format函數。)
不能在同一資源上同時使用viWrite和viPrintf函數。
部分VSIA函數的參數是可變的(如viPrintf, viScanf和viQueryf),導致VB不能調用。用戶可以使用與這些函數功能相當的函數代替。
writeFmt參數可以包含普通字符、一般格式化字符和特殊字符。普通字符(包括空格)書寫方式與平常一樣,不用做任何修改。特殊字符則要在該字符前面加一個反斜槓( \ );格式化字符由百分號( % )和操作標誌組成,操作標誌後面介紹。
特殊字符
參照下表:
\n    發送一個ASCII碼換行符,並且END標誌自動一起發送。
\r    發送一個ASCII碼回車。
\t    發送一個ASCII碼製表符。
###    發送一個指定的八進制數。
\”    發送一個ASCII碼雙引號。
\    發送一個ASCII碼反斜槓。
格式化字符
格式化說明符轉換是根據後面的參數值來進行改變和格式化的。格式化完成後直接發送給設備。格式化字符串語法如下:
% [ arraySize , ][ flags ] [ width ] [ . precision ] [ F | N | h | l ] type
arraySize表示數組的大小,逗號表示數組修飾符。arraySize可以是常量,也可以用*代替。*代替需要增加一個參數表示arraySize的值。只支持type 爲d和f。
flags表示規定輸出格式,可用符號如下:
符號    作用
無    右對齊,左邊填充0或空格。

左對齊,右邊填充空格。
在數字前增加符號 + 或 - 。
空格    只對負數顯示符號。
type = c, s, d, i, u時沒有影響。

type = o, x, X時,分別在數值前增加’0’,“0x”,“0X”。
type = e, E, f時,總是使用小數點。
type = g, G時,除了數值爲0外總是顯示小數點。
width表示控制顯示數值的寬度,取值和含義如下:
符號    作用
無    按缺省寬度顯示。
n(n=1,2,3…)    寬度至少爲n位,不夠以空格填充。
0n(n=1,2,3…)    寬度至少爲n位,不夠左邊以0填充。

格式列表中,下一個參數還是width。
precision用於控制小數點後面的位數,取值和含義如下:
符號    作用
無    按缺省精度顯示。
0    type=d,i,o,u,x時,沒有影響。
type=e,E,f時,不顯示小數點。
n(n=1,2,3…)    type=e,E,f時表示的最大小數位數。
type=其他,表示顯示的最大寬度。
格式列表中,下一個參數還是precision。
F | N | h | l表示指針是否是遠指針或整數是否是長整數。F表示遠指針,N表示近指針,h表示短整數或單精度浮點數,l表示長整數或雙精度浮點數。
type可用符號如下:
符號    作用    符號    作用
d / i    有符號10進制整數    u    無符號10進制整數
x    小寫字母無符號16進制    X    大寫字母無符號16進制
f / F    浮點數    e / E    科學記數法表示浮點數
c    單個字符    s    字符串
o    無符號8進制整數    %    顯示百分號
p    指針的值    g    自動選擇合適的表示法
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
writeFmt    IN    ViString    格式化字符串。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    參數成功格式化。
VI_ERROR_ALLOC    內存不足。
VI_ERROR_INV_FMT    writeFmt包含無效格式化說明符。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_IO    未知I/O錯誤。
VI_ERROR_NSUP_FMT    writeFmt有不支持的格式說明符。
VI_ERROR_RSRC_LOCKED    vi被獨佔。
VI_ERROR_TMO    操作超時。

viScanf
原型    ViStatus viScanf(ViSession vi, ViString readFmt, arg1, arg2,…);
描述    這操作從設備讀取一個字符串,然後格式化後保存值arg變量中。格式字符串包含說明符,空格字符和普通字符。
VISA中參數不確定的函數(如viPrintf, viScanf, 和 viQueryf)不能被VB調用。可以用功能相似的viVPrintf, viVScanf, 和viVQueryf函數代替。
隱式分割符(空格符,製表符,換行符,回車符)是被忽略的,除非是%c和%[]。除’%’外所有普通字符應該與從設備讀取到的字符相匹配。
格式字符串的語法格式如下:
% [ , arraySize ] [ width ] [ F | N | h | l ] type
arraySize表示返回數組的大小,逗號表示數組修飾符。arraySize可以是常量,也可以用#代替。#表示把返回的數組大小保存到一個參數中。只支持type 爲d和f。
width表示控制顯示數值的寬度,取值和含義如下:
符號    作用
無    按缺省寬度顯示。
n(n=1,2,3…)    表示輸入數據所佔列寬。
F | N | h | l表示指針是否是遠指針或整數是否是長整數。F表示遠指針,N表示近指針,h表示短整數或單精度浮點數,l表示長整數或雙精度浮點數。
type可用符號如下:
符號    作用    符號    作用
d / i    有符號10進制整數    u    無符號10進制整數
x    小寫字母無符號16進制    X    大寫字母無符號16進制
f / F    浮點數    e / E    科學記數法表示浮點數
c    單個字符    s    字符串
t    以END結尾的字符串    T    以“\n”結尾的字符串
y    二進制數組。

viScanf函數以END結束符結尾或者所有格式字符都匹配完成。如果碰到一個不匹配的字符該函數也將結束,所以先在檢測格式化字符串是否匹配前查找END符。
還有在格式化完成後在緩衝區還殘留一些數據的話,這些數據將留個下一個viScanf函數使用。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
writeFmt    IN    ViString    格式化字符串。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    成功讀到數據並且格式化到arg參數裏。
VI_ERROR_ALLOC    內存不足。
VI_ERROR_INV_FMT    writeFmt包含無效格式化說明符。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_IO    未知I/O錯誤。
VI_ERROR_NSUP_FMT    writeFmt有不支持的格式說明符。
VI_ERROR_RSRC_LOCKED    vi被獨佔。
VI_ERROR_TMO    操作超時。

viQueryf
原型    ViStatus viQueryf(ViSession vi, ViString writeFmt, ViString readFmt, arg1, arg2,…);
描述    這函數執行一個格式化寫和進行一個讀取操作請求。這函數提供一個機制“發送,然後讀取”一個典型的從設備獲取數據的命令。讀取是在發送命令後立即執行的。
該函數相當於viPrintf函數和viScanf函數結合起來。arg先匹配writeFmt,然後在匹配readFmt。具體格式化格式請參考viPrintf函數和viScanf函數的說明。
該函數的返回值和viPrintf, viScanf, viFlush一樣。
VISA中參數不確定的函數(如viPrintf, viScanf, 和 viQueryf)不能被VB調用。可以用功能相似的viVPrintf, viVScanf, 和viVQueryf函數代替。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
writeFmt    IN    ViString    寫入格式化字符串。
readFmt    OUT    ViString    讀取格式化字符串。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    成功完成一個查詢操作。
VI_ERROR_ALLOC    內存不足。
VI_ERROR_INV_FMT    0xBFFF003F    writeFmt包含無效格式化說明符。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_IO    未知I/O錯誤。
VI_ERROR_NSUP_FMT    0xBFFF0041    writeFmt有不支持的格式說明符。
VI_ERROR_RSRC_LOCKED    vi被獨佔。
VI_ERROR_TMO    0xBFFF0015    操作超時。

viSetAttribute
原型    ViStatus viSetAttribute(ViSession vi, ViAttr attribute, ViAttrState attrState);
ViStatus viSetAttribute(ViEvent vi, ViAttr attribute, ViAttrState attrState);
ViStatus viSetAttribute(ViFindList vi, ViAttr attribute, ViAttrState attrState);
描述    修改指定對象的指定屬性值。
如果一個資源屬性不能被修改,並且該資源是有效的和屬性說明不能指定爲其他值,viSetAttribute將返回錯誤代碼VI_ERROR_NSUP_ATTR_STATE。
VI_WARN_NSUP_ATTR_STATE和VI_ERROR_NSUP_ATTR_STATE都指明傳遞的值不是有效值。除特殊情況外,一般都返回錯誤代碼VI_ERROR_NSUP_ATTR_STATE,如果返回完成代碼VI_WARN_NSUP_ATTR_STATE表示不支持傳遞的值,但操作沒有失敗。
參數    名稱    方向    類型    描述
vi    IN    ViSession
ViEvent
ViFindList    對象標識符。
事件標識符。
查找隊列。
attribute    IN    ViAttr    要設置的資源屬性。
attrState    OUT    ViAttrState    要設置的值。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    成功設置資源屬性。
VI_WARN_NSUP_ATTR_STATE    設置的屬性是有效的,但不支持此屬性啓用。(這請求將停止,但可能會有性能改變。)
VI_ERROR_ATTR_READONLY    只讀屬性。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_NSUP_ATTR    該資源中沒有指定的屬性。
VI_ERROR_NSUP_ATTR_STATE    傳的值不是有效值,或者該屬性不支持該定義的值。(該操作將被阻止並返回錯誤。)
VI_ERROR_RSRC_LOCKED    vi被上鎖。

viGetAttribute
原型    ViStatus viGetAttribute(ViSession vi, ViAttr attribute, void _VI_PTR attrState);
ViStatus viGetAttribute(ViEvent vi, ViAttr attribute, void _VI_PTR attrState);
ViStatus viGetAttribute(ViFindList vi, ViAttr attribute, void _VI_PTR attrState);
描述    返回指定對象的指定屬性值。
參數    名稱    方向    類型    描述
vi    IN    ViSession
ViEvent
ViFindList    對象標識符。
事件標識符。
查找隊列。
attribute    IN    ViAttr    要返回的資源屬性。
attrState    OUT    void*    要返回的屬性值存放位置的指針。由於屬性值類型長度不同,所以必須要先明確屬性類型來分配存放的內存空間。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    成功獲取資源屬性。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_NSUP_ATTR    該資源中沒有指定的屬性。

viLock
原型    ViStatus viLock(ViSession vi, ViAccessMode lockType, ViUInt32 timeout,
ViKeyId requestedKey, ViKeyId accessKey);
注意:viLock函數不支持網絡設備。
描述    該函數用於給一個資源加鎖,加鎖後可以使其他會話無法訪問被加鎖的資源。其他會話在訪問被加鎖的資源的時候會等待一段時間,如果等待結束資源還沒解鎖訪問將返回一個錯誤。
共享鎖能被一個或者多個會話加載在一個資源上,構成嵌套鎖。
當lockType爲VI_EXCLUSIVE_LOCK時,requestedKey和accessKey是無效的,應該設置爲VI_NULL。
當lockType爲VI_SHARED_LOCK時,可以通過requestedKey參數指定一個密匙。如果vi沒有加鎖,requestedKey的值將會作爲訪問密匙。如果vi加鎖了,並且requestedKey的值與訪問密匙相同,則vi取得訪問權限,否則返回錯誤。
同樣的requestedKey的值也可以定義爲VI_NULL。如果vi沒有加鎖,將產生一個隨機的唯一訪問密匙通過accessKey返回。如果vi加鎖了,則返回錯誤。
viLock可以對同一會話多次上同一類型的鎖,會有一個內部計數。調用一次viLock計數+1,當計數大於0時調用一次viUnLock計數-1,當計數爲0時調用viUnLock計數不變。當計數爲0時才爲真正解鎖。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
lockType    IN    ViAccessMode    指定加鎖類型,可以是VI_EXCLUSIVE_LOCK(獨佔鎖)或者 VI_SHARED_LOCK(共享鎖)。
timeout    IN    ViUInt32    其他操作需要訪問此被加鎖的對象時等待timeout(ms)後未解鎖就返回錯誤。除開數值外還可以設置爲VI_TMO_IMMEDIATE (立即)和VI_TMO_INFINITE(一直等待)。
requestedKey    IN    ViKeyId    當lockType爲VI_EXCLUSIVE_LOCK時此值設爲VI_NULL。
當lockType爲VI_SHARED_LOCK時,可以傳入VI_NULL或者密匙。詳情看描述。
accessKey    OUT    ViKeyId    當lockType爲VI_EXCLUSIVE_LOCK時此值設爲VI_NULL。
當lockType爲VI_SHARED_LOCK時,此參數返回一個唯一的密匙,其他會話可以用該密匙與這個資源加共享鎖。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    成功以指定模式上鎖。
VI_SUCCESS_NESTED_EXCLUSIVE    成功上獨佔鎖。(多次上鎖)
VI_SUCCESS_NESTED_SHARED    成功上共享鎖。(多次上鎖)
VI_ERROR_INV_ACCESS_KEY    requestedKey不是改資源共享鎖的密匙。
VI_ERROR_INV_LOCK_TYPE    指定的資源不支持上鎖。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_RSRC_LOCKED    已經被一個與該函數加鎖類型不兼容的鎖加鎖了。
VI_ERROR_TMO    操作超時。

viUnLock
原型    ViStatus viUnLock(ViSession vi);
描述    用於釋放以前使用viLock函數加的鎖。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    成功解鎖。
VI_SUCCESS_NESTED_EXCLUSIVE    函數調用成功,但對象還是被加了獨佔鎖。
VI_SUCCESS_NESTED_SHARED    函數調用成功,但對象還是被加了共享鎖。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。
VI_ERROR_SESN_NLOCKED    vi沒有被加鎖。

viInstallHandler
原型    ViStatus viInstallHandler(ViSession vi, ViEventType eventType,
ViHndlr handler, ViAddr userHandle);
描述    該函數給一個會話安裝事件回調函數。
參數    名稱    方向    類型    描述
vi    IN    ViSession    對象標識符。
eventType    IN    ViEventType    事件邏輯標識符。
handler    IN    ViHndlr    回調函數地址。
userHandle    IN    ViAddr    傳遞一個值用以區分在同一事件內的回調函數。

返回值    返回值爲函數運行結果。
標識符    值    描述
VI_SUCCESS    0    處理函數安裝成功。
VI_ERROR_HNDLR_NINSTALLED    安裝識別,可能是多個處理函數安裝在同一個會話上的同一個事件上。
VI_ERROR_INV_EVENT    該會話不支持該事件。
VI_ERROR_INV_HNDLR_REF    處理函數無效。
VI_ERROR_INV_SESSION
VI_ERROR_INV_OBJECT    vi不能標誌正確的連接。

屬性
一般的INSTR資源屬性
屬性字段    權限    類型    範圍    默認值    說明
VI_ATTR_INTF_NUM    RO    全局    ViUInt16    0 到 0xFFFF    0    給定接口的板號。
VI_ATTR_INTF_TYPE    RO    全局    ViUInt16    VI_INTF_GPIB(1)
VI_INTF_VXI(2)
VI_INTF_GPIB_VXI(3)
VI_INTF_ASRL(4)
VI_INTF_PXI(5)
VI_INTF_TCPIP(6)
VI_INTF_USB(7)    N/A    給定會話的總線類型。
VI_ATTR_INTF_INST_
NAME    RO    全局    ViString    N/A    N/A    給定接口的文本描述。
VI_ATTR_IO_PROT    RW    本地    ViUInt16    VI_NORMAL (1)
VI_FDC(2)
VI_HS488(3)
VI_PROT_488_2_STRS(4)    VI_NORMAL
指定使用哪個一個協議。在VXI中可以選擇VI_NORMAL (正常字符)和VI_FDC (快速數據通道);在GPIB中額可以選擇VI_NORMAL和VI_HS488(高速數據傳輸);在ASRL中可以選擇VI_NORMAL和VI_PROT_488_2_STRS(488風格傳輸);在viAssertTrigger / viReadSTB / viClear函數中發送488.2定義的字符串。
VI_ATTR_RD_BUF_
OPER_MODE    RW    本地    ViUInt16    VI_FLUSH_ON_ACCESS
VI_FLUSH_DISABLE    VI_FLUSH_DISABLE    指定讀取緩衝區的模式。
VI_FLUSH_DISABLE:僅當調用viFlush函數時才清空緩衝區。
VI_FLUSH_DISABLE:調用viScanf函數後就清空緩衝區。
VI_ATTR_SEND_END_
EN    RW    本地    ViBoolean    VI_TRUE
VI_FALSE    VI_TRUE    緩衝區是否以END結尾。
VI_ATTR_SUPPRESS_
END_EN    RW    本地    ViBoolean    VI_TRUE
VI_FALSE    VI_FALSE    是否支持END終止符。
VI_TRUE:END不終止讀操作。
VI_FALSE:END終止讀操作。
VI_ATTR_TERMCHAR    RW    本地    ViUInt8    0 到 0xFF    0x0A
(‘\n’)    結束字符。
VI_ATTR_TERMCHAR_
EN    RW    本地    ViBoolean    VI_TRUE
VI_FALSE    VI_FALSE    讀操作時當遇到一個結束符時是否終止。
VI_ATTR_TMO_VALUE    RW    本地    ViUInt32    VI_TMO_IMMEDIATE
1 到 0xFFFFFFFE
VI_TMO_INFINITE    2000 msec    超時值,單位毫秒。
如果值爲VI_TMO_INFINITE將一直等待下去。
VI_ATTR_TRIG_ID    RW    本地    ViUInt16    VI_TRIG_SW;
VI_TRIG_TTL0 到
VI_TRIG_TTL7;
VI_TRIG_ECL0 到
VI_TRIG_ECL1    VI_TRIG_SW    當前觸發機制標識符。
VI_ATTR_WR_BUF_OPER_MODE    RW    本地    ViUInt16    VI_FLUSH_ON_ACCESS
VI_FLUSH_WHEN_FULL    VI_FLUSH_WHEN_FULL    指定寫緩衝區的模式。
VI_FLUSH_WHEN_FULL:當寫入一個END終止符或者緩衝區慢了的時候清空緩衝區。
VI_FLUSH_ON_ACCESS:調用viPrintf函數後就清空緩衝區。
VI_ATTR_DMA_ALLOW_EN    RW    本地    ViBoolean    VI_TRUE
VI_FALSE    N/A    該屬性規定是否I/O訪問使用DMA (VI_TRUE)或可編程I/O (VI_FALSE)。在一些實現中,該屬性有全局影響。
VI_ATTR_FILE_APPEND_EN    RW    本地    ViBoolean    VI_TRUE
VI_FALSE    VI_FALSE    該屬性指定viReadToFile對文件操作是覆蓋還是追加。
GPIB和VXI特殊的INSTR資源屬性
屬性字段    權限    類型    範圍    默認值    說明
VI_ATTR_GPIB_PRIMARY_ADDR    RO    全局    ViUInt16    0 to 30
N/A    給定會話的GPIB主地址。
VI_ATTR_GPIB_SECONDARY_ADDR    RO    全局    ViUInt16    0 to 31,
VI_NO_SEC_ADDR    N/A    給定會話的GPIB次地址。
VI_ATTR_GPIB_READDR_EN    RW    本地    ViBoolean    VI_TRUE
VI_FALSE    VI_TRUE    這屬性指定是否在讀寫操作之前重新尋址。
VI_ATTR_GPIB_UNADDR_EN    RW    本地    ViBoolean    VI_TRUE
VI_FALSE    VI_FALSE    這屬性指定是否在讀寫操作之後不尋址。
VI_ATTR_GPIB_REN_STATE    RO    全局    ViUInt16    VI_STATE_UNKNOWN
VI_STATE_ASSERTED
VI_STATE_UNASSERTED    N/A    這屬性返回當前GPIB REN線狀態。
其他與GPIB無關的特殊INSTR資源屬性

事件
VI_EVENT_SERVICE_REQUEST
描述    設備發送的服務請求收到
屬性    屬性名    說明    權限    數據類型    範圍
VI_ATTR_EVENT_TYPE    事件類型    只讀    ViEventType    VI_EVENT_SERVICE_REQ

VI_EVENT_VXI_SIGP
描述    設備發送的服務請求收到
屬性    屬性名    說明    權限    數據類型    範圍
VI_ATTR_EVENT_TYPE    事件類型    只讀    ViEventType    VI_EVENT_VXI_STOP
VI_ATTR_SIGP_STATUS_ID    在IACK循環或者信號寄存器中獲取16位狀態/ID值。    只讀    ViUInt16    0 到0xFFFF

VI_EVENT_TRIG
描述    觸發中斷收到,對VISA,    唯一可以被感知的觸發是VXI硬件觸發。
屬性    屬性名    說明    權限    數據類型    範圍
VI_ATTR_EVENT_TYPE    事件類型    只讀    ViEventType    VI_EVENT_TRIG
VI_ATTR_RECV_TRIG_ID    指定哪個觸發事件接收觸發機制。    只讀    ViUInt16    VI_TRIG_TTL0 到
VI_TRIG_TTL7;
VI_TRIG_ECL0 到
VI_TRIG_ECL1

VI_EVENT_IO_COMPLETION
描述    異步操作完成。
屬性    屬性名    說明    權限    數據類型    範圍
VI_ATTR_EVENT_TYPE    事件類型    只讀    ViEventType    VI_EVENT_IO_COMPLETION
VI_ATTR_STATUS    異步操作返回代碼。    只讀    ViStatus    N/A
VI_ATTR_JOB_ID    異步操作的作業ID。    只讀    ViJobId    N/A
VI_ATTR_BUFFER    異步操作的寄存器地址。    只讀    ViBuf    N/A
VI_ATTR_RET_COUNT    異步操作真實大小。    只讀    ViUInt32    0 到0xFFFFFFFF
VI_ATTR_OPER_NAME    產生這事件操作的名稱。    ViString    N/A
 


用VISA函數操作儀器的步驟
打開VISA資源管理器句柄,用到的函數:viOpenDefaultRM;
打開儀器句柄,用到的函數:viFindRsrc、viFindNext、viOpen等;
設置儀器狀態、控制儀器操作、讀取測量數據、處理儀器事件,用到的函數: viGetAttribute、viSetAttribute、viIn16、viOut16、viPrintf、viScanf、viInstallHandler、viUninstallHandler、viEnableEvent、viDisableEvent、viWaitOnEvent等;
釋放儀器句柄,用到的函數:viClose;
釋放VISA資源管理器句柄,用到的函數:viClose。

VISA函數應用舉例
void main(void)
{
  error=viOpenDefaultRM (&rsrcManager); /*打開VISA資源管理器*/
  //rsrcManager爲得到的VISA資源管理器句柄
  if(error!=VI_SUCCESS) /*如果出錯,彈出錯誤信息對話框,返回*/
  { MessagePopup("Error","Open VISA Resource Manager Error!");
   return;
  }
  error = viOpen (rsrcManager, "VXI0::16::INSTR", VI_NULL, VI_NULL,          &instHandle);   //instHandle爲得到的儀器句柄

  if(error!=VI_SUCCESS){ 
   MessagePopup("Error","Open Instrument Error!");
   return;
  }
  else{ /*獲取儀器模塊代碼,設置儀器操作超時時間爲2000毫秒*/
   viGetAttribute (instHandle, VI_ATTR_MODEL_CODE, &moduleID);    viSetAttribute (instHandle, VI_ATTR_TMO_VALUE, 2000);
  }
  viClose(instHandle); /*關閉儀器句柄和VISA資源管理器*/
  viClose(rsrcManager);
}
————————————————
版權聲明:本文爲CSDN博主「魚喝水」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yu__jia/article/details/46044083

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章