版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
北京理工大學珠海學院2020屆本科生畢業(yè)設計基于6818的電子抽獎系統(tǒng)摘要本電子抽獎系統(tǒng),是一款可以在ARM(cortex-A53)平臺和LINUX操作系統(tǒng)上,以QT為框架,C/C++為語言基礎實現(xiàn)的抽獎平臺的程序。本課題設計一種,用戶可安全進行注冊登錄,密碼加密,現(xiàn)狀及發(fā)展趨勢簡易可靠的電子抽獎系統(tǒng)。用戶數(shù)據(jù)用數(shù)據(jù)庫保存,方便下次登錄。使用QT中的ui界面設計師實現(xiàn)界面跳轉。管理員可以更改中獎概率。它可代替?zhèn)鹘y(tǒng)抽獎方式,公平性、實用性、可靠性、成本等因素都十分可觀,推廣應用前景廣闊,可以使用于各種各樣的需要抽獎的活動中。關鍵詞:ARM;LINUX;QT;C/C數(shù)據(jù)庫;交叉編譯Electroniclotterysystembasedon6818AbstractThiselectroniclotterysystemisalotteryplatformprogramthatcanbeimplementedonARM(cortex-A53)platformandLINUXoperatingsystem,usingQTastheframeworkandC/C++asthelanguagefoundation.Thistopicdesignsasimpleandreliableelectroniclotterysysteminwhichuserscansafelyregisterandlogin,passwordencryption,currentstatusanddevelopmenttrend.Userdataisstoredinadatabasetofacilitatethenextlogin.UseuiinterfacedesignerinQTtorealizeinterfacejump.Theadministratorcanchangetheprobabilityofwinning.Itcanreplacethetraditionalwayoflottery.Ithasconsiderablefactorssuchasfairness,practicability,reliability,costandsoon.Itcanbewidelyusedinallkindsofactivitiesthatneedlottery.Keywords:ARM;LINUX;QT;C/C++;crosscompilation目錄1前言 51.1本設計的目的、意義及應達到的技術要求 51.2本設計在國內外的發(fā)展概況及存在的問題 51.3本設計應解決的主要問題 52本設計 62.1程序框架選擇 62.2課題設計中的ui設計 72.3SQL數(shù)據(jù)庫使用戶登錄注冊信息的保存實現(xiàn) 82.4多界面跳轉 102.5電子抽獎中的隨機數(shù) 122.6電子抽獎中的消息盒子 132.7交叉編譯QT程序到開發(fā)板上運行 152.8基于ARM的cortex-A53的6818平臺 163結論 18參考文獻 18致謝 19附錄 201前言電子抽獎系統(tǒng),可以代替?zhèn)鹘y(tǒng)的紙面抽獎或道具抽獎,在這個節(jié)奏加快的時代下,可以推廣應用與多種活動場景、游戲應用或商業(yè)用途。本次課程設計的電子抽獎系統(tǒng),公平性、實用性、可靠性、成本等因素都十分可觀,推廣應用前景廣闊,可以使用于各種各樣的需要抽獎的活動中。操作簡單快捷,不論長幼,也不論文化水平高低,即使是完全不會電腦操作的人,也能輕松上手駕馭使用電子抽獎系統(tǒng)。1.1本設計的目的、意義及應達到的技術要求通過此課題,既可以進一步了解抽獎系統(tǒng)的工作原理,還可以鞏固學習ARM平臺上的各種知識點。隨著現(xiàn)代化趨勢的發(fā)展,設計一種簡單易操作還穩(wěn)定可靠的電子抽獎系統(tǒng),可以廣泛應用于各種需要抽獎的活動中,推廣應用前景廣闊。使用的軟硬件及技術支持:linux(unbuntu鏡像)、qtcreator、交叉編譯器、sqi數(shù)據(jù)庫、C/C++語言、基于ARM的cortex-A53的6818開發(fā)板。1.2本設計在國內外的發(fā)展概況及存在的問題國內外還未普及研究電子抽獎系統(tǒng),市面上還沒有方便快捷簡單的電子抽獎系統(tǒng),人們活動或游戲或商業(yè)中需要抽獎的時候,大部分還是使用傳統(tǒng)的紙面或道具抽獎,然而在使用結束后往往因為不常使用而丟棄,這會導致資源的浪費和成本的提高?,F(xiàn)代社會中許多操作往往還離不開網絡的支持,在許多情況下在使用電子抽獎系統(tǒng)的時候會往往會受網絡的限制,這也凸顯我們需要一款操作簡易方便易上手,可以單機使用的電子抽獎系統(tǒng)。1.3本設計應解決的主要問題本設計主要解決的問題分為以下三個:a.sql數(shù)據(jù)庫的使用,保證數(shù)據(jù)讀取、寫入的正確性,用以保存用戶信息,秘密加密安全,方便下次直接登錄;b.QT的ui界面設計師設計多個注冊登錄與主窗口界面,再由代碼注意好界面跳轉的細節(jié);c.中獎概率的設置及使用,ui界面設計師設計對應的更改概率按鈕;2本設計2.1程序框架選擇本設計采用的是以C++為基礎的ui設計師應用程序開發(fā)框架,完整的跨平臺軟件開發(fā)框架——QT。QT是一款1991年由QtCompany開發(fā)的跨平臺C++圖形界面設計師應用程序開發(fā)框架,至08年,Qt被諾基亞公司從Trolltech公司收購,而Qt也就成為了諾基亞旗下的程序開發(fā)工具。后又在三四年間幾經輾轉,被芬蘭的IT服務公司Digia所收購,又經過Digia公司幾年間的開發(fā),直到2019年,Digia公司正式發(fā)布了Qt5.13版本。Qt的基礎語言是C++,故而屬于面向對象的框架,由特殊的代碼擴展生成而被使用,還有一部分宏,QT允許我們工程師組件編程,并且很容易擴展。其實在根本上,Qt的類型與Windows平臺上的OWL,MFC,VCL,ATL以及X_Window上的GTK,Motif,Openwin等圖形ui界面設計庫都十分相近。由于QT是以C++為基礎的程序開發(fā)框架,故而沿襲了C++中的一些重要特性,其中最主要的就是包含了封裝、繼承、多態(tài)、抽象的四大面向對象的基本特征,例如QT中的QWidgetclass(界面窗口類)就是繼承于QObjectclass(控件類),以及QPushButton(按鈕控件類)繼承于QAbstractButtonclass(抽象按鈕類),而AbstractButtonclass又是繼承QWidgetclass,經過這樣一整條繼承鏈,這樣就可以通過繼承父類獲得多態(tài)化的各個窗口、空間、函數(shù)接口,而且可以實現(xiàn)子類內存由父類進行自動回收。并且QT有著幾大特點,可以在很大程度上對代碼編程進行簡化、優(yōu)化:1.QT具有極其優(yōu)良的跨平臺性,它能夠實現(xiàn)跨越多個平臺程序兼容部署,不僅限于windos以及l(fā)inux,乃至大多主流平臺、操作系統(tǒng):Android、ios、OS、FreeBSD、QNX、AIX等等(兼容內容不包括操作系統(tǒng)中特定的函數(shù)api接口),交叉編譯后也可以完美兼容于開發(fā)板、移動設備等,通過QT的這一特性,能夠實現(xiàn)一份代碼完全不用經過任何的修飾加工就可以完美移植并運行于其他的平臺/操作系統(tǒng)(不包含硬件本身問題的情況下,后文列舉相關內容作為反例)。2.QT能夠更加便利的設計GUI(GraphicalUserInterface,又稱圖形用戶接口),通過QT中的設計師界面配合著信號與槽函數(shù)以及QT中多達500多個類,豐富的API,能夠便捷的設計出功能更加復雜應用層窗口及控件。諸如YY語音、AdobePhotoShop、Googleearth都是通過Qt這一多功能的程序開發(fā)框架開發(fā)出來的應用產品。3.QT框架能夠完全兼容C語言及C++,并且加入了涵蓋了包括C語言、C++、以及QT中所特有的API接口的幫助手冊,該幫助手冊不僅涵蓋了各類函數(shù)接口的相關頭文件、返回值,以及所需的各項參數(shù),還標注出了該函數(shù)的父類(基類)和子類(派生類),以及與該函數(shù)的類相關聯(lián)的其他函數(shù)接口。2.2課題設計中的ui設計在本設計中,所有的窗口界面、按鈕都是由Qt中的函數(shù)接口以及設計師界面進行配合設計,以及運用到了Qt中所特有的槽函數(shù),將信號和槽組合在一起使用能夠實現(xiàn)控件與控件之間或者是控件與窗窗口之間的聯(lián)動。設計師窗口生成的對象在頭文件中進行聲明后,于想要設置ui界面的對象的構造函數(shù)中,通過調用setupUi函數(shù)即可設置ui界面。在Qt中,信號分為很多種,我們不僅可以在頭文件的signals關鍵字下對信號進行聲明,我們還可以使用控件本身自帶的相關接口。圖2.SEQ圖表2.2.\*ARABIC1信號于槽函數(shù)鏈接在這個窗口中顯示了該控件包含的信號接口以及接口的基類。在本次課程設計中,我們主要使用的按鈕信號有clicked()信號,選中后即可在設計師窗口對應對象的.cpp文件中生成槽函數(shù),并且在對應的.h頭文件中生成對應的函數(shù)聲明。當我們按下按鈕時,按鈕就會立即發(fā)出相關的clicked()點擊信號,當信號被對象接收到的時候,對象就會調用該槽函數(shù)中的算法函數(shù)進行操作。本課程設計的“登錄”、“注冊”還有“開始抽獎”以及“更改概率”都是使用這種方法來進行設計實現(xiàn)的。利用信號與槽的機制,實現(xiàn)點擊按鈕觸發(fā)事件,從而進行多界面跳轉和電子抽獎。2.3SQL數(shù)據(jù)庫使用戶登錄注冊信息的保存實現(xiàn)SQL(StructuredQueryLanguage)是一種數(shù)據(jù)庫語言,交互性是這種語言的一大特點,具有數(shù)據(jù)的操縱和定義等多種功能。這種語言能十分方便地為用戶提供許多簡易操作,我們可以完善利用SQL語言來提高本次課程設計中的計算機系統(tǒng)的工作質量與效率。這種語言不僅能獨立應用于終端,還可以作為子語言為其他程序設計提供有效助力,該程序應用中,SQL可與其他程序語言一起優(yōu)化程序功能,進而為用戶提供更多更全面的信息。在現(xiàn)代數(shù)據(jù)發(fā)展越來越快的趨勢下,數(shù)據(jù)庫系統(tǒng)的規(guī)模與數(shù)據(jù)類型還仍然在一直發(fā)展壯大,這使得數(shù)據(jù)庫管理帶來機遇的同時也帶來了一定的挑戰(zhàn)。在現(xiàn)代大數(shù)據(jù)的發(fā)展趨勢下,數(shù)據(jù)庫的應用也在不斷地發(fā)展壯大,是否能夠提升數(shù)據(jù)庫開發(fā)以及使用的效率,成為保障我國經濟生產以及生活質量保障關鍵的一個問題。SQL作為一種操作命令集,以其豐富的功能受到業(yè)內人士的廣泛歡迎,成為提升數(shù)據(jù)庫操作效率的保障。SQLServer數(shù)據(jù)庫的應用,能夠有效提升數(shù)據(jù)請求與返回的速度,有效應對復雜任務的處理,是提升工作效率的關鍵。由于SQLServers數(shù)據(jù)庫管理系統(tǒng)具有較高的數(shù)據(jù)管理性能,因其優(yōu)越的性能,應用范圍非常廣,大量應用于服務器和客戶體系結構中。SQLServers數(shù)據(jù)庫的性質主要由以下幾個方面體現(xiàn):系統(tǒng)的吞吐量、響應時間以及并行處理能力,發(fā)出請求服務器回應的速度、還有不同屏幕之間切換的速度等等。SQLServer數(shù)據(jù)庫包括MicrosoftSQLServer以及SybaseSQLServer兩個子數(shù)據(jù)庫,該數(shù)據(jù)庫能否正常運行直接關系著整個計算機系統(tǒng)的運行安全。QtSql類封裝完善,使用之前需要我們檢查是否包含<QtSql>庫。而本次課程設計在使用數(shù)據(jù)庫前,也在.pro文件底部加上QT+=sql一句。QT中的數(shù)據(jù)庫包含以下類:圖2.2QT數(shù)據(jù)庫包含的類QSqlDatabase類用于新建數(shù)據(jù)庫,如本課程設計中使用的://創(chuàng)建數(shù)據(jù)庫QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("password.db");QSqlQuery用來來執(zhí)行sql語句,如本課程設計中使用的://創(chuàng)建表格QSqlQueryquery;if(!query.exec("createtableifnotexistsuserpass(idintegerNOTNULLPRIMARYKEYAUTOINCREMENT,usernamevarchar(128)unique,passwordvarchar(256))")){qDebug()<<query.lastError().text();return-1;}其中,用if語句來判斷QT語句是否執(zhí)行創(chuàng)建成功,如果執(zhí)行失敗就返回-1。我們可以通過對界面中的輸入框輸入信息,使用QString類型的“QStringusername=ui->lineEdit->text();”語句來獲得界面中用戶所輸入的信息,在程序編寫的時候,如果想要加強數(shù)據(jù)庫使用的安全性,我們可以使用到Qt中已經給我們包裝好的的一些可提供安全加密的方法,例如:Md4,Md5,Sha1,Sha224,Sha256,Sha384,Sha512,Sha3_224,Sha3_256,Sha3_384,Sha3_512,當課程設計中需要使用到QT里面所擁有的加密方法時,可以直接使用Qt中的QCryptographicHash類來幫助我們進行加密。其中,本次課程設計使用到了這些加密方法中的MD5。首先需要創(chuàng)建語句“QCryptographicHashmdHash(QCryptographicHash::Md5);”然后將我們的密碼放進去進行加密“mdHash.addData(password.toUtf8());”,注意,這里需要將密碼轉化成utf8模式,不然會出現(xiàn)錯誤。然后將密碼進行加密,“QByteArraymd5password=mdHash.result();”“QStringpwd=md5password.toHex();”需要轉化成16進制數(shù)的字符串語句,才能完整實現(xiàn)密碼加密行為。圖2.3數(shù)據(jù)庫中密碼加密加密后我們可以發(fā)現(xiàn),密碼變成了一串由數(shù)字和字母組成的亂碼。這是因為我們使用的是MD5信息摘要算法(MD5Message-DigestAlgorithm),這種算法是一種可以產生出一個16字節(jié)的128位的散列值(hashvalue),被大多數(shù)人推廣使用的密碼散列函數(shù),傳輸完整一致的信息一般就是用這種方法來確保。輸入的信息被處理為512位分組,在一些內部處理進行前,需要先把每一個大分組劃分成為16個32位子分組,有四個32位分組來組成算法的輸出,一個128位的散列值將在級聯(lián)這四個32位分組后被生成。為什么要對數(shù)據(jù)庫中的一些信息進行必要的加密呢?這是為了增加數(shù)據(jù)庫信息的安全性。如果沒有采用任何的保密措施,直接把密碼的信息,以明碼的方式放置在數(shù)據(jù)庫中,這樣密碼的信息就可以輕易的被系統(tǒng)的管理員所拿到,如果這一系列信息被泄露,破譯這些密碼也會變得十分簡單。在選擇了密碼加密后,如果沒有相對應的解密算法,就算是整個數(shù)據(jù)庫被別人拿到了,原來的密碼信息也不會輕易被泄露出去。MD5算法解決了密碼安全這個問題,它獨特的工作方式,任意長度的輸入串會在被計算過之后,被它得到固定長度的輸出,就算相同的密文被得到,如果是明文不相同的話,而且不可逆是這個算法的特點,加密過后的密文即使被得到了,也不會被通過解密的算法,從而使得明文被反算出。如此便得以使用MD5值的方法把用戶的信息保護起來,在用戶想注冊信息的時候,系統(tǒng)在要去和系統(tǒng)中保存的MD5值獲取比較之前,要先去把用戶所輸入的信息改換成MD5值,只有在密文相同后,才可以將信息判定是正確的,反之則判定信息是錯誤的。在進行這些步驟之后,用戶登錄系統(tǒng)的行為是否合法,系統(tǒng)管理員在不知道用戶的信息明碼的情況下,就能夠進行判定。這樣不但可以在一定程度上使信息被破解的可能性降低,而且還不會讓用戶的信息被具有系統(tǒng)管理員權限的用戶知道這種情況出現(xiàn)。所以最后,使用數(shù)據(jù)庫語句將前面準備打包好的信息添加進入到數(shù)據(jù)庫當中,“QSqlQueryquery;query.exec(QString("select*fromuserpasswhereusername='%1'andpassword='%2'.arg(username).arg(pwd));”這樣一來,用戶的基本信息就完整的保存在數(shù)據(jù)庫當中,并且密碼已經加密。后面及時用戶退出登錄,想要再次進入系統(tǒng),不需要重復進行注冊,可以直接使用賬號密碼登錄,數(shù)據(jù)庫會比對信息后,發(fā)現(xiàn)匹配的值,實現(xiàn)登錄。2.4多界面跳轉在實現(xiàn)電子抽獎系統(tǒng)的交互之前,還應準備好實現(xiàn)平臺的多界面跳轉。程序存在著多個界面,如注冊界面,登錄界面和主界面,就需要使用到多界面跳轉進行處理。QT程序中可以添加新窗口,其中本此課程設計使用到的有MianWindow模板。首先點擊右鍵工程文件,選擇AddNew;圖2.4QT創(chuàng)建新界面然后選擇Qt設計師界面類;圖2.5QT新界面中的類型選擇MianWindow界面模塊,然后點擊下一步,為新界面命名regg,Qt就會為用戶自動生成相對應的regg.cpp類型源文件以及regg.h類型的頭文件。這樣就創(chuàng)建了一個新的界面,新界面中所需要操作的代碼可直接在自己界面中完善。值得注意的是:主窗口QMainWindow是獨立的窗口,可以嵌套包含widgetWidget往往用來嵌入到某個主窗口。具有窗口屬性的類與正常流程一樣,在構造對象的過程中,會調用構造函數(shù),而在正常退出時也會調用析構函數(shù)。所以一般將各類的參數(shù)對象初始化的過程放在構造函數(shù)中進行。新界面與原界面之間的跳轉,使用到show()函數(shù)。為了使程序正確運行,需要在新舊界面中包含對方的頭文件。在原界面中,為了跳轉到另外一個新的界面,需要先申請一片新的空間,如:regg*newwin=newregg(this);這樣就申請了一個新newwin界面,接著使用語句“newwin->show();this->hide();”將新界面顯示出來,而將舊界面隱藏起來。在這里使用的是隱藏,不是刪除,這個界面是等一下還需要使用的,數(shù)據(jù)也不需要清楚,所以使用隱藏。跳轉到新界面后,處理完該界面的事宜后,需要跳轉回到原來的登錄界面進行下一步。在這里我們可以進行一些簡易方便的操作:this->parentWidget()->show();先顯示上一級窗口,也就是父窗口,不需要像跳轉到新界面一樣麻煩,可直接調用parentWidget來達到目的。因為接下來不需要使用這個新界面了,又或者說這個界面的數(shù)據(jù)已經不需要使用了,所以接下來直接使用語句“deletethis;”將這個界面殺死,也就是刪除這個界面。在后面的各個界面跳轉中,也是如此,只要注意好界面跳轉時候我們是否需要刪除界面,又或者是跳轉到界面的上一級,都可以進行這些簡易操作,從而減少代碼量,減少程序運行的時間。2.5電子抽獎中的隨機數(shù)在編寫本次課程設計的時候,我們會需要一個隨機數(shù)的生成器——rand(),來幫助我們的電腦來生成一個隨機的整數(shù)。這個rand()函數(shù)會幫助生成一個隨機整數(shù),位于0~RAND_MAX之間。什么是RAND_MAX?它是一個用來指明rand()所能返回的隨機數(shù)的最大值的宏,存在于
<stdlib.h>頭文件中的。C語言標準僅僅規(guī)定它的值至少為32767,并無具體規(guī)定RAND_MAX的數(shù)值。在本次課程設計編程中,我們只是把它當做一個很大的數(shù)來看待就行,并不需要知道RAND_MAX所代表的具體數(shù)。系統(tǒng)會自動調用srand()函數(shù),就在調用rand()函數(shù)的之前。srand()也是<stdlib.h>中的一個函數(shù),它會為rand()函數(shù)提供一個隨機數(shù)種子。系統(tǒng)會使用srand()函數(shù)來產生一個隨機數(shù)種子,就在我們調用rand()函數(shù)的之前。如果系統(tǒng)使用的是相同的隨機數(shù)種子的話,會導致使用rand()函數(shù)的時候,會產生一樣的隨機數(shù)隊列。一般系統(tǒng)會給提供一個默認的參數(shù),在用到rand()之前,我們需要自己為srand()函數(shù)初始另外一個參數(shù)。假設這個參數(shù)是一個常量的話,得到的隨機數(shù)是偽隨機數(shù),例如srand(0)。因為我們需實現(xiàn)產生不一樣的隨機數(shù),要提供的是不一樣的隨機數(shù),所以要讓srand()函數(shù)的參數(shù)為不同的數(shù)。因為時間是不斷更新改變的,因此就借助系統(tǒng)內部來獲取不同的時間,從而得到不同的種子。所以我們使用函數(shù)time(NULL),借以返回來一個單位為秒的計算機的時間。在調用srand()函數(shù)時,使用系統(tǒng)定時/計數(shù)器的值time(NULL)作為隨機種子參數(shù)給srand(),時間是連續(xù)不間斷,生成的種子也會是一直變化的。通過這種方法,rand()函數(shù)就能一直生成不同的隨機數(shù)了。如果還是認為種子的間隔太小,可以讓(unsigned)time(NULL)參數(shù)的后面再乘以任意的值。就比如(unsigned)time(NULL)*10。另外本次課程設計還要求規(guī)范好隨機數(shù)的取值大小的范圍。規(guī)范隨機數(shù)的取值范圍,需要取模也就是取余。例如k=rand()%(Y-X+1);其中,rand()%Y-X+1是產生Y-X+1的隨機數(shù)。這樣,我們就能自己設計出程序中所需要的隨機數(shù)的任何范圍了。本次課程設計中只需要取0~100的數(shù)即可,所以在rand()后面%100。因為C++與C語言是可以兼容的,所以在注意添加隨機數(shù)與時間函數(shù)的頭文件后,我們可以得到系統(tǒng)所給的隨機數(shù)后,就可以對這個隨機數(shù)進行判斷,與抽獎所需要的概率進行對比,就可以判定本次抽獎是否中獎。中獎概率可以由界面上的輸入框獲得,商家可以登錄系統(tǒng)進行概率的修改。獲得概率后,可以讓系統(tǒng)給出一個隨機數(shù),與獲得的概率進行對比,如果給出的隨機數(shù)大于概率的值,就默認為該名用戶本次抽獎成功中獎的概率大于本次中獎的概率,因此判定本次抽獎該名用戶成功中獎。如果概率獲得大小比對結果相反,則判定本次抽獎未能中獎。因為使用的是時間獲取的隨機數(shù),每一次都是不一樣的,能保證獲得的數(shù)值是隨機生成無規(guī)律的,所以并不需要懷疑本次隨機數(shù)的穩(wěn)定性與正確性,間接的保證了抽獎系統(tǒng)的穩(wěn)定可靠性。
2.6電子抽獎中的消息盒子Qt中自帶準備有一些繼承QDialog類的對話框類型,關系圖如下所示:
圖2.6QT中的對話框類其中,我們使用的是MessageBox類中的消息對話框,也可以叫做消息盒子。消息對話框(MessageBox),繼承于QDialog類,為我們準備了一個模態(tài)對話框,被用來給提出用戶一個問題,然后取到一個答復;或者被用來通知用戶某些信息。被使用最多的消息對話框,一般是用來提供給用戶執(zhí)行一些能夠進行選擇的操作或者是用來提示一些無需選擇的信息。消息盒子有幾種類型:圖2.7消息盒子類型其中主要就是這四種:問題消息盒子、信息消息盒子、警告消息盒子和危險消息盒子。消息盒子在彈出來后可以設置選項,提供給用戶點擊確認。不同的選項有不同的參數(shù)。例如以下幾種常見的參數(shù):圖2.8消息盒子參數(shù)類型在本次課程設計中使用到的是,Ok確認選項。因為本次課程設計中的消息盒子僅僅提供最后的消息確認,不需要用戶進行多余的操作,所以只需要點擊確認即可退出消息盒子,進行下一步操作。首先需要創(chuàng)建消息盒子,使用QMessageBox類。QMessageBox::QMessageBox(QMessageBox::Iconicon,constQString&title,constQString&text,QMessageBox::StandardButtonsbuttons,QWidget*parent=nullptr,Qt::WindowFlagsf=Qt::Dialog|Qt::MSWindowsFixedSizeDialogHint)創(chuàng)建一個完整的消息盒子我們需要使用到幾個參數(shù)。首先是四個需要我們定義好的參數(shù)。第一個是QMessageBox::Iconicon我們配的是this參數(shù),因為我們是在此界面使用消息盒子,因此this就可以。第二個是constQString&title,我們需要創(chuàng)建一個QString類型的字符串,const修飾的是我們不能修改這個字符串的值,需要我們初始化這個字符串后不能修改。這個字符串存放的是這個消息盒子的主題,也就是消息盒子的標題,本次課程設計基本上都是使用“溫馨提示”來作為消息盒子的主題。第三個參數(shù)是constQString&text,與第二個一樣const修飾,創(chuàng)建一個字符串,這個存放的是消息盒子的內容,也就是消息盒子的正文內容。第四個參數(shù)是QMessageBox::StandardButtonsbuttons,就是前面所描述的,消息盒彈出來后,提供給用戶點擊確認的按鍵類型。本次課程設計基本都是使用“Ok”類型,用戶點擊確認即可。后面的幾個參數(shù)都是帶默認參數(shù)的,我們可以不需要對其進行修改或填寫,因此創(chuàng)建一個消息盒子就需要填寫好這四個參數(shù),在需要的時候消息盒子就會跳出,完成項目需要。2.7交叉編譯QT程序到開發(fā)板上運行隨著現(xiàn)代嵌入式越來越廣泛發(fā)展,交叉編譯這個概念也伴隨著嵌入式一起出現(xiàn)并流行。一般的計算機軟件,都需要先經預處理、編譯和匯編這三個過程,把使用高級計算機語言編寫的代碼先預處理,這時候文件還是計算機文件。再經過編譯,檢查程序中語法是否正確,將文件變成匯編文件。接著進行匯編,將程序地址重新排列。最后編譯成可供計算機執(zhí)行的二進制代碼。舉個例子,編寫一個在Windows平臺上編譯的簡單程序,這樣子的話,我們使用PC平臺上的Windows開發(fā)工具來編譯這些的可執(zhí)行程序,這種編譯過程被稱為本機編譯(nativecompilation)。在嵌入式系統(tǒng)的開發(fā)時,會出現(xiàn)一些不理想的情況,就是運行程序的目標平臺,一般都是擁有的運算能力和存儲空間能力十分有限。一般的編譯工具鏈對CPU的運算能力有一定的要求,并且需要很大的存儲空間。因為有這種情況出現(xiàn),想單純在ARM平臺上自我進行本機編譯的話,條件就不是很好了。因此交叉編譯工具就是為了解決這種情況而應運而生。所以只要我們想編譯出運行于其他平臺的可執(zhí)行二進制程序,就可以借助交叉編譯工具,在存儲空間夠大、CPU運算能力不低的主機上進行操作。在進行交叉編譯之前,需要提前把對應的交叉編譯工具鏈在主機平臺上下載安裝好。Windows上QT編譯程序的原理是:點擊編譯運行按鈕,然后到QTcreator自動調用qmake命令去執(zhí)行Makefile文件自動編譯程序。而如果想要把QT程序編譯運行到6818開發(fā)板,就需要使用交叉編譯器來進行。有一種直接的方法可以不需要交叉編譯器幫忙,就是使用安裝linux版本的QT程序(.run結尾就是)。不過linux版本的QT默認使用的gcc和g++這兩個編譯器(而且編譯用到的庫文件也是X86架構),而我們開發(fā)板上的QT程序必須是ARM架構。所以需要我們自己從QT官網中下載QT庫的源碼,交叉編譯成ARM版本的庫文件才可以使用。然而QT庫的源碼以及編譯步驟比較復雜,且編譯時間有點長,而且需要依賴第三方庫,十分不方便我們學生使用,所以我們還是需要在ubuntu上搭建ARM版本QT的庫。具體的操作步驟有以下幾點:第一步:把編譯好的ARM版的QT庫壓縮包拷貝到ubuntu的/usr/local中然后解壓執(zhí)行l(wèi)inux語句:tar-xfQt-Embedded-5.7.0.tar.xz第二步:安裝新版本的arm編譯工具,最好是5.4.0這個版本的ARM工具。第三步:使用剛才搭建好的QT庫編譯你的QT程序,執(zhí)行l(wèi)inux語句:/usr/local/Qt-Embedded-5.7.0/bin/qmake來幫助我們生成Makefile,接著make即可自動編譯QT程序。2.8基于ARM的cortex-A53的6818平臺ARM公司在經典處理器ARM11以后的產品改用Cortex命名,并分成A、R和M三類,旨在為各種不同的市場提供服務。Cortex系列屬于ARMv7架構,這是到2010年為止ARM公司最新的指令集架構。(2011年,ARMv8架構在TechCon上推出)ARMv7架構定義了三大分工明確的系列:“A”系列面向尖端的基于虛擬內存的操作系統(tǒng)和用戶應用;“R”系列針對實時系統(tǒng);“M”系列對微控制器。簡單來說,Cortex就是ARM公司一個系列處理器的名稱。ARM在Cortex-A系列處理器大體上可以排序為:Cortex-A57處理器、Cortex-A53處理器、Cortex-A15處理器、Cortex-A9處理器、Cortex-A8處理器、Cortex-A7處理器、Cortex-A5處理器、ARM11處理器、ARM9處理器、ARM7處理器,再往低的部分手機產品中基本已經不再使用,這里就不再介紹。[3]
需要指出的是,單從命名數(shù)字來看Cortex-A7似乎比A8和A9低端,但是從ARM的官方數(shù)據(jù)看,A7的架構和工藝都是仿照A15來做的,單個性能超過A8并且能耗控制很好。另外A57和A53屬于ARMv8架構。而在本次課程設計中,所使用到的是cortex-A53的6818開發(fā)板。該開發(fā)板名稱:GEC6818,在板子中央的核心板,有S5P6818(八核)的處理器CPU。內核即為Cortex-A53。底板資源有電源口:限制電壓5V;串口:里面遵循串口協(xié)議,主要用于開發(fā)板與電腦之間數(shù)據(jù)通信。;音頻輸出輸入:耳機/麥克風;USB口(2個):外接USB設備,例如:攝像頭、WIFI模塊、U盤,這方便我們可以使用鼠標鍵盤進行板子的交互。要實現(xiàn)與cortex-A53的6818開發(fā)板進行串口交互,需要我們另外準備使用一個工具:SecureCRT。這個工具可以實現(xiàn)串口通信,在此之前還需要做以下幾種配置:1.協(xié)議:serial->代表串口協(xié)議。2.端口:COMX->3.波特率:115200->如果不是115200,數(shù)據(jù)就會出現(xiàn)亂碼。4.數(shù)據(jù)位:85.奇偶校驗位:None6.停止位:17.流控:將全部的選項都去掉->如果不打掉,鍵盤控制不了開發(fā)板。在完成這些配置后,重啟開發(fā)板,在SecureCRT的對話框中,“[root@GEC6818/]#”按"回車"有反應即可進行通信,如果沒有反應,證明流控沒有去掉打鉤。確定可以通信后,使用板子自帶的一個串口工具:rx。rx工具存在于跟目錄下的bin目錄中,由于/bin在環(huán)境變量PATH,所以可以在任何的路徑下使用rx。使用格式:rx路徑。;例如:[root@GEC6818/]#rxhello.c,接著要點擊SecureCRT界面中的"傳輸"選項,找到我們需要發(fā)送下載的程序,選擇后發(fā)送。在確定文件已經成功下載到板子后,需要進行修改文件的權限,只有為最高修改權限后才能對文件進行我們想要的所有操作。在對話框中輸入chmod777/bin/+文件名字,例如:[root@GEC6818/bin]#chmod777/bin/hello.c。最后就可以執(zhí)行程序,輸入./文件名字即可。3.結論在本次課程設計之中使用到了QT的工程創(chuàng)建編寫、ui界面的設計、SQL數(shù)據(jù)庫的應用以跨平臺的交叉編譯。得益于QT中的成熟的各種函數(shù)與C++類的封裝,在編寫工程代碼的時候減少了許多繁瑣的工作。QT的ui界面設計師中的各種控件,使ui界面的設計變得簡易許多,盡管我的個人能力有限,也能做出系統(tǒng)的各個界面,雖然還是感覺有點簡陋。本次課程設計大大加深了我對數(shù)據(jù)庫的理解和應用。不僅認識到數(shù)據(jù)庫的編寫操作,還認識到QT中特有的數(shù)據(jù)庫操作,添加數(shù)據(jù)庫模塊后,有許多類與函數(shù)提供給我使用,大大簡化了對數(shù)據(jù)庫的操作,方便數(shù)據(jù)庫語句的編寫。同時,QT是基于C++語言的,這次課程設計也讓我對C++的應用有了更深刻的理解認知。C++的博大精深讓我為之震撼,也讓我深深著迷,使我忍不住想繼續(xù)深入學習這門充滿魅力的計算機語言。我相信,這次課程設計只會是一個開始,讓我繼續(xù)深入學習軟件編程的開始,QT和C++的使用讓我學習到了許多知識,尤其在克服一個個難題后的成就感,讓我堅定這些知識值得我不斷去探究。參考文獻[1]李繼勝.基于ARM芯片的嵌入式語音處理系統(tǒng)[D].陜西師范大學,2006.[2]姜仲秋等主編,C語言程序設計,南京大學出版社,1998.[3]孫娟紅.基于C語言的計算機軟件編程技術[J].科技風,2019(27):74.[4]謝川.嵌入式Liunx開發(fā)基礎[M].北京:中國鐵道出版社,2011.[5]《C程序設計(第二版)》,譚浩強編,清華大學出版社,1999年12月。[6]《C語言編程常見問題解答》,[美]PaulChishohm等著,張芳妮呂波譯,清華大學出版社,1996年[7]苻玲美.C語言的溢出錯誤分析與防范[J]2019(09):42-43+46.[8]陳心靈,錢寧博,胡佳輝,王戰(zhàn)中.基于STM32單片機的嵌入式語音識別系統(tǒng)設計[J].機電工程技術,2019,48(06):135-137.[9]李勇,蔡利強,譚國炎,陳豪,寸超.基于STM32單片機的家居設備語音控制系統(tǒng)設計[J].科技與創(chuàng)新,2018(05):130-131.[10]吳偉堅,陳世國.基于ARM-LINUX的多網物聯(lián)網關的設計與實現(xiàn)[J].電子世界,2018(10):119-120+123.謝辭在本次課程設計中,我要感謝我畢業(yè)設計指導老師——陳景國,老師對我們畢業(yè)的事宜相當上心,給了我們相當多的指導以及幫助。還要感謝我的老師張杰英以及蔣亮,他們教導我們進行了C語言、C++、以及Qt的學習,并且也為我解答了一些相關的問題,給了我非常多的幫助。附錄附錄一:#ifndefDRL_H#defineDRL_H#include<QMainWindow>namespaceUi{classdrl;}classdrl:publicQMainWindow{Q_OBJECTpublic:explicitdrl(QWidget*parent=nullptr);~drl();privateslots:voidon_pushButton_clicked();voidon_pushButton_2_clicked();voidon_pushButton_6_clicked();voidon_pushButton_3_clicked();voidon_pushButton_4_clicked();private:Ui::drl*ui;intget1=0,get2=0,get3=0;inta1=0,a2=0;};#endif//DRL_H附錄二:#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include<QSqlDatabase>#include<QSqlQuery>#include<QSqlError>#include<QDebug>#include<QSqlRecord>namespaceUi{classMainWindow;}classMainWindow:publicQMainWindow{Q_OBJECTpublic:explicitMainWindow(QWidget*parent=nullptr);~MainWindow();privateslots:voidon_pushButton_clicked();voidon_pushButton_2_clicked();private:Ui::MainWindow*ui;};#endif//MAINWINDOW_H附錄三:#ifndefREGG_H#defineREGG_H#include<QMainWindow>namespaceUi{classregg;}classregg:publicQMainWindow{Q_OBJECTpublic:explicitregg(QWidget*parent=nullptr);~regg();privateslots:voidon_regbt_clicked();voidon_retbt_clicked();private:Ui::regg*ui;};#endif//REGG_H附錄四:#include"drl.h"#include"ui_drl.h"#include"mainwindow.h"#include<stdlib.h>#include<time.h>#include<QMessageBox>#include<QDebug>drl::drl(QWidget*parent):QMainWindow(parent),ui(newUi::drl){ui->setupUi(this);}drl::~drl(){deleteui;}voiddrl::on_pushButton_clicked(){//先顯示上一級窗口(登錄窗口)this->parentWidget()->show();//把當前主界面關閉deletethis;}voiddrl::on_pushButton_2_clicked(){get1=ui->lineEdit1->text().toInt();}voiddrl::on_pushButton_3_clicked(){get2=ui->lineEdit1_2->text().toInt();}voiddrl::on_pushButton_4_clicked(){get3=ui->lineEdit1_3->text().toInt();}voiddrl::on_pushButton_6_clicked(){srand((unsignedint)time(0)*10);inta=rand()%100;//qDebug()<<a;if(a<get1){QMessageBox::warning(this,"溫馨提示","恭喜中一等獎!",QMessageBox::Ok);}if(get1<=a<get2){QMessageBox::warning(this,"溫馨提示","恭喜中二等獎!",QMessageBox::Ok);}if(get2<=a<get3){QMessageBox::warning(this,"溫馨提示","恭喜中三等獎!",QMessageBox::Ok);}if(get3<=a){QMessageBox::warning(this,"溫馨提示","再接再厲",QMessageBox::Ok);}}附錄五:#include"mainwindow.h"#include<QApplication>#include<QSqlDatabase>#include<QSqlQuery>#include<QSqlError>#include<QDebug>intmain(intargc,char*argv[]){QApplicationa(argc,argv);//創(chuàng)建數(shù)據(jù)庫QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("password.db");if(!db.open()){qDebug()<<db.lastError().text();return-1;}//創(chuàng)建表格QSqlQueryquery;if(!query.exec("createtableifnotexistsuserpass(idintegerNOTNULLPRIMARYKEYAUTOINCREMENT,""usernamevarchar(128)unique,passwordvarchar(256))")){qDebug()<<query.lastError().text();return-1;}MainWindoww;w.show();returna.exec();}附錄六:#include"mainwindow.h"#include"ui_mainwindow.h"#include<QCryptographicHash>#include"regg.h"#include<QMessageBox>#include<drl.h>MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);}MainWindow::~MainWindow(){deleteui;}//跳轉注冊界面voidMainWindow::on_pushButton_clicked(){regg*newwin=newregg(this);newwin->show();this->hide();}voidMainWindow::on_pushButton_2_clicked(){QStringusername=ui->lineEdit->text();QStringpassword=ui->lineEdit_2->text();//對密碼進行加密QCryptographicHashmdHash(QCryptographicHash::Md5);mdHash.addData(password.toUtf8());QByteArraymd5password=mdHash.result();QStringpwd=md5password.toHex();QSqlQueryquery;query.exec(QString("select*fromuserpasswhereusername='%1'andpassword='%2'").arg(username).arg(pwd));if(query.next()){drl*newmain=newdrl(this);newmain->show();this->hide();//qDebug()<<"登錄成功";}else{QMessageBox::warning(this,"溫馨提示","密碼錯誤",QMessageBox::Ok);//qDebug()<<"登錄失敗";}}附錄七:#include"regg.h"#include"ui_regg.h"#include"mainwindow.h"#include"QDebug"#include<QCryptographicHash>#include<QMessageBox>regg::regg(QWidget*parent):QMainWindow(parent),ui(newUi::regg){ui->setupUi(this);}regg::~regg(){deleteui;}voidregg::on_regbt_clicked(){QStringusername=ui->lineEdit->text();QStringpassword=ui->lineEdit_2->text();//對密碼進行加密QCryptographicHashmdHash(QCryptographicHash::Md5);mdHash.addData(password.toUtf8());QByteArraymd5password=mdHash.result();QStringpwd=md5password.toHex();//qDebug()<<md5password.size();//qDebug()<<password<<QString(md5password.toHex());QSqlQueryquery;query.prepare("insertintouserpass(username,password)values(?,?)");query.bindValue(0,username);query.bindValue(1,pwd);if(!query.exec()){qDebug()<<query.lastError().text();return;}QMessageBox::warning(this,"溫馨提示","注冊成功!",QMessageBox::Ok);}voidregg::on_retbt_clicked(){//先顯示上一級窗口(登錄窗口)this->parentWidget()->show();//把當前主界面關閉deletethis;}
電腦無法識別U盤該怎么辦HYPERLINK電腦無法識別U盤怎么辦?打開我的電腦上單擊右鍵,在快捷菜單里,選擇“管理”,打開“計算機管理”窗口。在計算機管理窗口里,選擇“存儲”下面的“磁盤管理”,如果看得到沒有盤符的U盤,那么在這個U盤上按鼠標右鍵,選擇“更改驅動器名稱和路徑”選項,就打開了“更改……的驅動器號和路徑”對話框。再點擊“更改”按鈕,打開“更改驅動器號和路徑”的對話框,在“指定以下驅動器號”的右邊下拉列表里,選擇你希望分配給U盤的驅動器號,盡可能靠后選擇,比如X、Y、Z,選擇好后,單擊確定按鈕,回到上一次“更改……的驅動器號和路徑”對話框窗口,再一次單擊確定,就回到“計算機管理”窗口。至此,如果一切正常,就給U盤單獨設置了一個長久使用的驅動器號,并卻,不受虛擬驅動器的影響了。建議將U盤插到電腦上,看任務欄中是否顯示圖標,如果顯示,在我的電腦點右鍵查看屬性——高級——硬件——設備管理器——查看里面是否有問號的設備,在問號設備上點右鍵——更新驅動程序然后下一步——否暫時不連接到網絡——下一步自動安裝軟件(推薦)就可以了另外:系統(tǒng)不認U盤的幾種處理方法1.禁用主板usb設備。管理員在CMOS設置里將USB設備禁用,并且設置BIOS密碼,這樣U盤插到電腦上以后,電腦也不會識別。這種方法有它的局限性,就是不僅禁用了U盤,同時也禁用了其他的usb設備,比如usb鼠標,usb光驅等。所以這種方法管理員一般不會用,除非這臺電腦非常重要,值得他舍棄掉整個usb總線的功能。但是這種屏蔽也可以破解,即便設置了密碼。整個BIOS設置都存放在CMOS芯片里,而COMS的記憶作用是靠主板上的一個電容供電的。電容的電來源于主板電池,所以,只要把主板電池卸下來,用一根導線將原來裝電池的地方正負極短接,瞬間就能清空整個CMOS設置,包括BIOS的密碼。隨后只需安回電池,自己重新設置一下CMOS,就可以使用usb設備了。(當然,這需要打開機箱,一般眾目睽睽之下不大適用~~)2.修改注冊表項,禁用usb移動存儲設備。打開注冊表文件,依次展開"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbehci”雙擊右面的“Start”鍵,把編輯窗口中的“數(shù)值數(shù)據(jù)”改為“4”,把基數(shù)選擇為“十六進制”就可以了。改好后注銷一下就可以看見效果了。為了防止別人用相同的方法來破解,我們可以刪除或者改名注冊表編輯器程序。提示:“Start”這個鍵是USB設備的工作開關,默認設置為“3”表示手動,“2”是表示自動,“4”是表示停用。3.在computermanagement里將removablestorage的使用權限禁止。computermanagement是一個windows管理組件,可以在控制面板——管理工具——計算機管理打開。在該工具窗口中storage——removablestorage——property中,general項,可以控制系統(tǒng)托盤是否顯示security則可以管理移動存儲設備的使用權限。在security中將普通用戶的使用權限降低,就可以達到禁用u盤的目的。破解的方法也很簡單,管理員降低普通用戶移動存儲設備的使用權限,但未必禁用computermanagement的使用權限。普通用戶可以通過這個工具解除usb移動存儲設備的使用權限限制。另外,值得一提的是,如果u盤插到電腦上后可以驅動,但是我的電腦里卻沒有盤符,很有可能是管理員改動了u盤的默認盤符,使得我的電腦不能識別。這種情況,可以在movablestorage中看到u盤驅動器??梢栽趗盤驅動器屬性設置里為u盤重新分配一個盤符,再重新插拔一次u盤,就可以在我的電腦里看到u盤的盤符了。一、首先可以將該U盤換到別的機器上,看使用是否正常。如果排除了硬件損壞的可能,一般就是軟件方面有問題。在WindowsXP+SP1操作系統(tǒng)下,有些USB2.0設備的確常常出現(xiàn)工作不穩(wěn)定的問題,可以試試安裝設備自帶的USB2.0驅動程序。另外最好不要使用USB延長線,防止因為供電不足而造成不穩(wěn)定現(xiàn)象。如果仍無效,可以在主板BIOS設定中,將USB接口強行設置為USB1.1傳輸速率。二、(適用于WIN98)啟動計算機,進入主板BIOS設置,檢查BIOS中USB的相關選項是否已經打開:OnChipUSB設定為Enabled;USBController設定為Enabled;PNPOSInstalled設定為Yes;AssignIRQForUSB設成Enabled。要正常使用USB設備首先要開啟USB接口,在主板BIOS里可以進行此項工作,一般來說只需在BIOS中進入ChipsetFeatures設置,并將USBKeyborad/MouseLegacy選項設定為Enable,就能夠保證在操作系統(tǒng)下使用USB鍵盤了。這些選項的作用是打開主板芯片組對USB設備的完全支持,為系統(tǒng)識別USB設備做準備工作。三、USB口接觸不好處理辦法:拔下,等十秒鐘再插上USB口,使接觸完好;五、閃存盤驅動程序沒有安裝完成(WIN98系統(tǒng)下)處理辦法:鼠標點“我的電腦”,選擇屬性找到“通用串行總線”,刪除其中的USBMASSSTORAGE項,再點擊“刷新”,然后按照提示重新安裝一次驅動程序。六、接其它USB設備(如掃描儀、打印機、數(shù)碼相機)時可以正常使用,接優(yōu)盤時閃指示燈不亮,不能夠使用。1、檢查優(yōu)盤與電腦的聯(lián)接是否正常,并換用其它USB接口測試。2、檢查設備管理器,看是否出現(xiàn)”通用總線設備控制器”條目,如果沒有,請將電腦主板BIOS中USB接口條目*激活(ENABLE)。3、如果電腦安裝過其它類型USB設備,卸載該設備驅動程序,并首先安裝優(yōu)盤驅動程序。4、到其它電腦試用此優(yōu)盤,確認是否優(yōu)盤不良。七、啟動型優(yōu)盤在的電腦上無法實現(xiàn)啟動,可能是主板型號不支持。如何判斷一塊主板是否支持閃存盤啟動系統(tǒng)啟動型優(yōu)盤是采用模擬USB軟驅和USB硬盤的方式啟動電腦的。只要電腦主板支持USB設備啟動,即BIOS的啟動選項中有USB-FDD、USB-HDD或是其它類似的選項,就可以使用啟動型優(yōu)盤啟動電腦。八、第一次在電腦上使用優(yōu)盤,未出現(xiàn)提示發(fā)現(xiàn)新硬件的窗口,驅動程序無法安裝的原因可能是:1、主板usbcontroller未啟用解決辦法:在電腦主板BIOS中啟用此功能。2、usbcontroller已經啟用但運行不正常解決辦法:在設備管理器中刪除”通用串行控制器”下的相關設備并刷新。3、優(yōu)盤被電腦識別異常,在設備管理器中表現(xiàn)為帶有黃色?或!的”其它設備”或“未知設備”。解決辦法:刪除此設備并刷新。九、大容量的U盤(例如兼具MP3播放器或錄音功能的U盤)或移動硬盤在電腦上無法正常使用,雖然系統(tǒng)提示找到了未知的USB設備,但無法正確識別U盤或移動硬盤。原因可能是:1.USB接口供電不足:系統(tǒng)為每個USB接口分配了500mA的最大輸出電流,一般的U盤只需要100mA的工作電流,因此在使用過程中不會出現(xiàn)什么問題。大多數(shù)移動硬盤所使用的是普通的2.5英寸硬盤,其工作電流介于500mA~1000mA之間,此時假如僅僅通過USB接口供電,當系統(tǒng)中并無其他USB設備時,那么還是可以勉強使用的,但如果電壓不穩(wěn)的話,就隨時可能出現(xiàn)供電不足的問題。特別是使用支持USB2.0的移動硬盤時,情況最為嚴重。另外,如果你的筆記本電腦使用電池供電,那么USB接口所分配的電量就更小了。2.使用了外接的USB擴展卡:在筆記本電腦中使用USB2.0的U盤或移動硬盤時,如果筆記本電腦不支持USB2.0技術,一般必須通過PCMCIA卡轉USB2.0的擴展卡來間接實現(xiàn)支持,這些擴展卡基本上都采用NEC公司的D720100AGMUSB控制芯片,少則提供兩個USB2.0接口,多則提供五個USB2.0接口,對一般用戶而言足夠使用了。由于PCMICA接口提供的電源功率比板載USB接口要小,這樣就會由于供電不足而導致移動硬盤工作的出現(xiàn)問題。解決方案:1.它從USB連接線上接移動硬盤的一端引出一根轉接線,可以插入電腦背后的PS/2接口取電,這里可以比USB接口提供更大的電流輸出。2.利用電源補償線(也稱“鍵盤取電線”),如果U盤或移動硬盤的包裝盒中提供了選配的電源適配器,你就可以直接使用外接電源,這樣就可以從根本上避免供電不足的情況發(fā)生了前置USB線接錯。當主板上的USB線和機箱上的前置USB接口對應相接時把正負接反就會發(fā)生這類故障,這也是相當危險的,因為正負接反很可能會使得USB設備燒毀。所以盡量采用機箱后置的USB接口,也少用延長線.也可能是斷口有問題,換個USB端口看下.USB接口電壓不足。當把<ahref="mobileharddisk">移動硬盤</a>接在前置USB口上時就有可能發(fā)生系統(tǒng)無法識別出設備的故障。原因是<ahref="">移動硬盤</a>功率比較大要求電壓相對比較嚴格,前置接口可能無法提供足夠的電壓,當然劣質的電源也可能會造成這個問題。解決方法是<ahref="">移動硬盤</a>不要接在前置USB接口上,更換劣質低功率的電源或盡量使用外接電源的硬盤盒,假如有條件的話。主板和系統(tǒng)的兼容性問題。呵呵這類故障中最著名的就是NF2主板與USB的兼容性問題。假如你是在NF2的主板上碰到這個問題的話,則可以先安裝最新的nForce2專用USB2.0驅動和補丁、最新的主板補丁和操作系統(tǒng)補丁,還是不行的話嘗試著刷新一下主板的BIOS一般都能解決。系統(tǒng)或BIOS問題。當你在BIOS或操作系統(tǒng)中禁用了USB時就會發(fā)生USB設備無法在系統(tǒng)中識別。解決方法是開啟與USB設備相關的選項。就是開機按F2或DEL鍵,進入BIOS,把enableusbdevice選擇enable。拔插要小心,讀寫時千萬不可拔出,不然有可能燒毀芯片。XP中任務欄中多出USB設備的圖標,打開該圖標就會在列表中顯示U盤設備,選擇將該設備停用,然后你再拔出設備,這樣會比較安全。
其實判斷軟件硬件問題很簡單,在別的機器或換個系統(tǒng)試試就可以了.有些小的問題不妨先用專門軟件格式化下.還有提醒大家WINDOWS下格式化時要選擇FAT,不要選FAT32。
提示無法識別的USB設備維修
故障提示如圖:
無法識別的USB設備:UnknownUSBDevice.很多人都遇到過的一個問題,所謂“無法識別”對于操
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《特種設備規(guī)范》課件
- 煤礦瓦斯治理新技術
- 出租汽車行業(yè)服務質量評價與提升策略
- 二零二五年度生態(tài)環(huán)保產業(yè)投資履約類保函擔保合同4篇
- 龍泉煤礦下放25T鏟運車調研情況
- 二零二五年度古建筑專用標磚定制購銷協(xié)議3篇
- 不安全行為應急管理與處置
- 二零二五版食堂泔水處理與無害化處理設施建設合同3篇
- 二零二五年度牙科醫(yī)院患者滿意度提升承包服務合同4篇
- 2025年度大棚養(yǎng)殖基地產權轉讓及合作開發(fā)協(xié)議4篇
- 使用錯誤評估報告(可用性工程)模版
- 公司章程(二個股東模板)
- GB/T 19889.7-2005聲學建筑和建筑構件隔聲測量第7部分:樓板撞擊聲隔聲的現(xiàn)場測量
- 世界奧林匹克數(shù)學競賽6年級試題
- 藥用植物學-課件
- 文化差異與跨文化交際課件(完整版)
- 國貨彩瞳美妝化消費趨勢洞察報告
- 云南省就業(yè)創(chuàng)業(yè)失業(yè)登記申請表
- UL_標準(1026)家用電器中文版本
- 國網三個項目部標準化手冊(課堂PPT)
- 快速了解陌生行業(yè)的方法論及示例PPT課件
評論
0/150
提交評論