使用QT程序控制Linux开发板上的继电器(二)

QT程序编写

控件

控件部分,只需要添加两个pushButton控件,一个用于打开继电器,一个用于关闭继电器,然后添加两个控件被单击时触发的clicked槽函数

槽函数

在对文件进行读写操作时,需要使用以下两个头文件

#include <unistd.h>
#include <fcntl.h>

打开继电器button的clicked槽函数

const char* filename = "/dev/relays";
    int ret = 0;
    int fd;
    short data[1];

    fd = open(filename, O_WRONLY);
    if(fd < 0) {
        qDebug()<<"open relyas file fail\r\n"<<endl;
        close(fd);
        return ;
    }

    data[0] = 0;

    ret = write(fd, data, sizeof(data));
    if (ret < 0) {
        qDebug()<<"write data tp relays fail\r\n"<<endl;
        close(fd);
        return ;
    }
    close(fd);

关闭继电器button的clicked槽函数,也是类似的,只是传输给设备的数据变了

 const char* filename = "/dev/relays";
    int ret = 0;
    int fd;
    short data[1];

    fd = open(filename, O_WRONLY);
    if(fd < 0) {
        qDebug()<<"open relyas file fail\r\n"<<endl;
        close(fd);
        return ;
    }

    data[0] = 1;

    ret = write(fd, data, sizeof(data));
    if (ret < 0) {
        qDebug()<<"write data tp relays fail\r\n"<<endl;
        close(fd);
        return ;
    }
    close(fd);

QT程序编写完成

QT程序烧录

安装交叉编译器

IMX6ULL一款是arm架构芯片,由于我的电脑使用的是X86架构的cpu,在ubuntu上直接编译QT工程,生成的可执行文件是供x86架构的cpu使用的,无法在arm架构的cpu上运行,因此需要使用交叉编译器,将程序编译为可供arm架构运行的可执行文件。
这个轮子正点原子已经造好了,在正点原子的开发板光盘05、开发工具下,有一个交叉编译器,适配正点原子的出厂系统(实际测试后发现在驱动开发第二期视频移植的系统也能适配),将fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh放到ubhuntu下,修改脚本可执行权限:

chmod u+x fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain -4.1.15-2.1.0.sh
文件变成绿色脚本则可以执行,直接执行脚本文件,默认会装在opt上,这个目录是用来装第三方软件的。
安装完成后会出现提示:
. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

使用交叉编译器编译

执行下面这条命令使能环境变量:
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
执行完成后就会使能环境变量,这时就可以使用交叉编译器了(每次使用之前都要使能环境变量
可以使用qmake -v 查看qmake工具,如果没有使用前一段指令使能环境变量,就会找不到qmake
要进行交叉编译,首先进入qt项目文件夹,找到pro文件,用指令qmake xxx.pro,生成makefile和项目文件,如果生成成功会出现如下提示:
在这里插入图片描述
接下来使用make命令编译,编译完成后生成arm可执行文件,可以通过file命令查看可执行文件类型,如果生成的可执行文件是32bit ARM类型的,程序就能够放到开发板上运行。
在这里插入图片描述
编译完成后就可以将可执行文件放到开发板上运行。

可以编写一个shell脚本实现一键完成交叉编译器环境使能、工程清除、生成生成makefile和项目文件、编译以及文件拷贝。
vi autoCompile.sh
添加脚本内容

  1 #!/bin/bash
  2 source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
  3 make distclean
  4 qmake xxxxx.pro
  5 make -j2
  6 file xxxxx
  7 cp ./xxxxx /home/xxx/linux/nfs -f

在开发板运行程序

需要注意的是,正点原子出厂系统在启动时,自动运行了桌面程序,在运行可我们编写的QT程序前需要先关闭这个桌面程序,否则桌面程序会与我们的QT程序抢占屏幕,导致显示出问题。
关闭默认桌面程序 killall /opt/QDesktop
如果要永久关闭桌面程序vi /etc/rc.local ,rc.local中是系统启动后默认会进行的命令和执行的应用,注释掉/opt/QDesktop >/dev/null 2>&1 & 就可以取消桌面程序开机自启动。然后执行编译好的文件,如果要默认执行用户自己的程序就按照注释掉的程序的格式,在/etc/rc.local 里添加xxx/xxx >/dev/null 2>&1 &

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值