嵌入式系统-图形界面应用程序设计

上传人:枕*** 文档编号:121216499 上传时间:2022-07-18 格式:DOC 页数:15 大小:8.94MB
返回 下载 相关 举报
嵌入式系统-图形界面应用程序设计_第1页
第1页 / 共15页
嵌入式系统-图形界面应用程序设计_第2页
第2页 / 共15页
嵌入式系统-图形界面应用程序设计_第3页
第3页 / 共15页
点击查看更多>>
资源描述
物理与电子工程学院 嵌入式系统设计设计性实验报告 题目 图形界面应用程序设计 系 别 电子科学与技术系 年 级 专 业 班 级 学 号 学生姓名 指引教师 实验时间 目录目录1课题规定2一.本课题的目的2二.运营环境2正文2一.课题分析2二系统设计3(一)总体流程图3(二)安装QT环节3(三)设计图形界面4(四)槽函数及有关程序5(五)pc环境编译运营程序6(六)ARM环境编译运营程序7(七)编译led驱动程序8(八)进入超级终端设立环境变量,运营程序8三.技术实现问题10四.总结与体会11课题规定一.本课题的目的学会在Linux 下安装Qt 的基本环节,学会使用Qt Designer设计界面,编写应用程序,完毕编译,本机上运营。学会QT/E 在ARM 设备上的移植措施与环节。学习QT 中信号与槽的编程。掌握QT/E 在ARM 设备上的常用输入输出设备移植措施。设计一种简朴图形界面,通过按钮的点击动作实现对ARM板Led灯的亮暗控制。二.运营环境硬件:up-Star认证考试实践板、PC机Pentium 500 以上, 硬盘10G 以上。 软件:PC机操作系统REDHAT LINUX 9.0MINICOMARM-LINUX + QT + xshell开发环境 正文一.课题分析本次实验是通过QT设计一种简朴的图形界面,实现对ARM板上的Led灯的亮暗控制。因此应通过QT设计一种界面,在QT操作界面上添加两个动作按钮,分别表达控制led灯的开和关。然后在qt的源文献里编写与这两个按钮相相应的槽函数,通过借鉴实验六(Linux下的LED设备实验)相应的led控制函数,来编写槽函数,槽函数应能实现led灯的亮、灭控制,槽函数调用的是led的有关函数,因此在主程序中应当涉及实验六的led程序,让槽函数调用led程序实现对led的控制。之后对相应的程序进行编译,生成执行文献,然后再将生成的可执行文献移植到开发板上,通过超级终端运营程序。二系统设计(一)总体流程图(二)安装QT环节1、编译Qt(三)设计图形界面本实验的图形操作界面是通过Qt Designer进行设计,Qt设计出来的图形界面就是将来移植到开发板上的触摸屏操作界面,通过添加简朴的控件(PushBotton),添加动作按钮,由于已存在图形界面文献,因此只在上面修改即可,具体如下:运营Qt Designerrootlocalhosttestmyqt-x11# /home/sprife/for_pc/qt-x11-opensource-src-4.4.0/bin/designer设计图形界面如下图: 图2.3.1 图形界面估计实现功能:当点击PushBotton_3按钮时led灯点亮,点击PushBotton_4时led灯熄灭,exit退出。(四)槽函数及有关程序1.Myqt.cpp文献myqt.cpp文献中重要涉及界面控制按钮的槽函数,以及相应的led操作函数,在这里对动坐按钮赋予功能,#include #include myqt.hvoid led(int on_off,int led_number) /led亮暗控制函数int fd;fd = open(/dev/led, 0);if (fd0)exit(1);ioctl(fd,on_off,led_number);close(fd);MyDlg:MyDlg()ui.setupUi(this);QObject:connect(ui.pushButton_2, SIGNAL(clicked(), this, SLOT(close();QObject:connect(ui.pushButton_3, SIGNAL(clicked(), this, SLOT(ledon();/按钮PushBotton_3相应槽函数,点亮ledQObject:connect(ui.pushButton_4, SIGNAL(clicked(), this, SLOT(ledoff();/按钮PushBotton_4相应槽函数,关闭ledvoid MyDlg:ledon() /点亮第一种led灯led(0,0);void MyDlg:ledoff() /关闭第一种led灯led(1,0);2.Myqt.h文献#ifndef _DLG_H_#define _DLG_H_ #include #include #include #include #include #include #include class MyDlg : public QDialog Q_OBJECT public: MyDlg();public slots:void ledon();/led控制函数void ledoff();private: Ui:Form ui;#endif(五)pc环境编译运营程序所有的源代码修改完毕后应在pc环境下进行编译,检查代码的对的性,以及对于Qt设计的可行性进行测试。编译环节:rootlocalhosttestmyqt-x11# /home/sprife/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake projectrootlocalhosttestmyqt-x11# /home/sprife/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake rootlocalhosttestmyqt-x11# makerootlocalhosttestmyqt-x11# ./testmyqt-xll /运营程序运营成果如下图:从运营成果可知,我们可以得到一种图形操作界面,可以实现图形界面上部分按钮的功能测试,测试成果也是对的的,达到了我们预期的效果,因此有关Qt的图形设计是可行的,但是for_pc环境下编译生成的执行文献只能在pc环境下执行,不能再ARM开发板上执行,因此对于PushBotton_3按钮以及PushBotton_4按钮的具体功能无法进行测试,因此要在for_arm环境下重新编译,生成可在arm环境下运营的程序。(六)ARM环境编译运营程序将上一环节的编译环境改为for_arm目录下直接进行编译,就可以得到arm环境下的执行文献,具体操作如下:编译环节:rootlocalhosttestmyqt-x11# /home/sprife/for_arm/qt-embedded-linux-opensource-src-4.4.0/bin/qmake -projectrootlocalhosttestmyqt-x11# /home/sprife/for_arm/qt-embedded-linux-opensource-src-4.4.0/bin/qmake rootlocalhosttestmyqt-x11# make /生成ARM设备可执行文献testmyqt-xll通过编译之后就生成了可以在arm板上执行的文献。(七)编译led驱动程序由于本次实验是对arm开发板上的led灯进行操控,因此在运营程序之前需要进行led驱动,就必须生成和我们实验相应的led驱动程序,并且我们在myqt.cpp文献中定义的led控制函数也需要与led驱动程序相相应,led驱动的修改可以直接运用上一次实验(Linux下的LED设备实验)成果,修改驱动程序,生成led驱动文献,具体操作环节如下:有关驱动程序修改:switch(cmd)case 0:if (arg 4case 1:) return -EINVAL;s3c2410_gpio_setpin(led_tablearg, cmd); /低电平点亮ledreturn 0;default:return -EINVAL;通过编译生成led驱动文献:mini2410-leds.ko(八)进入超级终端设立环境变量,运营程序1.进入超级中断后建立开发板与宿主PC机之间的通信,然后加载led驱动程序,并进行相应的节点设立,为之后的重要功能实现做好准备工作,具体实现环节如下图所示:设立节点:# mknod /dev/led c 231 0.2.在ARM上执行程序,并设立环境变量,具体实现如下:运营成果:运营程序之后,当我们点击触摸屏上的PushBotton_3按钮时,ARM开发板上的第一盏led灯点亮,当我们点击PushBotton_4按钮时,led灯熄灭,exit对出,因此达到了实验规定,也证明了我们添加的槽函数以及led灯控制函数是对的的,实验操作完毕。三.技术实现问题在本次实验中,所面临的重要问题有技术问题重要三点,下面一一进行简介:1.在第一次做实验时,Qt的界面设计功能基本掌握,重要障碍是有关led的控制点亮问题,实验之前只是进行了简朴的预习,没有预习充足,导致进入实验室进行具体操作时函数功能无法实现,预习时的槽函数及led控制函数如下:QObject:connect(ui.pushButton_3, SIGNAL(clicked(), this, SLOT(ledon();QObject:connect(ui.pushButton_4, SIGNAL(clicked(), this, SLOT(ledoff();void MyDlg:ledon() /点亮第一种led灯ioctl(fd,0,0);void MyDlg:ledoff() /关闭第一种led灯ioctl(fd,1,0);当进行函数编译时浮现错误,由于这个led控制程序只是将上次实验的程序中led控制函数直接拿来使用,而没有进行有关的函数定义,导致编译通但是,无法实现函数函数功能,实验时对函数进行修该,得到了可行的控制函数,如下:void led(int on_off,int led_number) /led亮暗控制函数int fd;fd = open(/dev/led, 0);if (fd0)exit(1);ioctl(fd,on_off,led_number);close(fd);QObject:connect(ui.pushButton_3, SIGNAL(clicked(), this, SLOT(ledon();/按钮PushBotton_3相应槽函数,点亮ledQObject:connect(ui.pushButton_4, SIGNAL(clicked(), this, SLOT(ledoff();/按钮PushBotton_4相应槽函数,关闭ledvoid MyDlg:ledon() /点亮第一种led灯led(0,0);void MyDlg:ledoff() /关闭第一种led灯led(1,0);修改后函数功能实现。2.第二个疑点是对于程序的编译环境操作不当,导致编译的可执行文献无法在ARM开发板上运营,由于我们刚开始是在for_pc环境下对程序进行编译,生成的执行文献只能在pc环境下运营,当再次进行编译时,没有变化目录导致生成文献无法运营,后通过多次实验操作,对此有了更好的理解基本解决此问题。3.最后一种难点就是对于在超级终端中的具体环境设立以及程序运营措施,当初次在超级终端中执行程序时发现程序无法执行,后请教教师发现缺少Qt的库文献,由于对于执行环境的不熟悉导致不能及时发现问题,耽误了大量的时间。四.总结与体会本次的设计实验牵扯到了许多之前几次实验的内容,通过这次的实验相称于是把前几次的实验再次进行回忆,使得对于之前的实验有了更进一步的理解,也让我对于Linux下的嵌入式设计掌握了更多的内容。在这次实验开始由于没能充足的预习,没有注意到实验一定的困难,预习不充足,没有一种总体的实现环节,导致实验没有层次性。本次实验为设计性的实验,因此在实验开始时应当对实验过程做一种总体的规划,按环节分模块的进行,一步一步的进行,实现每一种模块的功能。有了总体构造后,我们才干对各个模块的具体功能进行实现,这是我们应当提迈进行规划的。这次实验总体可以分为三大块:Qt图形界面设计、可执行文献的编译、QT移植与程序运营。这三个部分有新的内容,也有对以往实验的运用,总的来说是一种综合性实验,对于我们掌握Linux系统下的编程有一定的总结总结作用,可以提高我们的嵌入式有关的知识。在本次实验中我学会了使用Qt Designer设计界面,理解了有关QT中有关信号与槽机制的编程,学会QT/E 在ARM 设备上的移植措施与环节,掌握QT/E 在ARM 设备上的常用输入输出设备移植措施。通过本次实验让我理解到预习与总体规划的重要性,对于我们此后的项目开发有一定的指引作用。设计性实验报告成绩: 指引教师签名:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!