imx6ull开发板之qt应用编程读取AP3216c(光照,距离)数据。

简介: imx6ull开发板之qt应用编程读取AP3216c(光照,距离)数据。


一.效果展示

一.搭建QT环境

首先你的开发板需要QT的文件系统,这样才能支持qt程序。在这个背景下才能进行下面的操作。如果没有此背景,自行去查找资料,完成此步。注意:我这里使用的是百问网的imx6ull开发板。

二.Qt编程

这里是在windows平台下进行开发的。这里的命令可以参考博主的上一篇文章。

2.1 mainwindows.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <string.h>
#include <QProcess>
#include <QDebug>
#include <QString>
#include <QMainWindow>
#include <QTimer>
#include <QPushButton>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
public slots:
    void handleTimeout();//定时器处理函数
    void light_Clicked(); //按钮点击函数
private:
    Ui::MainWindow *ui;
    void ap3216c_init(void); //初始化ap3216
    void read_light(void);  // 读光照
    void read_distance(void); //读距离
    QTimer *m_pTimer;    //定时器
    QPushButton *button_light; //按钮
};
#endif // MAINWINDOW_H

2.2 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <stdio.h>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ap3216c_init();//初始化
    m_pTimer=new QTimer(this);
    //关联槽函数
    connect(m_pTimer, SIGNAL(timeout()), this, SLOT(handleTimeout()));
    connect(button_light,SIGNAL(clicked()),this,SLOT(light_Clicked()));
    //设置定时时间
    m_pTimer->start(1000);
    //按钮设置
    button_light=new QPushButton("开灯",this);
    button_light->setGeometry(300,200,80,40);
}
void MainWindow::light_Clicked()
{
    if(button_light->text()=="开灯")
    {
        button_light->setText("关灯");
    }
    else if(button_light->text()=="关灯")
    {
        button_light->setText("开灯");
    }
}
//1s读一次传感器
void MainWindow::handleTimeout()
{
    read_light();
    read_distance();
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::read_light()
{
     QProcess p;
     QByteArray G1;
     QString cmd="i2cget -f -y 0 0x1e 0xc w";
     p.start("bash",QStringList()<<"-c"<<cmd);
     p.waitForFinished(); //等待Linux指令执行完成
     QString result = p.readAllStandardOutput(); //把执行Linux指令后的字符串结果保存下来
     QString Data=result.mid(2,4);
     ui->light->setText(QString::number(Data.toInt(),10));
     //G1=Data.toUtf8().toHex();
}
void  MainWindow::read_distance()
{
    QProcess p;
    QByteArray G1;
    QString cmd="i2cget -f -y 0 0x1e 0xe w";
    p.start("bash",QStringList()<<"-c"<<cmd);
    p.waitForFinished(); //等待Linux指令执行完成
    QString result = p.readAllStandardOutput(); //把执行Linux指令后的字符串结果保存下来
    //去除0x
    QString Data=result.mid(2,4);
    ui->distance->setText(QString::number(((Data.toInt()&0x3f00)<<4)|(Data.toInt()&0x000f),10));
}
void MainWindow::ap3216c_init(void)
{
     QProcess p;
     QString Cmd_reset = "i2cset -f -y 0 0x1e 0 0x4"; //复位
     QString Cmd_enable ="i2cset -f -y 0 0x1e 0 0x3"; //使能
     p.start("bash",QStringList()<<"-c"<<Cmd_reset);
     p.waitForFinished();
     p.start("bash",QStringList()<<"-c"<<Cmd_enable); //执行Linux指令
     p.waitForFinished();
}

三.在Linux平台下交叉编译

3.1 将生成文件拷贝到linux下

我们运行程序后会生成2个目录,我们只需要将my_pro拷贝到linux平台下即可

3.2 在linux平台下编译程序

我们在linux下用Qt打开刚才拷贝的文件夹,点击Build即可。

运行之后会生成一个build目录,如图第二个

我们进入此目录后,将my_pro文件拷贝到开发板即可。

四.开发板运行编译好的qt程序

我们首先给此文件具有可执行权限

这步之后直接运行即可,如图

这样开发板就跑起来了我们的qt程序,如图:

目录
相关文章
|
4月前
|
网络协议 容器
【qt】 TCP编程小项目
【qt】 TCP编程小项目
79 0
|
7月前
|
开发框架 Linux API
Qt:构建高效且用户友好的跨平台应用
Qt:构建高效且用户友好的跨平台应用
|
4月前
|
存储 C++
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
105 1
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
|
4月前
|
API 开发工具 C语言
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
234 0
关于Qt的pri模块化编程详解
关于Qt的pri模块化编程详解
|
4月前
|
JavaScript Java Go
【Qt】Qt编程注意事项
【Qt】Qt编程注意事项
|
7月前
|
Windows 安全 C++
Qt字符串类应用与常用基本数据类型
Qt字符串类应用与常用基本数据类型
|
7月前
|
开发框架 物联网 云计算
Qt应用领域分析与实践
Qt应用领域分析与实践
211 0
|
7月前
|
XML 网络协议 关系型数据库
Qt框架概述与应用实例
Qt框架概述与应用实例
110 0
|
5月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
198 1
Qt(C++)开发一款图片防盗用水印制作小工具