基于qt的車載終端系統(tǒng)設計_第1頁
基于qt的車載終端系統(tǒng)設計_第2頁
基于qt的車載終端系統(tǒng)設計_第3頁
基于qt的車載終端系統(tǒng)設計_第4頁
基于qt的車載終端系統(tǒng)設計_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

摘要我們生活在一個便利的時代,這個時代有汽車,使得我們的出行變得十分的便利。即使大幅度的縮短了我們的出行時間,也是需要一定得時間的,為了讓乘車人員在乘車時間過得更加地豐富,設計出了這款車載終端系統(tǒng)。這篇文章介紹制作該系統(tǒng)用到的工具和該系統(tǒng)的功能,以及設計的時候遇到的一些問題和解決的辦法。本文先介紹了車載終端系統(tǒng)的研究和研究其的意義,再討論硬件結構,然后研究了軟件系統(tǒng)的相關工作流程及實現(xiàn)的方案;主要寫了ARM處理器和Linux操作系統(tǒng)實現(xiàn)車載終端系統(tǒng)各功能模塊的過程。系統(tǒng)用qt來制作,使用的是c++語言。有視頻、音樂、攝像和錄音模塊。通過點擊屏幕上顯示的圖標來實現(xiàn)對應的功能。最終可以實現(xiàn)視頻和音樂的播放,通過連接攝像頭,可以對車內進行錄像和拍照,錄好的視頻和拍好的照片可以存放進對于的文件夾中,記錄行車途中的點點滴滴,供車主觀看。這些功能豐富了我們的行車的時間,在車上看視頻聽音樂,讓旅途不在無聊,而拍攝的照片讓幸福的回憶永久保存。關鍵字:ARM;Linux;qt;c++AbstractWeliveinaconvenientera.Inthisera,therearecars,whichmakesourtravelveryconvenient.Evenifourtraveltimeisgreatlyshortened,itstillneedsacertainamountoftime.Inordertoenrichthetraveltimeofpassengers,thisvehicleterminalsystemisdesigned.Thisarticleintroducesthetoolsusedtomakethesystemandthefunctionsofthesystem,aswellassomeproblemsencounteredinthedesignandsolutions.Thispaperfirstintroducestheresearchandsignificanceofvehicleterminalsystem,thendiscussesthehardwarestructure,andthenstudiestherelatedworkflowandimplementationschemeofsoftwaresystem;ItmainlywritestheprocessofrealizingeachfunctionalmoduleofvehicleterminalsystemwithARMprocessorandLinuxoperatingsystem.ThesystemismadewithQTandusesC++language.Therearevideo,music,cameraandrecordingmodules.Clicktheicondisplayedonthescreentorealizethecorrespondingfunction.Finally,thevideoandmusiccanbeplayed.Byconnectingthecamera,thevideoandphotosinthecarcanberecordedandtaken.Therecordedvideoandphotoscanbestoredintheappropriatefoldertorecordthebitsandpiecesonthewayfortheownertowatch.Thesefunctionsenrichourdrivingtime,watchvideosandlistentomusicinthecar,sothatthejourneyisnolongerboring,andthephotoswetakekeepthehappymemoriesforeverKeywords:ARM;Linux;qt;c++目錄TOC\o"1-2"\h\u31172引言 1195741緒論 191341.1研究現(xiàn)狀 2320111.2研究意義 2115431.3系統(tǒng)功能 274182系統(tǒng)設計 3286472.1系統(tǒng)框圖 3264492.2部分模塊方案論證 4268033硬件設計 5176963.1核心板 620003.2S5P6818芯片特性 627603.3Nand-flash芯片 7266173.4GEC6818開發(fā)板部分接口介紹 721904軟件設計 8325184.1軟件介紹 9207134.2登錄界面功能介紹 12167814.3主界面介紹 14271774.4音樂播放界面功能介紹 15144404.5視頻播放界面介紹 1636874.6攝像模塊介紹 18162324.7錄音模塊介紹 18296595.系統(tǒng)測試 1978835.1硬件測試 19105135.2軟件測試 20320416總結 2511156謝辭 2622000參考文獻 2721755附錄 28引言1緒論隨著人們對處理器的開發(fā),開始出現(xiàn)了微型處理器。在那個時代里,慢慢的在生活中看見嵌入式設備的使用。嵌入式技術主要是將嵌入式系統(tǒng)安裝在目標系統(tǒng)之中。由于嵌入式系統(tǒng)安裝在目標系統(tǒng)之中,并對目標系統(tǒng)進行控制,所用到的知識和以往的計算機系統(tǒng)并不相同。剛開始人們對計算機的系統(tǒng)進行一些調整,使其可以嵌入一些設備里面。但是目標系統(tǒng)太多了,有些目標系統(tǒng)無法使用計算機系統(tǒng)。也因為二者所用到的知識點是不同的,為此必須設計出一款獨立的嵌入式系統(tǒng),以便后續(xù)的發(fā)展。嵌入式系統(tǒng)的發(fā)展可大致為四個階段。階段一是單芯片為主。在一個芯片上面寫進一個計算機系統(tǒng),使用這個系統(tǒng)來對芯片進行控制。這階段的系統(tǒng)具有的很少的功能,處理的速度也不是很快,可以存放的數(shù)據也很少,也沒有接口。不過這個系統(tǒng)的操作很簡單,價格也不貴。階段二是用處理器和簡單的操作系統(tǒng)來完成的。處理器的種類很多,使用不同的處理器可以實現(xiàn)不同的性能,通用性很好。系統(tǒng)的處理速度比其階段一有了很大的提升。階段三使用處理器和嵌入式系統(tǒng)來完成的。相對于簡單的操作系統(tǒng),嵌入式系統(tǒng)可以更好的安裝在處理器上。處理速度更好了,也可以對文件和目錄進行處理了。還設置了大量的接口,滿足不同的需求。階段四是運用Internet為基礎的系統(tǒng)。這個階段如今正在發(fā)展中,現(xiàn)在市面的大多數(shù)嵌入式系統(tǒng)都沒有這個基礎,但毫無疑問這是嵌入式以后的發(fā)展方向。從上個世紀開始,嵌入式系統(tǒng)開始在我國出現(xiàn)和興起,經過一段時間發(fā)展,嵌入式系統(tǒng)在在一定的范圍上得到運用,并在這些領域大放光彩。時代在進步,人們的生活水平越來越好,對嵌入式系統(tǒng)要完成的功能也變多起來,功能的增加使得需要到的嵌入式技術也變得繁雜起來。為滿足人們對這方面的需求,系統(tǒng)的核心運算速度也在一步一步的得到加快,從4位發(fā)展到8位,8位升級到16位,現(xiàn)在嵌入式設備的微處理器又得到了完善和升級,已經變成32位的嵌入式處理器,短短一段時間中從4位發(fā)展到32,可見其發(fā)展能力是多么的迅速?,F(xiàn)在市面上比較被人們認可的有Am186/88、386EX、SC-400、PowerPC、68000、MIPS、ARM系列的嵌入式處理器。其中ARM的微處理器的運用范疇更加地寬闊,主要使用在工業(yè)設備的調控、日常的電子設備、通信設備、網絡系統(tǒng)、無線系統(tǒng)等方面。汽車產業(yè)在我國的發(fā)展速度可以說是很快的,當嵌入式系統(tǒng)和汽車碰撞到一起,車載終端系統(tǒng)出現(xiàn)在人們的生活當中,在如今的汽車產業(yè)中,車載終端系統(tǒng)是一大賣點只要。在外國,車載終端系統(tǒng)產品已經十分的成熟了,形成了規(guī)?;氖袌鲂枨?。但是我國的車載終端系統(tǒng)產品的市場才剛剛開啟,許多的產品還是處于在開發(fā)的階段。不過中國的地域遼闊、人口眾多并且發(fā)展得十分的迅速,加之人們對車載系統(tǒng)的需求量是十分龐大的,這將推動車載系統(tǒng)的研發(fā)。1.1研究現(xiàn)狀最先在車內搭載車載系統(tǒng)的車是雪佛蘭,其搭載的是收音機,沒錯收音機就是出現(xiàn)的最早的車載系統(tǒng)。當時輛裝有收音機的車在市面上出現(xiàn)時引發(fā)了人們熱議的談論。不過,人們總是難以接受新鮮的事物,這輛車備受人們的質疑,認為會影響司機的駕駛安全,導致出現(xiàn)車禍的概率上升,紛紛抗議在車上裝上收音機,隨著時代的前進,人們的擔憂并沒有發(fā)生,反而越來越多的車裝載上了收音機。直到如今,人們的車上依舊搭載有收音機,在停車休息的時候,聽點新聞來了解時事,聽點音樂來放松心情。到了現(xiàn)在,車載系統(tǒng)以及全面數(shù)字化。人們的追求也不滿足于收音機了,在市面上的車載終端系統(tǒng)擁有很強大的功能,搭載了GPS,可以對車輛進行定位和路線的規(guī)劃,不用擔心迷路和不認得路,使得如今的出行更加地方便了;還可以播放視頻和音樂,使得出行路上不再無聊;還提供了數(shù)據接口,可以連接攝像頭,對車內進行監(jiān)控和拍照。本介紹的車載終端系統(tǒng),以ARM為芯片,配上LCD電容觸摸屏,嵌入式LINUX操作系統(tǒng),構成一個可以錄制視頻、播放視頻、音樂、拍照、瀏覽相冊和錄音的系統(tǒng)。1.2研究意義正如前面所說,人們對車載系統(tǒng)的不僅需求量是很龐大的,對其可以實現(xiàn)的功能也已日漸增,汽車廠商為了使人們在開車更加地舒適和出行更加地安全,在不斷的完善車載終端系統(tǒng)。本題目要求設計的車載終端系統(tǒng)要求使用賬號秘密登錄,有效的防止其他人的私自使用。還搭載有攝像頭,在不使用車的時候,可以開啟攝像頭來監(jiān)視車內的狀況,并將錄像保存起來,方便車主觀看自己不在車時車子的狀況,在開車時,可以調節(jié)攝像頭的角度,充當行車記錄儀來使用。其視頻和音樂播放功能,可以讓司機在休息時,得到放松。語音的錄制和播放的功能,在跑滴滴時就可以使用了,為車主和乘客都提供了保障。1.3系統(tǒng)功能本次畢業(yè)設計將應用所學的專業(yè)知識,理論聯(lián)系實際,解決實際問題,本軟件采用C++作為編程語言,QT庫作為框架??梢詫崿F(xiàn)車內攝像頭抓拍、監(jiān)控、對抓拍到的畫面進行電子相冊預覽、實現(xiàn)對車內錄像的播放和保存、實現(xiàn)簡單的語音提示、實現(xiàn)車內點歌功能、實現(xiàn)車內視頻播放、實現(xiàn)車內錄音和播放功能等;根據的題目的要求,用QT設計出一個登陸界面,要求輸入賬號密碼中,賬號密碼正確才可以進入主界面。在主界面中有圖標,點擊圖標實現(xiàn)對應的功能。主要的功能有:視頻播放、音樂播放、攝像功能、錄音功能和瀏覽電子相冊,攝像功能分為錄像和拍照,通過錄像和拍照得到文件要放入對應的文件夾中存放,方便用來播放。以上就是對題目的解析。2系統(tǒng)設計2.1系統(tǒng)框圖系統(tǒng)結構框圖如下:圖2.1系統(tǒng)構架圖2.2部分模塊方案論證2.2.1控制模塊方案論證半導體知識產權(IP)提供商的最大領頭羊是位于英國的ARM公司。全世界上運用ARM架構的智能手機設備和平板電腦具有很多高的占比率。ARM不僅提出了許多的相關技術還設計出許多不同系列的RISC處理器,這些處理器的耗能都十分的低,具有很高的性價比。但是ARM公司的獲利的方式并不是通過販賣他們制造的處理器,而是將處理器的結構租借給其他的廠家。如今大多數(shù)的廠家都在使用ARM公司的處理器結構,并制造出在這結構上的不同系列處理器。ATMEL公司在1997年設計出一款RISC8位單片機,RISC8位單片機也可以叫精簡指令集高速8位單片機,和以往的RISC8位單片機不同之處就在于其內置的Flash屬于升級增強過的,這款強力的單片機就是AVR單片機。相對于其他不同型號的單片機其運行的效率比較高。AVR單片機內部嵌有Flash程序存儲器是屬于增強型的,不僅修改更加便利,還同時支持ISP和IAP,更加的有利于產品的測試、研究、生產、升級。內部鑲嵌的EEProm擁有很長的工作壽命,很多的關鍵數(shù)據都可以被很好的保存起來,防止由于停電等意外事件的發(fā)生使得數(shù)據丟失的問題。運用高級語言開發(fā)系統(tǒng)程序時,RAM的容量越大就越有效的支持程序的運行,而AVR單片機片內大容量的RAM剛好滿足了這一點。方案一:使用三星公司制作S5P6818的處理器。S5P6818內置高性能8核A53ARM架構,制作工藝采用的是28nm。在使用時八個核心可以一起運行,速度更快,性能更強,完全滿足多任務處理、高速運算、高端圖像處理等需求。在播放視頻的時候,其可以播放很多格式的視頻,分辨率也很高。同時可以連接網絡,內部安裝的網絡適配器上網的速度更加地迅速。在電平上,S5P6818為3.3VGPIO,更方便行業(yè)客戶設計產品。是一塊高性能、低功耗的嵌入式芯片,可應用于嵌入式操作系統(tǒng)的高端應用開發(fā)。方案二:采用AVR系列的單片機,在前面的介紹已經提出了AVR單片機具有的功能。對比兩個方案,使用哪個都可以完成目標,但我具有的ARM的技術知識是大于單片機方面的,使用單片機開發(fā)的話會增加開發(fā)的難度,加上在處理速度這方面上方案一的大于方案二,所以采用方案一。2.2.2控制模塊方案論證本項目使用的是Linux系統(tǒng),使用其優(yōu)勢有:Linux系統(tǒng)是一款用來進行開發(fā)的軟件,處于一個完成開發(fā)的環(huán)境中,具有高的自由性。Linux系統(tǒng)可以在很多的平臺上使用。Linux的核心是公開的,是自由免費使用的,其源代碼也是完全公開。Linux上可以搭建出qt的開發(fā)環(huán)境,還可實現(xiàn)跨平臺的編譯,代碼重用率高。2.2.3顯示模塊設計方案方案一:使用液晶顯示器即LCD來顯示。液晶顯示器雖然說輕薄短小,低耗電量,但是它不能實現(xiàn)觸屏,故不采用。方案二:使用LCD電容觸摸屏來顯示。對比液晶顯示器,LCD電容觸摸屏可以實現(xiàn)觸屏,故采用。3硬件設計該系統(tǒng)的硬件使用的是GEC6818開發(fā)平臺,該平臺運用8層板工藝設計,以此來保證開發(fā)平臺在運行的時候保持穩(wěn)定??梢允褂迷诤芏嚯娮赢a品和通信設備的領域。GEC6818開發(fā)平臺使用的是S5P6818處理器,由三星研發(fā)出來的,擁有八個核新心,主頻可達到1.4GHz,廣泛的使用在嵌入式的系統(tǒng)開發(fā)領域中。開發(fā)板中;留有很多的接口,可以插入耳機和鼠標等一些設備,也可以通過網線來使得平臺可以上網。圖3-16818開發(fā)平臺3.1核心板郵票孔是電路板分板設計的一種方式,因為和郵票一樣,故得到這個名稱。5P6818核心板就是采用這種方式。采用這種方式使得核心板有很大可塑空間,還有很多的管腳,運行速度也很快。該核心板的擁有很好的電氣特性,對于外界的干擾也有很多的抵抗性。SSP6818內置的八核處理器,使其可以播放幾乎所有格式的視頻,視頻的分辨率也很高。還可使用網線連接,內部的網絡處理器使得網速變得很好,滿足客戶的上網需求。該開發(fā)平臺具有十分出色的性能,使得其搭載的芯片發(fā)揮出完美的功能,提高處理速度,減少開發(fā)的時間。3.2S5P6818芯片特性圖3-2Cortex-A53架構芯片GEC6818開發(fā)平臺使用的是S5P6818芯片,由三星公司制作出來的。該芯片使用的是\t"C:/Users/35874/AppData/Local/Temp/360zip$Temp/360$0/%E3%80%8A%E5%9F%BA%E4%BA%8Eqt%E7%9A%84%E8%BD%A6%E8%BD%BD%E7%B3%BB%E7%BB%9F%E3%80%8BPaperTime%E6%96%87%E6%A1%A3%E6%A3%80%E6%B5%8B%E6%8A%A5%E5%91%8A/htmls/detail_report/right"Cortex-A53架構,擁有很多的管腳。該芯片和三星公司以前研發(fā)的一款S5P4418芯片除了內核有區(qū)別,其它都是相同的。所以使用4418芯片的設備都可以使用該芯片,其它硬件都不用更改。3.3Nand-flash芯片對于內存來說容量是越大越好,但是容量越大在購買時花費的金錢也是很多,但在flash內存中有一款名為Nand-flash的內存,其容量雖然很大但是價格卻不高,這主要的得益于其內部使用的非線性宏單元模式。在存儲器當中Nand-flash儲存器的容量可以說是很大的,對數(shù)據的修寫速度也很快,比較適合用來存儲大量的數(shù)據,因而得到很人們的青睞,在業(yè)內的應用擁有很廣闊的范圍。如嵌入式產品中包括攝像機、PSP游戲機、U盤等??偟膩碚fNandflash是操作系統(tǒng)的程序存儲區(qū),該芯片掉電不丟失數(shù)據、壽命長,可反復擦寫。3.4GEC6818開發(fā)板部分接口介紹3.4.1調試串口開發(fā)平臺設置有串口接口,可以使用串口線來將開發(fā)平和電腦等一些設備連接起來。在實際的開發(fā)當中,主要用是用來進行通信。圖3-3調試串口3.4.2以太網接口開發(fā)平臺中配置有以太網接口??梢酝ㄟ^連接網線,使得開發(fā)平臺可以上網下載文件。圖3-4以太網接口3.4.3音頻接口一個3.5mm音頻輸入接口(紅色),一個3.5mm輸出接口(綠色),可直接接耳機,用于音頻的播放和錄制。圖3-4音頻接口4軟件設計要做出這個題目不僅要用得到QT和c++,還要使用交叉編譯器、SecureCRT和tftpd32等軟件。下面我來介紹一下這些軟件。4.1軟件介紹4.1.1c++和QT在本次課題中,運用的是c++和QT。c++是在C語言的基礎上發(fā)展起來的。C++融合了C語言的所有語法特性,并在這個基礎上加了面向對象編程語法規(guī)則,可以這樣說c++是等于C語言加上面向對象的語法。面向對象的語法有:類的封裝,對象,多態(tài),虛函數(shù),純虛函數(shù)和抽象類,模板和泛型編程,運算符重載,函數(shù)重載,命名空間,引用,STL標準模板庫,智能指針等等。QT就是c++中的一個框架,是一個面向對象的框架。4.1.2QT在1991年,QtCompany這家公司開發(fā)出了一款開發(fā)框架,它的全程是跨平臺C++圖形用戶界面應用程序開發(fā)框架,就是現(xiàn)在所說的QT。QT可以開發(fā)很多的程序,以GUI程序為例子,屬于的可以開發(fā),不屬于的也可以開發(fā)。Qt是一種框架,和C語言中的框架不同的是,QT是面向對象的。在QT中不僅有很多的組件,還封裝了很多的類,在這些類中有一個類使得QT完美的協(xié)同性,使用這些組件一起工作變得很簡單。QT擁有的優(yōu)勢:QT支持很多的操作系統(tǒng),可以跨平臺使用。QT中封裝好了很多的類,具有很好的模塊化,可以重復的使用。QT中個個元件之間的合作也非常的簡單。QT支持C語言個c++,c++中的類也可以使用,還有很多的模板給我們使用。4.1.3QT的槽和信號QT中的信號和槽是其主要機制之一。信號和槽是一種接口,主要是用在對象之間的相互溝通。每個信號都要連接到槽。信號被發(fā)送出去后,對應的槽就會調用槽函數(shù),來實現(xiàn)對應的功能。這很類似于回調函數(shù),在一個程序中,定義一個函數(shù)A和一和函數(shù)B,假設函數(shù)A是功能函數(shù),在B中調用A就是回調函數(shù)了。可以看出信號和槽是和回調函數(shù)很相似的,但也有所不同。在回調函數(shù)中,函數(shù)B要調用函數(shù)A,則需要將函數(shù)A的指針傳進函數(shù)B中,那么函數(shù)B的形參就要有函數(shù)A的類型,函數(shù)B就必須知道函數(shù)A。不過在QT中,發(fā)射信號的類是是不需要知道是那個槽接收到這個信號的,在書寫槽函數(shù)時可以放置再多的參數(shù),也不會出現(xiàn)類型錯誤。總結一下,函數(shù)A和函數(shù)B之間的聯(lián)系是很強烈的,函數(shù)B的形參要有函數(shù)A的類型,沒有的話是沒有辦法調用的,所以函數(shù)B必須清楚地知道函數(shù)A,而發(fā)送信號的類和槽并沒有聯(lián)系,只是人們將信號和槽之間聯(lián)系起來,所以信號和槽可以攜帶不同的參數(shù),并不對沖突起來。4.1.4SecureCRTSecureCRT是一個串口工具也可以叫終端仿真程序,要想在windows下登錄Linux系統(tǒng)就要使用到SecureCRT了。要想使用這個程序,要下載好串口線驅動,這個驅動在購買串口線的時候,商家給你一個文件的,下載到電腦就可以了。下載好后查看是那個端口,記住這個端口,在連接的是要用到的。有了這個程序,就可以通過端口線連接開發(fā)平臺了。在開發(fā)中都是使用這個程序在運行代碼的。4.1.5tftpd32回想日常生活都是怎么傳文件的?可以發(fā)郵箱,可以登錄QQ,可以通過FTP來發(fā)送的,開發(fā)板上沒有直接安裝有QQ這類的軟件的,郵箱可QQ就發(fā)送不了,而搭建一個FTP服務器就有小題大做了,一般這種情況下都是采用tfpd來傳送了。windowstftp服務器的作用主要是用來讓windose和開發(fā)板可以相互傳送文件。代碼在編譯完的時候會生成一個執(zhí)行文件,而執(zhí)行不是要在電腦上執(zhí)行的,要把文件下載到開發(fā)板上,這個情況下就會使用到tftp服務器,其通過網線就可以將文件下載到開發(fā)板上了,前提是要有網絡。沒有網絡的時候可以可以用使用rz和sz工具來傳送了,但速度比較慢,所以在開發(fā)的時候更加的喜歡使用tftp服務器來傳送文件。4.1.6數(shù)據庫這個題目要求使用賬號和密碼來進行登錄,這些數(shù)據組織和管理的方式對于這個系統(tǒng)來說是很重要的,這關乎到用戶的私密性。因此這個系統(tǒng)必須要解決賬號密碼這些數(shù)據的組織管理的問題,按照我學會的方法可以字符數(shù)數(shù)組來進行存放,但是這樣賬號的更改,會有點麻煩。所以就打算使用數(shù)據庫的方式來對這些數(shù)據進行更高效的管理。那什么是數(shù)據庫呢?數(shù)據庫可以說是存放數(shù)據的倉庫,但它是使用數(shù)據結構的方法來對數(shù)據進行組織、存儲和管理的??偠灾?,有了數(shù)據可庫,用戶就可以更好的對文件中的數(shù)據進行新增、更新、刪除等操作。數(shù)據庫有很多的版本,QT為我們提供了一種數(shù)據庫,名為MySQL數(shù)據庫,是關系型數(shù)據庫的一種。該數(shù)據庫是瑞典MySQLAB公司研制出來的。具有很多的有點,比如所占內存空間少、處理數(shù)據迅速快、制作費用低,具有很好的性價比,這些還不是最主要的,最主要的其碼源對外開放,常在嵌入式開發(fā)使用。MySQL有下列的特性:MySQL的源代碼是用C語言和c++語言編寫的,在很多的編譯器上進行過測試,得到的結果,保證其源代碼的可移植性和穩(wěn)定性;MySQL可以很多種的操作系統(tǒng)上面使用,例如Linux和Windows系統(tǒng);含有多種API函數(shù),使其可以支持多種編程語言,里面包含了我要使用的c++語言;在MySQL中,SQL查詢算法得到了進一步的優(yōu)化,有效的提升了查詢的效率。支持多線線程機制,能夠充分的利用CPU資源擁有強大的管理工具,為用戶對數(shù)據庫的管理、檢查和優(yōu)化提供了很大的便利。MySQL數(shù)據庫是一種嵌入式數(shù)據庫,該類型的數(shù)據庫由于是嵌入到進程之間的,所以因為這特殊的運行機制,所以說它是嵌入式數(shù)據庫。而正是其是嵌入到進程當中,消除了一些對應配置的開銷。4.1.7ffmpeg視頻處理工具ffmpeg視頻處理工具對于這個系統(tǒng)來說,有很大的幫助。首先它不僅可以記錄下數(shù)字音頻和視屏,還可以對數(shù)字音頻和視屏進行轉換,更可以轉化為流,還是一款開源的程序。它為用戶提供錄制、轉換以及流化音視頻的優(yōu)秀的解決方法。4.1.8交叉編譯器人們可以看得懂自己編寫的C語言程序,但是電腦不行,而我們是要電腦來運行這個程序,電腦看不懂怎么運行呢,所以我們要將我們編寫的C語言程序讓電腦看得懂,這就需要用到編譯了,一份C語言程序編譯過后就會產生一份二進制文件。電腦可以理解這份文件,然后就可以幫助我運行了。編譯有兩種,本地編譯和交叉編譯。本地編譯產生的二進制文件只能在編譯這個文程序的平臺上運行,例如在Linux系統(tǒng)上使用本地編譯,產生的二進制文件是能夠在該上運行,不能拿去其平臺上運行。而交叉編譯編譯出來的二進制文件不能在Linux上運行,但它可以下載到開發(fā)板上面運行。這是區(qū)別本地編譯和交叉編譯的的一種方式之一。嵌入式在出現(xiàn)和發(fā)展的時候,人們就提出交叉編譯這項技術,它隨著嵌入式的發(fā)展一起發(fā)展。我們都知道我們寫出來的代碼程序都需要經過編譯的方式,將其變成計算機可以識別和執(zhí)行的二進制代碼。編譯的過程需要所處的平臺具有一定的存儲空間和運算能力。但在我們常使用的ARM平臺其存儲的空間和運行能力都是不是特別的好。生活中使用大部分的ARM平臺,它的存儲空間和CPU的主頻不是特別的高,基于這種存儲空間和運算能力,在ARM平臺上幾乎很難實現(xiàn)對代碼進行編譯這一過程。這是因為編譯工具要用到很大的存儲空間以及很強的CPU計算能力。這時候交叉編譯器出被人們設計出來解決這個問題。它的使用是這樣在具有一定的存儲空間和CPU計算能力很強的平臺上編譯成功了,例如在PC上編譯,然后再拿去不足以進行編譯的平臺上面去運行。我使用的那個開發(fā)平臺也不能驚喜編譯,所以就要用到交叉編譯在電腦上編譯,然后拿去開發(fā)時使用的開發(fā)平臺運行。4.2登錄界面功能介紹(1)在車載終端系統(tǒng)的登錄注冊界面中,首先創(chuàng)建了一個數(shù)據庫,用來存放登錄信息。代碼如下://創(chuàng)建數(shù)據庫db=QSqlDatabase::addDatabase("QSQLITE");//連接成功返回一個數(shù)據庫對象db.setDatabaseName("userpwd.db");if(!db.open()){qDebug()<<"數(shù)據庫打開失敗"<<db.lastError();}else{qDebug()<<"已打開數(shù)據庫";}//創(chuàng)建表QSqlQueryquery;//創(chuàng)建該對象會自動完成關聯(lián)數(shù)據庫//定義創(chuàng)建表的的語句QStringcmd="createtableifnotexistsuser(usernamevarchar(64),passwordvarchar(64))";if(query.exec(cmd)){qDebug()<<"創(chuàng)建成功";}else{qDebug()<<"創(chuàng)建失敗";}(2)打開系統(tǒng)時,會先看到這樣一個登錄界面(圖4.1),點擊賬號對應的框,再點擊數(shù)字,就會在框里面顯示出數(shù)字,c1是清空賬號

