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

目录
相关文章
|
1月前
|
存储 网络协议 C语言
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
80 0
|
1月前
|
安全 前端开发 C++
C++视角下的Qt按钮:从基础应用到高级定制(二)
C++视角下的Qt按钮:从基础应用到高级定制
45 2
|
1月前
|
XML JSON 算法
C++视角下的Qt按钮:从基础应用到高级定制(一)
C++视角下的Qt按钮:从基础应用到高级定制
90 2
|
2天前
|
开发框架 Linux API
Qt:构建高效且用户友好的跨平台应用
Qt:构建高效且用户友好的跨平台应用
|
25天前
|
编译器
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
|
1月前
|
测试技术 API UED
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
70 1
|
1月前
|
存储 算法 数据可视化
Qt与Excel:从底层原理到上层应用的全面探索
Qt与Excel:从底层原理到上层应用的全面探索
36 0
|
1月前
|
设计模式 安全 API
C++视角下的Qt按钮:从基础应用到高级定制(三)
C++视角下的Qt按钮:从基础应用到高级定制
52 0
|
1月前
|
网络协议 C++
C++ Qt开发:QTcpSocket网络通信组件
`QTcpSocket`和`QTcpServer`是Qt中用于实现基于TCP(Transmission Control Protocol)通信的两个关键类。TCP是一种面向连接的协议,它提供可靠的、双向的、面向字节流的通信。这两个类允许Qt应用程序在网络上建立客户端和服务器之间的连接。Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用`QTcpSocket`组件实现基于TCP的网络通信功能。
38 8
C++ Qt开发:QTcpSocket网络通信组件
|
2天前
|
开发框架 数据可视化 编译器
Qt的魅力:探索跨平台图形界面开发之旅
Qt的魅力:探索跨平台图形界面开发之旅
8 1

热门文章

最新文章

推荐镜像

更多