TMCTL類庫使用詳解
數(shù)據(jù)交互一直是計測領(lǐng)域非常重要的環(huán)節(jié)。當(dāng)我們利用上位機與儀器儀表進行通信時,通常需要一座“橋梁”連接彼此,而充當(dāng)這座橋梁的便是應(yīng)用程序接口(API)。
各家儀器供應(yīng)商會公開自己的類庫供客戶調(diào)用。橫河TMCTL類庫應(yīng)運而生。
TMCTL即Test & Measurement Controller,用以控制橫河測量儀器設(shè)備。
該類庫中的函數(shù)主要包括:
-
連接、斷開儀器
-
搜索設(shè)備
-
發(fā)送、接收指令
-
設(shè)置遠(yuǎn)程、本地模式
-
清除在線儀器及發(fā)送觸發(fā)信號
-
獲取狀態(tài)字節(jié)
在實際使用過程中并非需要調(diào)用以上所有函數(shù),用戶可以參照以下流程實現(xiàn)最基本的數(shù)據(jù)交互。
通過流程圖可以看出,數(shù)據(jù)交互必須要執(zhí)行的函數(shù)僅有:
-
連接、斷開儀器
-
發(fā)送、接收指令
只要掌握上述函數(shù),我們就能夠初步實現(xiàn)數(shù)據(jù)交互的目的。
由于篇幅所限,僅以C#語法作為案例講述。
01連接儀器
Initialize方法:初始化接口并將接口開放給指定設(shè)備。
語法:int Initialize(int wire, string adr, ref int id)。
第一個傳參值為int類型的wire,其對應(yīng)關(guān)系參考下圖。
第二個傳參值為string類型的adr,對應(yīng)目標(biāo)設(shè)備的地址。
例如wire為VXI-11,adr為設(shè)備IP address;wire為RS232,adr為”COM,Baud rate,bit,handshaking number”。
第三個傳參值為int類型的引用參數(shù)id,這是為設(shè)備分配的唯一識別號。
返回值為int類型,0代表連接成功,1表示連接失敗。
02斷開儀器
Finish方法:通信結(jié)束后斷開設(shè)備接口。
語法:int Finish(int id)。
只需要傳參設(shè)備id,即可斷開儀器連接。
返回值為int類型,0代表斷開成功,1表示斷開失敗。
03發(fā)送指令
Send方法:發(fā)送指令給對應(yīng)設(shè)備。
語法:int Send(int id, string msg )。
第一個傳參值為設(shè)備id,指定發(fā)送指令的對象。
第二個傳參值為string類型的msg,也就是設(shè)備的通信指令。
例如設(shè)置功率計WT310E的電壓量程為Auto,即Send(id,”:INPUT:VOLTAGE:AUTO ON”)。
返回值為int類型,0代表發(fā)送成功,1表示發(fā)送失敗。
04接收指令
接收指令包括接收消息和接收塊數(shù)據(jù)兩類。
接收消息Receive方法:
接收Send方法得到的反饋信息。
語法:int Receive(int id, [Out] StringBuilder buff, int blen, ref int rlen)。
第一個傳參值為設(shè)備id,指定接收指令的對象。
第二個傳參值為StringBuilder類型的輸出參數(shù)buff,用來存放接收數(shù)據(jù)的緩沖區(qū)。
例如接收WT310E的儀器型號,即先發(fā)送問詢指令Send(id,”*IDN?”),再接收消息Receive(id,buff,blen,ref rlen)。儀器型號信息即賦值于buff變量中。
第三個傳參值為int類型的blen,用來規(guī)定接收數(shù)據(jù)的容量上限。
第四個傳參值為int類型的引用參數(shù)rlen,表示實際接收數(shù)據(jù)的大小。
返回值為int類型,0代表接收成功,1表示接收失敗。
接收塊數(shù)據(jù)ReceiveBlockData方法:
當(dāng)接收來自示波器、錄波儀等Image和WaveForm數(shù)據(jù)時,需要用該方法接收塊數(shù)據(jù)。語法:int ReceiveBlockData(int id, ref **buff, int blen, ref int rlen, ref int end) 。
-
第一個傳參值為設(shè)備id,指定接收指令的對象。
-
第二個傳參值為值類型的引用參數(shù)buff,用來存放接收數(shù)據(jù)的緩沖區(qū),根據(jù)指定的值類型來定義buff。例如接收DLM3000示波器Byte格式的波形數(shù)據(jù),即先發(fā)送設(shè)定指令Send(id, ":WAVEFORM:FORMAT BYTE)設(shè)定示波器輸出波形的格式為BYTE類型;再發(fā)送問詢指令Send(id,”WAVeform:SEND?"),最終通過循環(huán)接收塊數(shù)據(jù)ReceiveBlockData(id, ref data[totalsize], blen, ref rlen, ref end)。
-
第三個傳參值為int類型的blen,用來規(guī)定接收數(shù)據(jù)的容量上限??梢杂蒳nt ReceiveBlockHeader(id, ref blen)方法的引用參數(shù)blen事先確定。
-
第四個傳參值為int類型的引用參數(shù)rlen,表示實際接收數(shù)據(jù)的大小。
-
第五個傳參值為int類型的引用參數(shù)end,用來判斷終止符。0代表數(shù)據(jù)未傳輸完成,1表示檢測到終止符,數(shù)據(jù)傳輸終止。
返回值為int類型,0代表接收成功,1表示接收失敗。
通過以上講解相信大家能夠更快上手與橫河儀器的數(shù)據(jù)交互,當(dāng)然如果與TMCTL Library API文檔的6.3節(jié)API功能規(guī)范以及第7章節(jié)的樣例結(jié)合使用,一定可以幫助大家事半功倍。
再給大家一些Tips:
-
C#需要將tmctlAPINet.dll、tmctl.dll、YKMUSB.dll和應(yīng)用程序文件放在同一文件夾下。而且目前不支持”Any CPU”架構(gòu),需指定”x86”或”x64”。
-
通信協(xié)議對應(yīng)橫河儀器型號參考下表:
廣告 編輯推薦
最新資訊
-
“汽車爬坡試驗方法”將有國家標(biāo)準(zhǔn)
2026-03-03 12:44
-
十年耐久監(jiān)管時代:電池系統(tǒng)開發(fā)策略將如何
2026-03-03 12:44
-
聯(lián)合國法規(guī)R59對機動車備用消聲系統(tǒng)的工程
2026-03-03 12:08
-
聯(lián)合國法規(guī)R58對后下部防護裝置的工程化約
2026-03-03 12:07
-
聯(lián)合國法規(guī)R57對摩托車前照燈配光性能的工
2026-03-03 12:07





廣告


























































