小工具知识网

当前位置: 首页 > 行业知识 > 基于ITop-4412的点灯实验Web & QT

行业知识

基于ITop-4412的点灯实验Web & QT

2026-11-14 04:29:00 来源:互联网转载

(1)设计LED用户控制界面程序,能够控制开发板上灯的点亮和熄灭。

1、我们能看到,内核是默认将led设备编译进内核的,如图。

所以我们直接使用内核的leds字符设备。

2、打开Qt编写应用程序,首先我们添加两个按钮,如图。

3、这里我们使用最简单的添加槽函数的方式,右键,点击转到槽,如图。

这里我们选择点击事件,当点击这个控件的时候会调用对应的槽函数。

4、点击OK后就会转到mainwindow.cpp里,这里多了两个空的函数,在这里编写点击事件产生的动作,

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow) {    ui->setupUi(this);    fb = open("/dev/leds", 0);    led1_flag = 0;    led2_flag = 0;    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));    connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(on_pushButton_2_clicked()));}MainWindow::~MainWindow() {    delete ui;}void MainWindow::on_pushButton_clicked(){    led1_flag ^= 1;    if (led1_flag) {        ioctl(fb, 1, 0);    } else {        ioctl(fb, 0, 0);    }}void MainWindow::on_pushButton_2_clicked(){    led2_flag ^= 1;    if (led2_flag) {        ioctl(fb, 1, 1);    } else {        ioctl(fb, 0, 1);    }}

5、编写完成后,编译生成可运行文件。

6、使用file XX,查看下是否成功。

7、成功后将文件NFS挂在到开发板。

8、运行程序,查看效果。

通过这次实验,增加了我对Qt的代码编写的熟悉程度,同时也锻炼了我的动手能力。

(2)移植嵌入式WEB服务器,实现灯的远程控制。

       配置Web服务器

下载boa文件,解压进入src目录,进行编译

编译完成后,编辑Makefile文件,如下图所示:

之后进行make编译,如果出现报错,如下图所示,修改方式如文件《iTop4412搭建Web服务器.pdf》

编译结束之后如下图所示,存在可执行文件boa

此时查看文件boa的大小,是相对较大的,然后进行文件瘦身,输入:arm-none-linux-gnueabi-stripboa

瘦身之后查看文件大侠如下图所示:

之后通过挂在NFS将生辰大哥boa文件拷贝到开发板的bin目录下:

然后在开发板的/etc目录下创建boa文件,在根目录下创建www文件夹,然后在创建的/www文件下创建文件夹cgi-bin目录

然后将Ubuntu下的boa的配置文件boa.conf通过NFS共享到开发板的/etc/boa目录下

将Ubuntu的/etc下的mime.types文件拷贝到开发板的/etc目录下

进入/etc/boa目录下的boa.conf文件,对其进行修改,如下图所示,找到“Groupnogroup”这一行,修改为“Grouproot”

找到“#ServerNamewww.your.org.here”这一行,修改为“ServerNamewww.your.org.here

“ScriptAlias/cgi-bin//usr/lib/cgi-bin/”这一行,修改为“ScriptAlias/cgi-bin//www/cgi-bin/”,

保存并退出,

然后进行之前创建的/www目录。新建文件vi index.html

文件内容如下:

        led 远程控制            body {            background-image: url("https://www.52desk.com/bizhi/c332784.html");            background-size: cover;            background-repeat: no-repeat;            text-align: center;        }        .ziti {            font-size: 32px;        }        .juzhong {            text-align: center;        }        .hsz {            text-align: center;        }        .hsz td {            color: green;            font-size: 18px;        }        .hsz {            background-color: #FCC;        }        .juzhong table {            text-align: center;        }        .juzhong table tr {}        #h1 {            background-color: #0FC;        }        #h2 {            background-color: #FF9;        }        .h3 {            background-color: #0CF;        }        .ys1 {            font-size: 24px;        }        .STYLE1 {            font-size: 36px        }        
                                                                                                                   
               

 

               

iTOP-4412 WEB SERVER

           
 
                                                                                                                                                                                                                                                                                                                                                                                                                               
Led1                                                           
Led2                                                           
                           
               

 

           
   

 

            function turnOffAll() {            document.getElementById("led1").checked = false;            document.getElementById("led2").checked = false;        }   

保存并退出

在/bin下运行boa服务:

在本地浏览器输入开发板ip地址进行访问如下图所示:

进入开发板的/www/cgi-bin目录,新建文件myled.c,内容如下:

#include #include int main() {       char *data;       int leds[2] = {0, 0};       long m, n;       int exit = 0, i, fd;       printf("Content-Type:text/html;charset=gb2312\n\n");       printf("\n");       printf("\n");       printf("iTOP-4412 ");       printf("

iTOP-4412

");       data = getenv("QUERY_STRING");       printf("

receive data:%s

", data);       while (*data != '\0') {              if (*data == '=')                     switch (*(data + 1)) {                            case '1':                                   leds[0] = 1;                                   break;                            case '2':                                   leds[1] = 1;                                   break;                            default:                                   exit = 1;                                   break;                     }              if (exit == 1)                     break;              data++;       }       fd = open("/dev/leds", 0);       for (i = 0; i %d\t", i + 1);              ioctl(fd, leds[i], i);       }       printf("\n");       printf("\n");       return 0;}

然后使用命令:arm-none-linux-gnueabi-gcc -o myled.cgi myled.c -static进行编译,生成可执行文件:

然后再开启服务,本地访问:输入169.254.62.230,进行远程控制。

上一篇:二手车源码揭秘,PHP技术助力交易平台腾飞之路

下一篇:如何将网易云音乐下载到U盘?