TMCTL類庫使用詳解
數(shù)據(jù)交互一直是計(jì)測(cè)領(lǐng)域非常重要的環(huán)節(jié)。當(dāng)我們利用上位機(jī)與儀器儀表進(jìn)行通信時(shí),通常需要一座“橋梁”連接彼此,而充當(dāng)這座橋梁的便是應(yīng)用程序接口(API)。
各家儀器供應(yīng)商會(huì)公開自己的類庫供客戶調(diào)用。橫河TMCTL類庫應(yīng)運(yùn)而生。
TMCTL即Test & Measurement Controller,用以控制橫河測(cè)量?jī)x器設(shè)備。
該類庫中的函數(shù)主要包括:
-
連接、斷開儀器
-
搜索設(shè)備
-
發(fā)送、接收指令
-
設(shè)置遠(yuǎn)程、本地模式
-
清除在線儀器及發(fā)送觸發(fā)信號(hào)
-
獲取狀態(tài)字節(jié)
在實(shí)際使用過程中并非需要調(diào)用以上所有函數(shù),用戶可以參照以下流程實(shí)現(xiàn)最基本的數(shù)據(jù)交互。
通過流程圖可以看出,數(shù)據(jù)交互必須要執(zhí)行的函數(shù)僅有:
-
連接、斷開儀器
-
發(fā)送、接收指令
只要掌握上述函數(shù),我們就能夠初步實(shí)現(xiàn)數(shù)據(jù)交互的目的。
由于篇幅所限,僅以C#語法作為案例講述。
01連接儀器
Initialize方法:初始化接口并將接口開放給指定設(shè)備。
語法:int Initialize(int wire, string adr, ref int id)。
第一個(gè)傳參值為int類型的wire,其對(duì)應(yīng)關(guān)系參考下圖。
第二個(gè)傳參值為string類型的adr,對(duì)應(yīng)目標(biāo)設(shè)備的地址。
例如wire為VXI-11,adr為設(shè)備IP address;wire為RS232,adr為”COM,Baud rate,bit,handshaking number”。
第三個(gè)傳參值為int類型的引用參數(shù)id,這是為設(shè)備分配的唯一識(shí)別號(hào)。
返回值為int類型,0代表連接成功,1表示連接失敗。
02斷開儀器
Finish方法:通信結(jié)束后斷開設(shè)備接口。
語法:int Finish(int id)。
只需要傳參設(shè)備id,即可斷開儀器連接。
返回值為int類型,0代表斷開成功,1表示斷開失敗。
03發(fā)送指令
Send方法:發(fā)送指令給對(duì)應(yīng)設(shè)備。
語法:int Send(int id, string msg )。
第一個(gè)傳參值為設(shè)備id,指定發(fā)送指令的對(duì)象。
第二個(gè)傳參值為string類型的msg,也就是設(shè)備的通信指令。
例如設(shè)置功率計(jì)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)。
第一個(gè)傳參值為設(shè)備id,指定接收指令的對(duì)象。
第二個(gè)傳參值為StringBuilder類型的輸出參數(shù)buff,用來存放接收數(shù)據(jù)的緩沖區(qū)。
例如接收WT310E的儀器型號(hào),即先發(fā)送問詢指令Send(id,”*IDN?”),再接收消息Receive(id,buff,blen,ref rlen)。儀器型號(hào)信息即賦值于buff變量中。
第三個(gè)傳參值為int類型的blen,用來規(guī)定接收數(shù)據(jù)的容量上限。
第四個(gè)傳參值為int類型的引用參數(shù)rlen,表示實(shí)際接收數(shù)據(jù)的大小。
返回值為int類型,0代表接收成功,1表示接收失敗。
接收塊數(shù)據(jù)ReceiveBlockData方法:
當(dāng)接收來自示波器、錄波儀等Image和WaveForm數(shù)據(jù)時(shí),需要用該方法接收塊數(shù)據(jù)。語法:int ReceiveBlockData(int id, ref **buff, int blen, ref int rlen, ref int end) 。
-
第一個(gè)傳參值為設(shè)備id,指定接收指令的對(duì)象。
-
第二個(gè)傳參值為值類型的引用參數(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)。
-
第三個(gè)傳參值為int類型的blen,用來規(guī)定接收數(shù)據(jù)的容量上限??梢杂蒳nt ReceiveBlockHeader(id, ref blen)方法的引用參數(shù)blen事先確定。
-
第四個(gè)傳參值為int類型的引用參數(shù)rlen,表示實(shí)際接收數(shù)據(jù)的大小。
-
第五個(gè)傳參值為int類型的引用參數(shù)end,用來判斷終止符。0代表數(shù)據(jù)未傳輸完成,1表示檢測(cè)到終止符,數(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é)議對(duì)應(yīng)橫河儀器型號(hào)參考下表:
廣告 編輯推薦
最新資訊
-
開年豪擲1.8億搶用戶,又一車企加入“價(jià)格
2026-03-04 16:05
-
聯(lián)合國(guó)法規(guī)R60對(duì)兩輪車操縱件與指示裝置的
2026-03-04 12:08
-
標(biāo)準(zhǔn)立項(xiàng)|《汽車異種材料鉚接接頭拉伸性能
2026-03-04 11:40
-
“汽車大角度座椅 第1部分:通用要求”將有
2026-03-04 11:39
-
“汽車大角度座椅 第2部分:可靠性要求”將
2026-03-04 11:39





廣告


























































