IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Qt 使用Visa库与数字仪器仪表TCP/IP通信(SCPI指令自动化测试) -> 正文阅读

[系统运维]Qt 使用Visa库与数字仪器仪表TCP/IP通信(SCPI指令自动化测试)

标准数字仪器仪表可通过 GPIB, RS232, USB, LAN接口等与上位机数据通信和控制。如示波器、数字万用表、频率计、台式电源等。通过SCPI协议(字符串形式)与设备通信,串口,USB等接口可以直接用字符串通信,但是LAN通信不同于一般TCP/UDP用ip和端口通信,需要用Visa协议栈通信。Qt开发时只需要把visa动态库和头文件导入即可。

以普源的数字万用表DM3068为例,使用LAN口通信:

根据官方编程文档,通信协议如下:查询当前测量直流电压值发送字符串“:MEASure:VOLTage:DC?

1.获取visa.lib,可以安装 NI-MAX,毕竟调试也需要,?安装 NI-?VISA

2.安装完成后可以去安装目录下拷贝lib库到Qt目录下,需要的文件有:

2.1 C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Include\visa.hvisatype.h

?2.2?C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Lib_x64\msc\visa64.lib

?2.3 拷贝到Qt目录下

?2.4 Qt添加动态库和visa.h头文件

3.现在可以使用了,但是通信需要知道仪器的Ip地址字符串,可以使用安装的NI-MAX查看。打开MAX,连接网线,添加设备,添加仪器IP地址,

完成后会显示仪器名称,?

?把这个复制到Qt 测试程序: 发送测量当前输入的8V电压值.

static ViSession defaultRM;
static ViSession instr;
static ViUInt32 retCount;
static ViUInt32 writeCount;
static ViStatus status;
static unsigned char buffer[100];
static char stringinput[512];

#define DM3068IPSTR  "TCPIP0::192.168.1.30::inst0::INSTR"


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //串口检测线程
    spThread = new SerialPortThread();
    connect(spThread,&SerialPortThread::reflashSerialPort, this,&MainWindow::showSerialPort);
    spThread->start();

    status = viOpenDefaultRM(&defaultRM);
    if (status < VI_SUCCESS)
    {
        qDebug() << "Could not open a session to the VISA Resource Manager!\n";
    }

    status = viOpen(defaultRM, DM3068IPSTR, VI_NULL, VI_NULL, &instr);
    if (status < VI_SUCCESS)
    {
        qDebug() << "Cannot open a session to the device.\n";
        goto Close;
    }

     /* Set the timeout to 5 seconds (5000 milliseconds). */
    status = viSetAttribute(instr, VI_ATTR_TMO_VALUE, 5000);

    /* Set the baud rate to 4800 (default is 9600). */
    status = viSetAttribute(instr, VI_ATTR_ASRL_BAUD, 4800);

    /* Set the number of data bits contained in each frame (from 5 to 8).
     * The data bits for  each frame are located in the low-order bits of
     * every byte stored in memory.
     */
    status = viSetAttribute(instr, VI_ATTR_ASRL_DATA_BITS, 8);

    status = viSetAttribute(instr, VI_ATTR_ASRL_PARITY, VI_ASRL_PAR_NONE);

    status = viSetAttribute(instr, VI_ATTR_ASRL_STOP_BITS, VI_ASRL_STOP_ONE);

    status = viSetAttribute(instr, VI_ATTR_TERMCHAR_EN, VI_TRUE);

    /* Set the termination character to 0xA
     */
    status = viSetAttribute(instr, VI_ATTR_TERMCHAR, 0xA);


    strcpy(stringinput, ":MEASure:VOLTage:DC?\n");
    //strcpy(stringinput, "*IDN?\n");
    status = viWrite(instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount);
    if (status < VI_SUCCESS){
        qDebug() << "Error writing to the device.\n";
        goto Close;
    }

    status = viRead(instr, buffer, 100, &retCount);
    if (status < VI_SUCCESS){
        qDebug() << "Error reading a response from the device.\n";
    }else{
        qDebug() << "Data read:" << retCount << QString::fromLocal8Bit((char*)buffer,retCount);

        ui->textBrowser->setText(QString::fromLocal8Bit((char*)buffer,retCount));
    }

Close:
    status = viClose(instr);
    status = viClose(defaultRM);

}

结果如下:

也可以用NI-MAX调试,

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:58:21  更:2022-03-16 22:59:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:43:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码