TMCTL类库使用详解
数据交互一直是计测领域非常重要的环节。当我们利用上位机与仪器仪表进行通信时,通常需要一座“桥梁”连接彼此,而充当这座桥梁的便是应用程序接口(API)。
各家仪器供应商会公开自己的类库供客户调用。横河TMCTL类库应运而生。
TMCTL即Test & Measurement Controller,用以控制横河测量仪器设备。
该类库中的函数主要包括:
-
连接、断开仪器
-
搜索设备
-
发送、接收指令
-
设置远程、本地模式
-
清除在线仪器及发送触发信号
-
获取状态字节
在实际使用过程中并非需要调用以上所有函数,用户可以参照以下流程实现最基本的数据交互。
通过流程图可以看出,数据交互必须要执行的函数仅有:
-
连接、断开仪器
-
发送、接收指令
只要掌握上述函数,我们就能够初步实现数据交互的目的。
由于篇幅所限,仅以C#语法作为案例讲述。
01连接仪器
Initialize方法:初始化接口并将接口开放给指定设备。
语法:int Initialize(int wire, string adr, ref int id)。
第一个传参值为int类型的wire,其对应关系参考下图。
第二个传参值为string类型的adr,对应目标设备的地址。
例如wire为VXI-11,adr为设备IP address;wire为RS232,adr为”COM,Baud rate,bit,handshaking number”。
第三个传参值为int类型的引用参数id,这是为设备分配的唯一识别号。
返回值为int类型,0代表连接成功,1表示连接失败。
02断开仪器
Finish方法:通信结束后断开设备接口。
语法:int Finish(int id)。
只需要传参设备id,即可断开仪器连接。
返回值为int类型,0代表断开成功,1表示断开失败。
03发送指令
Send方法:发送指令给对应设备。
语法:int Send(int id, string msg )。
第一个传参值为设备id,指定发送指令的对象。
第二个传参值为string类型的msg,也就是设备的通信指令。
例如设置功率计WT310E的电压量程为Auto,即Send(id,”:INPUT:VOLTAGE:AUTO ON”)。
返回值为int类型,0代表发送成功,1表示发送失败。
04接收指令
接收指令包括接收消息和接收块数据两类。
接收消息Receive方法:
接收Send方法得到的反馈信息。
语法:int Receive(int id, [Out] StringBuilder buff, int blen, ref int rlen)。
第一个传参值为设备id,指定接收指令的对象。
第二个传参值为StringBuilder类型的输出参数buff,用来存放接收数据的缓冲区。
例如接收WT310E的仪器型号,即先发送问询指令Send(id,”*IDN?”),再接收消息Receive(id,buff,blen,ref rlen)。仪器型号信息即赋值于buff变量中。
第三个传参值为int类型的blen,用来规定接收数据的容量上限。
第四个传参值为int类型的引用参数rlen,表示实际接收数据的大小。
返回值为int类型,0代表接收成功,1表示接收失败。
接收块数据ReceiveBlockData方法:
当接收来自示波器、录波仪等Image和WaveForm数据时,需要用该方法接收块数据。语法:int ReceiveBlockData(int id, ref **buff, int blen, ref int rlen, ref int end) 。
-
第一个传参值为设备id,指定接收指令的对象。
-
第二个传参值为值类型的引用参数buff,用来存放接收数据的缓冲区,根据指定的值类型来定义buff。例如接收DLM3000示波器Byte格式的波形数据,即先发送设定指令Send(id, ":WAVEFORM:FORMAT BYTE)设定示波器输出波形的格式为BYTE类型;再发送问询指令Send(id,”WAVeform:SEND?"),最终通过循环接收块数据ReceiveBlockData(id, ref data[totalsize], blen, ref rlen, ref end)。
-
第三个传参值为int类型的blen,用来规定接收数据的容量上限。可以由int ReceiveBlockHeader(id, ref blen)方法的引用参数blen事先确定。
-
第四个传参值为int类型的引用参数rlen,表示实际接收数据的大小。
-
第五个传参值为int类型的引用参数end,用来判断终止符。0代表数据未传输完成,1表示检测到终止符,数据传输终止。
返回值为int类型,0代表接收成功,1表示接收失败。
通过以上讲解相信大家能够更快上手与横河仪器的数据交互,当然如果与TMCTL Library API文档的6.3节API功能规范以及第7章节的样例结合使用,一定可以帮助大家事半功倍。
再给大家一些Tips:
-
C#需要将tmctlAPINet.dll、tmctl.dll、YKMUSB.dll和应用程序文件放在同一文件夹下。而且目前不支持”Any CPU”架构,需指定”x86”或”x64”。
-
通信协议对应横河仪器型号参考下表:
-
汽车测试网V课堂
-
微信公众号
-
汽车测试网手机站
编辑推荐
最新资讯
-
荷兰Zepp氢燃料电池卡车-Europa
2024-12-22 10:13
-
NCACFE -车队油耗经济性报告(2024版)
2024-12-22 10:11
-
R54法规对商用车轮胎的要求(上)
2024-12-22 10:10
-
蔚来ET9数字架构解析
2024-12-22 09:53
-
4G/5G网络新时代的高效紧急呼叫系统NG-eCal
2024-12-20 22:33