恒凯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

安装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

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

locate libGL

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

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

三、实验准备

这里我们仍然以恒凯数据采集卡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系统普通用户没有操作硬件设备的权限;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值