• 恒凯USB数据采集卡在国产麒麟操作系统下的应用(四)QT环境设置及数据采集实验


    恒凯USB数据采集卡在国产麒麟操作系统下的应用(三)QT环境设置及数据采集实验

    一、QT简介

    Qt Creator是跨平台的集成开发环境(IDE),旨在为开发者带来最好的体验。 Qt Creator可在Windows、Linux和macOS桌面操作系统上运行,并允许开发人员在桌面、移动和嵌入式平台创建应用程序。
    在这里插入图片描述

    二、QT环境设置

    首先,去官网(https://download.qt.io/official_releases/qt/ )下载Qt Creator的开源安装包。

    我下载的是5.12.12版本文件:qt-opensource-linux-x64-5.12.12.run
    确保电脑上已经安装相关工具(前两章已经提到安装基础编译环境,已经安装过了,这步直接忽略):

    sudo apt-get install gcc g++ make -y
    
    • 1

    安装QT:
    $ chmod a+x qt-opensource-linux-x64-5.12.12.run
    $ ./qt-opensource-linux-x64-5.12.12.run

    开始启动安装,根据安装步骤安装即可,安装过程中,我们选用的版本比较新,安装过程需要注册一个账号,根据要求注册即可,如图:
    在这里插入图片描述
    安装过程中要特别注意选择QT自动的GCC编译器,如果不选择,可以使用系统带的GCC编译器,那么后续的设置就比较麻烦,推荐直接选择自带的gcc,如图勾选【Desktop gcc 64-bit】:
    在这里插入图片描述
    红色圈内的一些插件可以根据需要选择安装,比如QT Charts提供有很多曲线显示控件。
    安装完成后,打开一个自带的demo进行测试,按以上的步骤选择gcc编译器,不需要对Qt的编译环境进行设置,可以直接运行编译demo,编译过程一般会出现cannot find –lGL这个报错,这是一个通用错误,多数情况安装libGL库即可,终端输入:

    sudo apt-get install libgl1-mesa-dev
    
    • 1

    也有可能已经安装了,但是没有建立链接,我们需要手动建立软链接,首先找到库的位置,终端输入:

    locate libGL
    
    • 1

    找到位置如图:
    在这里插入图片描述
    建立软链接:

    sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/libGL.so
    
    • 1

    三、实验准备

    这里我们仍然以恒凯数据采集卡HK_USB DAQ V1.2这款采集卡产品为例
    (链接:恒凯多功能数据采集卡USBDAQV12-Labview树莓派教程 工控学习板),
    产品实物如下图:
    在这里插入图片描述
    1.首先将板卡通过USB数据线连接至计算机的USB口,

    这里需要注意的是:如果没有按照前一章的说明编译并安装驱动,必须先按前一章的说明,先设置相关系统编译器环境,安装相关插件,编译数据采集卡的驱动,并安装。

    2.然后将采集卡的DA1输出使用导线连接至AD1,一会我们将使用python程序通过DA1输出一个固定模拟电压,然后使用AD1通道采集功能采集DA1输出的电压。

    3.之后打开一个信号发生器,设置信号发生器输出一个随机信号波形,我们将信号发生器输出的信号接采集卡的AD3通道,信号地接采集卡的AGND。

    4.按采集卡的说明书将量程调整到正负10V量程档。

    这样准备工作完成了。

    四、编写QT代码

    这里我们直接打开数据采集卡自带的Linux系统的QT例程,首先打开工程文件.pro文件,如图:
    在这里插入图片描述
    特别需要注意的地方,就是在编译选项当中需要加入 -lusbdaq_v12选项用于链接采集卡的动态库,加入 -lusb-1.0用于链接系统USB插件库, /usr/local/lib/是USB驱动库的存放路径。
    打开示例程序的main文件如下:
    在这里插入图片描述

    在这里插入图片描述
    在程序main函数中,使用MainWindow类创建了一个对象W,并显示w,程序进入mainwindow.cpp内,如下:
    在这里插入图片描述
    在mainwindow.cpp文件开头部分包含数据采集卡的h文件“usb-daq-v12.h”,同时mainwindow.ui文件内做了三个控件,在mainwindow的构造函数初始化相关显示设置,同时调用设备打开函数,建立一个定时器,设置定时中断函数,如图:
    在这里插入图片描述
    然后编写定时中断函数相关程序,如图:
    在这里插入图片描述
    相关函数的说明:

    函数:int DASingleOutV12(int dev,intchan,intvalue);
    功能:DA模拟输出,该函数模拟DA通道1或者2的输出电压,一旦设定后,对应DA输出通道将保持不变,直到下次设置或者改变对应DA通道的输出模式为扫描模式。正常返回0,失败返回-1
    dev 32位有符号整型参数,设备号,由计算机自动分配设备号,从0开始,第一个设备的设备号为0,第二个设备设备号为1 >chan 32位有符号整型参数,要设置的DA通道号,只有1或者2,其他值无效
    value32位有符号整型参数,要设置的输出值,由于DA输出范围为0—10V,DA的精度为12位,因此要输出的电压V= value/4095*10。

    函数:int ADSingleV12(int dev,int ad_mod,int chan,int gain,float* adResult);
    dev 32位有符号整型参数,设备号,由计算机自动分配设备号,从0开始,第一个设备的设备号为0,第二个设备设备号为1
    ad_mod: 32位有符号整型参数,设定采集时模拟输入模式,0—差分采集模式,1—单端采集模式。
    chan:32位有符号整型参数,设置要读取的AD通道。对于单端模式:最小0,最大15;对于差分模式:最小0,最大7。
    gain :32位有符号整型参数,根据外部硬件设置的量程代码,0返回AD采样结果数据,1-14返回对应量程的电压值,可参考3.4章节量程设置说明部分。
    adResult: 32 位单精度浮点数据,用于返回采集结果(注意返回的数据值跟gain值有关,gain为0,则返回数据为AD测量结果(0-4096),gain为外部量程代码则返回外部实际输入电压值)。
    函数返回: =0操作成功/-1失败。

    五、运行代码测试

    运行代码时需要注意权限问题,Linux操作系统默认不会将硬件设备的操作权限给普通用户,只有root用户有所有硬件设备的使用权限,如果我们直接在qt环境中运行代码,需要首先退出系统,重新登陆root用户,才可以直接在qt环境运行操作数据采集卡;如果我们不想重新登陆系统,我们可以在终端使用命令带sudo权限运行,首先在终端中查找到生成的程序可执行文件,如何加sudo运行,如图:
    在这里插入图片描述

    在这里插入图片描述

    最后显示出波形如图:
    在这里插入图片描述

    我们可以看到黑色波形是DA1输出的锯齿波信号, 绿色波形由于没有连接信号是一个随机信号,蓝色波形则是信号发生器输出的连续随机变化的一个波形。

    六、总结

    在国产的麒麟Ubuntukilin系统下使用恒凯科技的数据采集卡编写Qt程序采集数据,主要的几个关键点是:

    (1)编译驱动并放置在系统目录,以备Qt程序调用驱动库来操作采集卡采集数据;
    (2)正确安装Qt编译环境;
    (3)QT是C++语言,可以直接调用C库,相对比较简单;
    (4)特别需要注意的是在工程文件加入相应的编译选项;
    (5)在运行程序时需要注意设备权限问题,Linux系统普通用户没有操作硬件设备的权限;

  • 相关阅读:
    安装windows linux 双系统
    Spring注解 servlet3.0
    《软件方法》自测题解析-006:误以为是业务建模
    vue基础知识(三)
    【CCF CSP】202203-2出行计划
    9.DesignForManufacture\CreateArtwork...
    基础算法汇总
    一步一图带你深入剖析 JDK NIO ByteBuffer 在不同字节序下的设计与实现
    Transformer实战-evaluate is all you need
    【网络编程】从零开始搭建一个开源博客网站(云服务器+宝塔+WordPress)
  • 原文地址:https://blog.csdn.net/weixin_49237052/article/details/125404293