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程序,如图:

目录
相关文章
|
18天前
|
开发框架 Linux API
Qt:构建高效且用户友好的跨平台应用
Qt:构建高效且用户友好的跨平台应用
|
18天前
|
开发框架 网络协议 数据库
Qt:构建跨平台应用的强大框架
Qt:构建跨平台应用的强大框架
|
18天前
|
Windows 安全 C++
Qt字符串类应用与常用基本数据类型
Qt字符串类应用与常用基本数据类型
|
18天前
|
开发框架 物联网 云计算
Qt应用领域分析与实践
Qt应用领域分析与实践
27 0
|
18天前
|
XML 网络协议 关系型数据库
Qt框架概述与应用实例
Qt框架概述与应用实例
20 0
|
18天前
|
编译器
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
|
18天前
|
Ubuntu 编译器 Linux
Ubuntu下Qt编程,从QT的安装到编写notepad
Ubuntu下Qt编程,从QT的安装到编写notepad
|
18天前
|
测试技术 API UED
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
75 1
|
18天前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
33 0
|
18天前
|
区块链
【qt】最快的开发界面效率——混合编程3
【qt】最快的开发界面效率——混合编程
24 1

推荐镜像

更多