c2清空密碼。當然第一次使用的要先進行注冊,沒有注冊的話,數(shù)據庫就沒有數(shù)據,無法登錄。所以要先進行注冊,點擊注冊會隱藏當前界面,顯示出注冊的界面(圖4.2),操作和登錄界面是一樣的。輸入號賬號和密碼后,點擊注冊就會將賬號和密碼這些數(shù)據存放進數(shù)據庫中。點擊返回會回到上一級的界面,然后再輸入正確的信息就可以進行登錄了。 圖4-1登錄界面 圖4-2注冊界面部分登錄時的代碼://進入主界面voidMainWindow::on_pushButton_clicked(){QStringusername=ui->ledit_username->text();QStringpassword=ui->ledit_password->text();//數(shù)據庫查詢QSqlTableModel*model=newQSqlTableModel;model->setTable("user");//按條件查詢model->setFilter(QString("username='%1'andpassword='%2'").arg(username).arg(password));model->select();//檢測是否查詢到數(shù)據introw=model->rowCount();if(row>0){QMessageBox::information(this,"登錄提示","登錄成功");4.3主界面介紹主界面(圖4.3)是用來顯示功能圖標的,當點擊了某個圖標就會切換到對應的界面。我還寫了顯示時間代碼,用qt中的QTime時間類來獲取到時間,并顯示的在主界面上。部分切換代碼:點擊了音樂的圖標,就會調用下面的代碼,把當前的窗體給隱藏起來,并顯示出音樂界面對應的窗體。voidMainWindow2::on_open_music_clicked(){this->hide();//隱藏當前窗體this->music->show();//顯示音樂界面}獲取時間的代碼:voidMainWindow2::renew_time_date(){QStringdate=QDate::currentDate().toString("yyyy/MM/dd");ui->date_label->setText(date);QStringtime=QTime::currentTime().toString("hh:mm:ss");ui->time_label->setText(time);}分析:QTime::currentTime()可以獲取當前的時間,單是它的返回值不是QString,所以我們使用toString來將其轉化為QString類型。圖4-3主界面4.4音樂播放界面功能介紹這個功能主要是用來播放音樂。音樂播放的時候可以顯示出對應的專輯圖和歌詞,拖動進度條,歌詞也會隨著跳動。點擊上一曲和上一曲可以切換歌曲,音量的大小也可以進行調節(jié)。部分代碼://雙擊條目播放音樂voidmusic_window::on_listWidget_itemDoubleClicked(QListWidgetItem*item){set_Controls_init(true);QStringfile_path="./"+this->dir->dirName()+"/"+item->text();QStringcmd=QString("mplayer-quiet-slave%1").arg(file_path);qDebug()<<cmd;//如果當前進程正在繁忙,那么就先等殺死進程,然后等待進程結束在開始執(zhí)行新的任務if(this->process->state()==QProcess::Running||this->process->state()==QProcess::Starting){this->process->kill();this->process->waitForFinished(-1);}//開始播放音樂this->process->start(cmd);//插入對應的圖片this->show_pic(item->text());//將歌詞讀取到mapthis->read_song_content(item->text());//將音量調節(jié)好this->on_volume_bar_valueChanged(ui->volume_bar->value());//發(fā)送獲取時間的指令給進程this->process->write("get_time_length\n");//開啟定時器//設置當前播放的行數(shù)this->play_music_row=ui->listWidget->currentRow();}4.5視頻播放界面介紹視頻播放界面主要是用來播放視頻??梢酝ㄟ^點擊視頻文件來播放視頻,可以通過一些按鈕來切換視頻。還設計了進度條,通過移動進度條可觀看想看的片段。部分視頻切換代碼://播放上一集voidvedio_window::on_last_Episode_clicked(){this->set_init_Controls(true);this->play_Blues--;if(this->play_Blues<0){this->play_Blues=ui->listWidget->count()-1;}QStringavi_name=ui->listWidget->item(this->play_Blues)->text();QStringcmd=QString("mplayer-slave-quiet-zoom-x600-y360%1").arg(avi_name);//如果程序正在執(zhí)行或者準備開始執(zhí)行,則先殺死進程,然后重新執(zhí)行if(this->process->state()==QProcess::Running||this->process->state()==QProcess::Starting){//殺死進程this->process->kill();//等待進程死亡this->process->waitForFinished(-1);}//開啟新的進程this->process->start(cmd.toUtf8());//開啟定時this->timer->start();//獲取當前視頻的大小this->process->write("get_time_length\n");//調節(jié)音量的大小this->on_volume_valueChanged(ui->volume->value());//如果播放標志位沒有打開,則啟動槽函數(shù),轉換相關控件if(!this->is_play_vedio){this->is_play_vedio=true;ui->plat_pause->setStyleSheet("border-image:url(:/icon/stop_video.png);");4.6攝像模塊介紹該模塊主要通過連接攝像頭來進行使用。具有拍照和錄像的功能,還將得到的照片和視頻保存到特定的位置。部分代碼:voidMonitor::on_saveButton_clicked(){//獲取一幀圖像QDateTimeti=QDateTime::currentDateTime();QStringpath=ti.toString();path.append(".jpg");QStringtmp=QString("./%1").arg(path);if(image1.save(tmp)){QMessageBox::information(this,"保存操作","保存成功");}}4.7錄音模塊介紹該模塊功能就是錄制音頻,并將其保存起來,部分代碼://關閉錄音voidaudio_window::on_pushButton_record_clicked(){if(p->state()==QProcess::Running){//關閉p->kill();p->waitForFinished();ui->pushButton_record->setText("錄音");系統(tǒng)測試硬件測試開啟SecureCRT工具,遇到的界面都選擇打×,在工具欄里選擇快速鏈接的功能,使用serial協(xié)議,選擇對應的端口號和波特率就可以進行鏈接了,鏈接失敗,打開電腦的設備查看端口號是否正確,發(fā)現(xiàn)沒有端口號的話,就去下載個串口驅動程序,這個程序在購買串口線的時候的商家會提供給你的。左上角出現(xiàn)綠色√Serial-COM3表示鏈接成功了,鏈接成功的話就可以打開GEC6818開發(fā)板的開關了。我發(fā)現(xiàn)使用的時候會卡在[9.332000]gec6818_buttons_read,err=0]在這里,雖說這個時候就要使用shift+c就可以進入中端了,但是我不想每次都卡在這里,就像bug一樣。我查詢到原因是因為腳本會默認執(zhí)行兩個命令,分別是"cd/IOT"和"./iot",才會導致程序卡死在哪里,既然是腳本默認執(zhí)行這兩個命令,我只需要進去腳步文件將這兩個命令注釋就行了,注釋后就沒有出現(xiàn)過卡死的情況了。前面已經說過,GEC6818開發(fā)板需要借助一些工作的幫助的才可以從電腦下載文件到開發(fā)平臺中,GEC6818開發(fā)板中設置有了以太網接口,所以我選擇使用tfptd32這個工具來下載文件,現(xiàn)在測試其是否可以將文件從電腦傳送到我的開發(fā)板上面中。先網線將GEC6818開發(fā)板和電腦連接起來,接入網線時,開發(fā)板的終端會打印以下的內容:[6191.780000]PHY:stmmac-0:04-LinkisUp-100/Full],如果沒有打印的話可能是網線壞了。然后查看GEC6818開發(fā)板有沒有配置上ip,沒有的話先配置好ip。配置好ip了,ping一下電腦和Linux系統(tǒng),看看有沒有ping通,我剛開始并沒有ping通,我一個出現(xiàn)了一個問題,那就是GEC6818開發(fā)板ip的網段不對,這個問題不是很難弄,但很難發(fā)現(xiàn),那個時候我都沒有想到是這個題,我以為是虛擬機那邊的問題,但我在查看虛擬機那邊的時候,并沒有發(fā)現(xiàn)問題,但是我就是懷疑是這里的,所以我將虛擬網絡編輯器的橋接模式下的網絡適配器修改成自動的,但還是不行。我干脆就將所有步驟重新來了一遍,首先查看開發(fā)板的ip,這一查就發(fā)現(xiàn)ip的網段跟電腦的不一樣,修改后,我再次嘗試來ping,發(fā)現(xiàn)還是不行,這時我想起了剛才修改的網絡適配器了,我把網絡適配修改回來后,就可以ping通了。ping通了就證明電腦和GEC6818開發(fā)板通過網絡給連接起來了,就可以使用tfptd32來進行文件的傳送,我試著將一張圖片傳送過去,發(fā)現(xiàn)傳送成功。主要的還是可以發(fā)送執(zhí)行文件嗎?發(fā)送過來的執(zhí)行文件可以執(zhí)行嗎?于是我編寫了一份簡單的C語言代碼來,在Linux上進行交叉編譯得到執(zhí)行文件,并通過tfptd32傳送了過來,修改文件的權限,一定要修改為文件權限為777,要不然會提示權限不過,我運行了執(zhí)行文件,結果我和想的一樣,可以使用。硬件沒有任何的問題,可以使用,現(xiàn)在只需將我的代碼編譯出的執(zhí)行文件下載過來就行了。軟件測試5.2.1庫的安裝和測試前面我們說過用一些庫和工具,但是Linux好開發(fā)平臺上面并沒有這些庫和工具,需要我們自己去下載到Linux和開發(fā)平臺上面。(1)交叉編譯QT庫交叉編譯很重要,沒有這個得不到可以在開發(fā)平臺上面運行的執(zhí)行文件。進行qt交叉編譯時需要連接到一些庫,而我的Linux系統(tǒng)沒有對應的庫,所以需要下載交叉編譯數(shù)據庫。我在官網上找到了我需要的的壓縮包,但是我沒有注意到壓縮包的格式。我的老師在Linux中多數(shù)的壓縮包是用gz結尾的壓縮包和bz2結尾的壓縮包,要解壓文件時,已經習慣了使用解壓這兩種格式的壓縮包的命令,所以就習慣的打出了解壓這兩種壓縮的命令即tar命令來對我的壓縮包進行解壓,Linux系統(tǒng)提醒我沒有該命令,當時我誤以為是沒有tar命令,但是我記得以前我使用過這個命令,我的Linux系統(tǒng)也沒有重裝過,就感到很詫異,為了驗證在系統(tǒng)還可以使用解壓和壓縮的命令,我先壓縮了一個目錄,發(fā)現(xiàn)可以壓縮,在對這個壓縮包進行解壓,發(fā)現(xiàn)可以解壓出來。既然是可以使用解壓和壓縮命令的,為什么解壓那個壓縮包,Linux系統(tǒng)卻提示沒有命令。我就在試再輸入解壓一次看看,我在輸入壓縮包的名字時發(fā)現(xiàn)這個壓縮包是.xz結尾的,我就明白我錯在那里了,系統(tǒng)提示沒有命令,可能是我打錯命令了,我在百度上找到了解壓以xz結尾的壓縮包命令。使用該命令后,壓縮包得到了解壓,在我指定的路徑上,也存在了這個庫,這表明庫已經安裝完成。在安裝這個庫的時候出現(xiàn)的問題,是我對于Linux系統(tǒng)給出的提示理解出了問題,沒有找命令的這個問題我以前也遇到過,我記得我在輸入命令的時候,系統(tǒng)也提示了沒有該命令,老師和我說你沒有安裝這個東西,所以用不了相關的命令,叫我安裝一下就好了。當我在這里再次遇到這個問題時,我第一時候也想到了是不是沒有安裝,忘記分析其他的原因,就捉住這個點研究下去了,不過經過研究也是排除了這個原因。到這個時候我才分析其他原因,這是不好的一點,在出現(xiàn)問題的時候我應該把產生問題的原因都思考一遍,找出最簡單的原因,不要只死抓住一原因。在安裝這個庫產生的這個問題,讓我得到上面的結果,讓我很受益良多,在以為的開發(fā)中還會遇到這時候就應該,懂得怎么解決了。ffmpeg視頻處理工具Linux系統(tǒng)是可以連接網絡的,可以直接從網絡上下載這個工具。下載命令是:sudoapt‐getinstallffmpeg。運行這個命令等待下載完成就行了。下載好,在命令行輸入ff按Tab鍵,如果系統(tǒng)出現(xiàn)關的命令,就說說明下載成功了,沒有出現(xiàn)任何東西,就說明沒有成功。Linux系統(tǒng)上有,但是開發(fā)平臺沒有,也需要下載,但我不知到怎么在開發(fā)板下載,所以我直接去官網上下載到電腦,在傳輸?shù)介_辦板上面去了。安裝好了這些,就可以了。為了讓車載終端系統(tǒng)等正確的在6818開發(fā)板上正常的運行,并實現(xiàn)相應的功能。所以主要測試各各按鍵是否完成其對應的功能。5.2.1登錄模塊測試登錄模塊的功能主要是將輸入賬號和密碼寫進數(shù)據庫。要進行要登錄的時候,將輸入的賬號和密碼和數(shù)據庫中的做比較看看是否存在在數(shù)據庫,存在的話,就可以進入到主界面。這是登錄模塊要完成的事情,下面測試是否和設想的一樣進入登錄界面,要先完成賬號密碼的注冊。選擇下方的注冊,界面成功切換為注冊界面,表示多界面的操作成功。進入到注冊界面,使用旁邊的數(shù)字鍵盤來輸入賬號和密碼,點擊注冊,數(shù)據就存放進數(shù)據庫,并提示成功。我還嘗試只輸入賬號或密碼和輸入一樣的賬號,會出現(xiàn)賬號密碼錯誤的提示(圖5-1),這跟我預想的情況一樣,代碼沒有出現(xiàn)問題。點擊返回,界面也正常的切換到登錄界面。在登錄界面輸入相應的賬號和密碼,如果二者都是正確的,會切換到主界面,但是有一個不對的話,就會出現(xiàn)賬號密碼錯誤的提示。 圖5-1注冊錯誤提示5.2.2主界面測試進入到主界面,先看時間的顯示和當前的時間的一致。開始設計時間的時候,編譯出現(xiàn)了問題,提示我的類型不對,本來QTime::currentTime()這個函數(shù)返回的是QTime類型,而我用了QString類型的變量去接著那個返回值,導致了編譯出錯。這個問題很好解決,改變一下類型就行了,而toString就可以將其類型變?yōu)镼String類型。當我調用了這個函數(shù),問題解決了,主界面顯示出正確的時間。QTime::currentTime()這個函數(shù)是獲取當前的世界,由于這個軟件一直在不斷的重復運行,QTime::currentTime()函數(shù)就會不斷的獲取新的時間,達到我先要顯示當前時間的效果。顯示時間主界面的部分功能,更重要的是查看其是否可切換到其它功能界面,我設置5個功能,分別是視頻、音樂、錄音、錄像和瀏覽相冊。我點擊對應的圖標,都可以進行切換到到對應的界面,也可以返回到主界面,沒有什么問題。5.2.3攝像模塊測試攝像模塊主要用來進行進行錄像和拍照。在開發(fā)板上連接一個攝像頭,打開攝像功能,點擊開啟,屏幕上就顯示出攝像頭拍攝的位置,點擊拍照,如系統(tǒng)就會截取這一幀的圖片,并保存起來,點擊錄像就可以開始進行錄像了。這就是攝像模塊的功能了,不會為了確保拍攝的照片和錄制的視頻真的保存了,就要打開電子相冊和視頻播放功能。點擊返回,界面成功有攝像界面切換到主界面,沒有問題。進入到電子相冊獲取照片,看見剛才拍攝的照片,確定了拍攝到的照片確實會保存起來。接著打開視頻,也看到了剛才錄制的視頻。攝像模塊功能沒有問題,可以進行拍照和錄像,得到照片和視頻也會保存起來。5.2.4音樂播放模塊測試打開音樂功能,進入音樂界面(圖5-2),右邊會顯示出音樂列表,雙擊音樂的名字,背景圖就會切換為該音樂的專輯圖(圖5-3),屏幕上會顯示出歌詞,拖動進度條,歌詞也會隨著跳動。點擊上一曲和上一曲可以切換歌曲。音量大小也可以正常的調節(jié)。音樂模塊功能跟要求的一樣,沒有出現(xiàn)問題。圖5-2音樂主界面 圖5-3播放音樂時的界面5.2.5視頻播放模塊測試視頻模塊的主要功能就是用來給用戶來觀看視頻,進入到視頻播放界面(圖5-4),右邊會出現(xiàn)一些文件的名字,那些文件就是視頻了,點擊文件,就可以播放對應的視頻了。在下方還設置了切換功能,可以切換上下視頻。調節(jié)音量的按鈕也可以控制音量大小,沒有問題。由攝像模塊錄制視頻產生的視頻文件也可以顯示在右邊的列表中,并且可以正常播放出來。 圖5-4視頻播放界面 5.2.6電子相冊測試電子相冊界面如下圖5-5,電子相冊是用來瀏覽照片的。點擊添加圖片左邊就會出現(xiàn)你添加進來的圖,上一張和下一張可以切換圖片。也可以對圖片進行放大了縮小。 圖5-5電子相冊主界面 5.2.7錄音功能測試錄音界面如下圖5-6,主要是點擊錄音按鈕就可以開始錄音了。圖5-6錄音主界面 6總結我選擇的課題是基于QT的車載終端系統(tǒng),這個系統(tǒng)是在6818開發(fā)平臺上面運行的,通過連接攝像頭,可以達到拍照和錄像的功能,并將得到照片和視頻以文件的格式保存來,用戶可以通過該系統(tǒng)的視頻播放軟件來觀看錄制的視頻,而照片則通過電子相冊來觀看。該系統(tǒng)還有語言錄制功能,可以記錄下車內的聊天情況。還搭載音樂播放器,可以聽聽音樂,放松心情。從我選到這個題目開始,我就開始對這個系統(tǒng)整體的設計進行思考,一步一步的設計,考驗我大學4年所學的專業(yè)知識,讓我對這些知識有了進一步

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論