UbuntuNI-VISA安装以及使⽤,TCPIP⽅式与⽰波器通信
前⾔
最近需要完成⼀个项⽬,需要使⽤⼀个RK3399的板⼦,安装Ubuntu18.04,从⽰波器获去数据并处理,因为数据量⽐较⼤,所以采⽤TCPIP的⽅式。对于Linux下ni-visa驱动的安装教程不是很全,所以本次记录⼀下。
1、NI-VISA Linux安装基于Ubuntu18.04
NI-VISA Linux驱动,这⾥下载的是2020版本的驱动
将下载得到的NILinux2020DeviceDrivers.zip解压得到ni-software-2020-bionic_20.1.0.49152-0+f0_all.deb复制到Ubuntu中
```
//安装驱动包
sudo apt install ./ni-software-2020-bionic_20.1.0.49152-0+f0_all.deb
//获取驱动列表
sudo apt update
//安装ni-visa驱动
sudo apt install ni-visa
//更新内核
sudo dkms autoinstall
//重启系统
sudo reboot
```
重启后 visa.h⼀般位于/usr/include/ni-visa/,libvisa.so⼀般位于/usr/lib/x86_64-linux-gnu/libvisa.so
2、QT中使⽤visa api:
在pro⽂件中加⼊
INCLUDEPATH += /usr/include/ni-visa/
LIBS += /usr/lib/x86_64-linux-gnu/libvisa.so
TCPIP通信使⽤
#include"visa.h"
#include<QDebug>
void visa_tcpip_test()
{
ViStatus status;
ViSession defaultRM,mDeviceSession;
//1.获取默认的VISA资源管理器
status =viOpenDefaultRM(&defaultRM);
if(status < VI_SUCCESS){
qDebug()<<"Could not open a session to the VISA Resource Manager";
return;s
}
//2.打开TCPIP设备
status =viOpen(defaultRM,"TCPIP0::ftp.ni::21::SOCKET",
VI_NULL, VI_NULL,&mDeviceSession);
if(status < VI_SUCCESS){
qDebug()<<"Could not open Device";
viClose(defaultRM);
return;s
}
//3.通信测试
/*写*/
ViUInt32 writeCount =0;
status  =viWrite(mDeviceSession,"*IDN?\n",strlen("*IND?\n"),&writeCount);
if(status < VI_SUCCESS){
qDebug()<<"write error :"<<QString::number(status);
viClose(mDeviceSession);
viClose(defaultRM);ubuntu安装教程
return;
}
/*读*/
unsigned char reply[1024];
ViUInt32 readLen =0;
memset(reply,0x00,1024);
status  =viRead(mDeviceSession,reply,1024,&readLen );
if(status < VI_SUCCESS){
qDebug()<<"read error :"<<QString::number(status);
viClose(mDeviceSession);
viClose(defaultRM);
return;
}
qDebug()<<"reply:"<<QString(reply);
viClose(mDeviceSession);
viClose(defaultRM);
}
参考:NI VISA Tcpip 操作⽰例:blog.csdn/zgl7903/article/details/94839320