TMCTL类库使用详解

2022-11-02 19:29:10·  来源:横河测试测量  
 
数据交互一直是计测领域非常重要的环节。当我们利用上位机与仪器仪表进行通信时,通常需要一座“桥梁”连接彼此,而充当这座桥梁的便是应用程序接口(API)。各家仪器供应商会公开自己的类库供客户调用。横河TMCTL类库应运而生。TMCTL即TestMeasurement Contr
图片


数据交互一直是计测领域非常重要的环节。当我们利用上位机与仪器仪表进行通信时,通常需要一座“桥梁”连接彼此,而充当这座桥梁的便是应用程序接口(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.dlltmctl.dllYKMUSB.dll和应用程序文件放在同一文件夹下。而且目前不支持”Any CPU”架构,需指定”x86””x64”

  • 通信协议对应横河仪器型号参考下表:

图片


分享到:
 
反对 0 举报 0 收藏 0 评论 0
沪ICP备11026620号