qtopia dsigner.ui 怎么自动qt ui生成头文件代码

基于嵌入式Qtopia汽车BCM自动检测系统设计
> 基于嵌入式Qtopia汽车BCM自动检测系统设计
基于嵌入式Qtopia汽车BCM自动检测系统设计
摘要在车身功能控制系统中起着举足轻重的作用,因此出厂前的功能检测一直得到企业和消费者的高度重视。目前多数企业仍使用人工测试的方法,而本次是采用三星公司的S3C2440作为核心控制器,在Linux系统下使用应用开发平台搭建控制界面添加检测控制程序,通过接口板连接从而实现检测功能。关键词汽车BCM;Liunx;;检测 随着汽车行业的快速发展,越来越多的车身电子设备得到应用。汽车BCM上的节点和连线也越来越多,导致了汽车BCM功能检测变得更加复杂。1 系统的可行性1.1 自系统的应用前景随着生活水平的提高,人们对汽车功能的舒适性和安全性也提出了更高的要求。汽车BCM模块控制着汽车上的绝大部分自动化功能,主要包括汽车的灯光、电动车窗、中央门锁、防盗报警、电动后视镜、电动座椅、雨刮器、安全气囊等。在安装使用BCM前企业就需要对汽车BCM进行全功能检测。由于器件繁多,传统的人工检测方法工人需要根据各个功能模块采用手动方式逐个进行测试,测试效率低,可靠性差。自动用于生产检测后不仅可以大幅降低BCM检测仪的体积和成本,而且BCM的检测效率也可提高4~6倍。投入使用后可为公司减少设备投资、节省人力,带来更大经济效益。本文引用地址:1.2 系统可行性汽车BCM检测时,工人通过各种开关按键让BCM在模拟负载环境下,测试各个功能模块是否存在故障。而这些开关信号可通过程序中的高低电平来代替,这给自动化测试创造了可行条件。该自动开始工作时,中央控制器通过接口板向汽车BCM发送测试信号,然后BCM做出响应驱动接口板上的负载,再将检测结果传输到屏幕并显示。如果BCM一切功能正常,液晶显示屏就会显示BCM良好。而检测过程中如果某一部分功能出现故障,则检测系统立即停止检测,并将故障部位显示在液晶屏幕上提示检测人员。另外系统下通过可以较为容易地开发触摸屏控制界面,这样工人就可以直观地通过简单的操作来实现汽车BCM功能的自动化检测。2 系统的软件软件部分是在嵌入式Redhat9Linux操作系统下的,使用Linux-2.6.30.4版本内核、EABI_4.3.3_EmbedSky交叉编译工具。2.1 嵌入式Linux操作系统的搭建2.1.1 移植uboot到开发板开发板中缺少uboot开机无法启动,要将编写好的uboot通过Jtag分别烧写到开发板的Nor Flash和NandFlash存储器中,即可从Nor Flas h或者Nand Flash启动。2.1.2 Linux系统内核移植下载并解压系统源码到PCLinux的/opL/EmbedSky/中,解压命令为#tar xvfj linux-2.6.30.4tar.bz2-C/opt/EmbedSky/,再进入内核源码通过修改Makefile文件中的&ARCH? =(SUBARCH)&和&CROSS_COMPILE? =&分别为&ARCH=arm&和&CROSS_COMPILE=arm-linu x-&从而添加系统对ARM的支持。使用命令:#make menuconfig打开配置菜单界面,如图2所示。 按要求配置完成以后通过命令:#make zImage进行编译后生成zImage镜像,最后将其烧写到开发板中。2.1.3 文件系统移植打开配置单,存配置单中增加对yaffs的支持。 对各项配置好以后保存为.config然后编译出镜像来。2.2 搭建Qtopia-2.2.0开发应用平台 Qtopia是Trolltech公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台,Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。 本系统检测设计时首先是在PC机上设计、修改、调试、编译通过以后再烧录到开发板的。首先解压安装交叉编译器EABI_4.3.3_Embed Sky.tar.bz2,然后使用#source/etc/profile命令使其生效。接着编译PC版本的Qtopia-2.2.0,打开PC机的Linux终端然后在终端输入执行命令:./x86-qtopia-2.2.0-kongqueror-build,之后就开始编译QT。等编译完成后在终端里输入命令#./test-x86就打开了Qtop ia的仿真界面,如图3所示。 随后编译ARM版本的Qtopia接着制作Qtopia2.2.0的文件系统后就可以进行QT应用程序的开发。2.3 系统应用程序开发首先设置环境变量,然后建立QT的项目文件后启动Qtdesigner开始根据实际需要设计控制界面。在设计过程巾需要注意QT信号和槽的对应关系,设计完成后保存为*.ui工程文件。通过uic软件把建立好的工程转换成源代码,再添加通用的文件main.cpp文件,使用tmake中的progen软件生成pro文件,从上面得到的pro文件再生成Makefile文件,然后制作启动器、桌面图标,在*.cpp文件巾加入本设计系统对汽车BCM自动检测的控制程序,最后进行编译和仿真。在ARM环境下编译完成后将&/opt/EmbenSky/Qte/arm-qtopia/qtopia/image/opt /Qtopia/bin/&目录下的应用程序和在这个目录&Qte/arm-qtopia/qtopia/image/opt/Qtopia/pics/&下的桌面图标以及&Qte /arm-qtopia/qtopia/image/opt/Qtopia/apps/EmbedSky&目录下的启动器分别放到开发板文件系统对应的目录下,编译镜像文件烧录到开发板,最后重新启动开发板后就可正常运行了。图4为本设计系统的触摸屏控制界面。3 系统的硬件设计综合考虑经济和性能等方面的因素,硬件控制部分本检测系统选择使用天嵌公司的TQ2440系列嵌入式开发板,核心板部分原理图如图5所示。核心板模块是S3C2440,S3C2440是三星公司推出的一款功能强大,功耗低的ARM9嵌入式CPU,应用范围广泛。主频400 MHz,触摸屏使用次数可达到10万次。 为实现分析控制器与汽车BCM的连接和信号上下传输,根据实际应用情况,系统设计了接口电路板。由于汽车BCM上的元器件和输入输出端口较多,而控制开发板的IO口较少,所以接口板起到一个桥梁作用。系统采用74hc573来扩展应用端口,另外接口板上还设计了大量的负载,比如LED灯、蜂鸣器、大功率电阻等。出于自动检测系统的通用性考虑,接口板上还预留了一些输入输出端口作为以后开发扩展使用。整个接口板元器件繁多、布线难度相对比较大,其原理如图7所示。 4 结束语随着汽车安全性和舒适性的提高,进而促进了汽车BCM生产行业的发展,所以具有高效、准确、廉价性能的汽车BCM自动检测系统的设计是发展趋势。 设计是在嵌入式Linux操作系统下,通过Qtopia搭建控制界面而完成的一套自动检测系统。其特点是功能强大、功耗低、成本小,并且易于开发新的控制系统,升级空间比较大,今后可以根据需要进一步完善测试功能。汽车BCM故障检测系统也将朝着更方便、准确、通用的方向发展。
linux操作系统文章专题:
linux相关文章:
蜂鸣器相关文章:
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一1458人阅读
LINUX(14)
友善之臂 mini2440 root_qtopia 文件系统启动过程分析&&
21:49:45|&&分类:&字号&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:124852次
积分:1672
积分:1672
排名:第16606名
原创:32篇
转载:55篇
评论:22条
(1)(1)(10)(1)(1)(2)(1)(9)(2)(6)(1)(1)(5)(8)(2)(4)(1)(2)(7)(1)(18)(1)(2)文章 - 294
评论 - 411前段时间为了完成毕设,所以选择了mini2440作为平台进行开发,在此过程中我自己学习了QT编程。今天就谈谈自己的学习心得:主机环境:虚拟机安装Redhat5(企业版)编译工具:arm-linux-gcc-4.3.2QT版本:Qtopia-2.2.0第一步:首先安装Qtopia-2.2.0(1).建立目录:在opt下建立/FriendlyARM/mini2440目录。(2).把arm-qtopia-.tar.gz和x86-qtopia-.tar.gz拷贝到mini2440下运行:& #tar xvzf arm-qtopia-.tar.gz& #tar xvzf x86-qtopia-.tar.gz&(3)这是我们在mini2440下看到两个文件夹x86-qtopia和arm-qtopia,分别进入两个文件夹分别执行以下命令:&#./build-all&完成编译。编译通过那么说明安装成功。第二步:x86下的QT编程:该部分有两种方法可以进行编程第一部分:利用xxx.cpp和xxx.h来设计图形化界面。(1).进入x86-qtopia中建立工程目录,把xxx.h和xxx.cpp拷贝至如下目录。(2).设置环境变量:执行#source& /opt/FriendlyARM/mini2440/x86-qtopia/qtopia-2.2.0-FriendlyARM/setQpEnv(3).创建工程:#progen -t app -o xxx.pro(4).修改xxx.pro文件,为其中的SOURCES=xxx.cpp HEADERS=xxx.h TARGET=xxx若有多个就用空格隔开。(5).生成Makefile&&&&&&&& a.查看环境变量:#echo& $TMAKEPATH查看结尾是否为/qws/linux-generic-g++。&&&&&&&& b.若不是进行以下修改:修改tmake/lib/qws/linux-generic-g++/tmake.conf将TMAKE_LINK=gcc和TMAKE_SHLIB=gcc中的gcc改为g++&&&&&&&&&c.生成Makefile:#tmake&-o Makefile xxx.pro。&&&&&&&& d.修改Makefile:添加库路径:LIBS=-L$(QPEDIR)/lib -lqte -lm -lqtopia2 -lqtopia -lqpe。(6).编译:#make 后会生成可执行文件。(7).运行:#qvfb -width 480 -height 480 &&&&&&&&&&&&&&&&&&&& #./可执行文件名 -qws下面我们一起看个例子:#include &menu.h&1.menu.cpp文件:MainWidget::MainWidget(QWidget *parent, const char *name): QMainWindow(parent, name){&//set caption and backgroundcolor&setCaption(&Untitled Text&);&setBackgroundColor(white);&//add items to File menu&QPopupMenu *file = new QPopupM&QFont f1(&Helvetica&, 14, QFont::Bold);&setFont(f1);&file-&setFont(f1);&file-&insertItem(&&New&, this, SLOT(newFile()), CTRL+Key_N);&file-&insertItem(&&Open&, this, SLOT(openFile()), CTRL+Key_O);&file-&insertItem(&&Save&, this, SLOT(saveFile()), CTRL+Key_S);&file-&insertItem(&&Quit&, this, SLOT(quitMain()), CTRL+Key_Q);&file-&insertItem(&&print&,this, SLOT(printFile()), CTRL+Key_P);&file-&insertItem(&&save as&,this, SLOT(savFile()));&&//add items to Edit menu&QPopupMenu *edit = new QPopupM&edit-&setFont(f1);&edit-&insertItem(&&Copy&, this, SLOT(copyCH()), CTRL+Key_C);&edit-&insertItem(&&Paste&, this, SLOT(pasteCH()), CTRL+Key_V);&edit-&insertItem(&&Replace&, this, SLOT(replCH()), CTRL+Key_R);&&//add items to View menu&QPopupMenu *view = new QPopupM&view-&setFont(f1);&view-&insertItem(&&Toolbar&, this, SLOT(toolbar()), CTRL+Key_T);&&//add items to Help menu&QPopupMenu *help = new QPopupM&help-&setFont(f1);&help-&insertItem(&&Help&, this, SLOT(helpFile()), CTRL+Key_H);&help-&insertItem(&About&, this, SLOT(aboutMe()));&//Create 'File' & 'Help'& 'edit'&'view'menu&QMenuBar *&menu = new QMenuBar(this);&QFont f2(&Helvetica&, 18, QFont::Bold);&setFont(f2);&menu-&setFont(f2);&&&//set Font&menu-&insertItem(&&File&, file);&//create 'FIle'&menu-&insertItem(&&Help&, help);&//create 'Help'&menu-&insertItem(&&Edit&, edit);&&&&&&& //create 'edit'&menu-&insertItem(&&View&, view);&&&&&&& //create 'view'&//create lebel&label = new QLabel(&&, this);&label-&setGeometry(60, 100, 250, 20);&label-&setBackgroundColor(white);&label-&setFont(f1);}void MainWidget::printFile(){&label-&setText(& Print a file!&);}void MainWidget::savFile(){&&&&&&& label-&setText(&File has been saved as another file!&);}void MainWidget::copyCH(){&label-&setText(&Text has been copied!&);}void MainWidget::pasteCH(){&label-&setText(&Text has been pasted!&);}void MainWidget::replCH(){&label-&setText(&Context has been replaced!&);}void MainWidget::toolbar(){&label-&setText(&Toolbar&);}void MainWidget::newFile(){&label-&setText(&Create a New File!&);}void MainWidget::openFile(){&label-&setText(&File has been opened!&);}void MainWidget::saveFile(){&label-&setText(&File has been saved!&);}void MainWidget::quitMain(){&QApplication::exit();}void MainWidget::helpFile(){&label-&setText(&Help Files, or press F1.&);}void MainWidget::aboutMe(){&label-&setText(&(C) GUANGZHOU ZHIYUAN&);}int main(int argc, char **argv){&QApplication app(argc, argv);&MainWidget *mainwidget = new MainWidget(0);&mainwidget-&setGeometry(10, 30, 480, 640);&app.setMainWidget(mainwidget);&mainwidget-&show();&int result = app.exec();&}ifndef _MENU_H_#define _MENU_H_2.menu.h文件:#include &qapplication.h&#include &qmainwindow.h&#include &qpopupmenu.h&#include &qmenubar.h&#include &qlabel.h&class MainWidget:public QMainWindow{&Q_OBJECTpublic:&MainWidget(QWidget *parent = 0, const char *name = 0);public slots:&void newFile();&void openFile();&void saveFile();&void quitMain();&void helpFile();&void aboutMe();&void printFile();&&&&&&& void savFile();&&&&&&& void copyCH();&&&&&&& void pasteCH();&&&&&&& void replCH();&&&&&&& void toolbar();private:&QLabel *};#endif3.运行结果:其实这中方法是最麻烦的一种方法,下面我们接着介绍一种简单的x86的QT程序的编译方法:在建好项目文件夹后,把源代码拷贝到工程目录下,然后把qt示例,hello文件夹下的build拷贝到你当前工程目录下,执行#./build一下就OK了,这个方法是最简单的,但上面的方法实际就是这种简单方法的一个过程展示,只不过第二种方法用一个shell把所有操作都涵盖了!只要操作熟练其实那种方法都差不多。第二部分内容待续........................................}

我要回帖

更多关于 qt ui 生成 h 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信