版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 飛思卡爾智能汽車MATLAB GUI上位機制 作 說 明學 校: 廣東工業(yè)大學 學 院: 信息工程學院 作 者: 文新懿 指 導(dǎo): 王日明 日 期: 2010年12月01日 關(guān)于此文檔的制作與使用簡要說明 本文為飛思卡爾智能車上位機制作說明,該作品使用MATLAB GUI編寫,通過串口實現(xiàn)電腦和下位機之間的通訊及數(shù)據(jù)分析處理。由于本人技術(shù)水平及時間所限,此作品僅完基本框架部分,具體模塊及功能需要由其他人員完善。為此,本人編寫此文檔詳細說明學習、制作流程,以方便交流學習。希望此文檔能為你提供幫助,謝謝!目 錄第一章 引 言1第二章 MATLAB GUI先備知識22.1 MATLAB學習網(wǎng)址22
2、.2 MATLAB GUI學習視頻2第三章 上位機方案設(shè)計33.1 總體結(jié)構(gòu)33.2 登陸界面UCS GUI43.3 數(shù)據(jù)錄入界面 login GUI43.4 圖線分析界面 analysis GUI5第四章 簡單操作說明54.1 軟件需求54.2 上位機操作5第五章 主要功能說明65.1 MATLAB串口通信65.2 圖線數(shù)據(jù)顯示6第六章 具體問題與解決方案76.1 GUI界面切換76.2 按鈕外觀編輯76.3 串口清除86.4 二進制文件相關(guān)96.5 改變光標形狀96.6 獲取當前路徑106.7 將MATLAB GUI生成exe106.8 錄入圖片劣化116.9 圖片讀入相關(guān)126.10 為
3、GUI程序添加啟動畫面126.11 循環(huán)定義新數(shù)組126.12 硬盤格式轉(zhuǎn)換后 HostID改變 Matlab的license失效136.13 獲取系統(tǒng)時間136.14 用圖片作為axes的背景146.15 在一個Figure中畫多幅圖14第七章 總結(jié)與展望16附 錄17第一章 引 言下文以上位機的設(shè)計為主線,包括小車的整體構(gòu)架設(shè)計、主要模塊設(shè)計,以及詳細問題處理等,共分為七章。其中,第一章為引言部分;第二章主要介紹了制作此上位機軟件所需的MATLAB GUI先備知識;第三章整體介紹上位機的設(shè)計方案;第四章介紹了軟件的簡單操作方式;第五章詳細描述了軟件主要功能,主要包括數(shù)據(jù)錄入部分和圖線分析部
4、分。第六章描述了在制作過程中遇到的具體問題,并附上其解決方案以供參考。第七章總結(jié)了在此作品的完善建議及心得體會。第二章 MATLAB GUI先備知識2.1 MATLAB學習網(wǎng)址由于學院已有MATLAB課程,相關(guān)資料也十分豐富,在此就不做重復(fù)了。本文檔主要講述有關(guān)GUI制作的相關(guān)知識,限于本人是完全自學,技術(shù)水平有限,若有錯漏敬請指正。以下推薦若干MATLAB學習的網(wǎng)址,作品制作的大部分知識來源于網(wǎng)站論壇,希望能令學習者有所借鑒:2.1.1 Matlab 中文論壇:/index.php2.1.2 Matlab百科全書:http:/wiki.ilov
5、/另外,學會使用help指令,閱讀MATLAB官方幫助,也是十分有效的學習方法。往往苦尋不到的資料其實早就存在于幫助之中,只是我們不識廬山真面目而已。2.2 MATLAB GUI學習視頻2.2.1 matlab_GUI_1創(chuàng)建簡單GUI2.2.2 matlab_GUI_2按鈕使用及圖片讀取高分辨率2.2.3 matlab_GUI_3radiobutton switch語句 圖像邊緣2.2.4 matlab_GUI_4.成績查詢系統(tǒng)界面2.2.5 matlab_GUI_5成績查詢系統(tǒng)功能2.2.6 matlab_GUI_6讀取Excel文件2.2.7 matlab_GUI_7
6、讀取文件錯誤處理2.2.8 matlab_GUI_8優(yōu)化 進度條的使用2.2.9 matlab_GUI_9與Java VB C+ C# 聯(lián)合編程2.2.10 matlab_GUI_10菜單 添加Active控件 播放MTV*詳見文件夾“GUI學習視頻”第三章 上位機方案設(shè)計3.1 總體結(jié)構(gòu)圖線分析analysis 數(shù)據(jù)錄入login登陸界面UCS上位機系統(tǒng)該軟件分登陸界面UCS、數(shù)據(jù)錄入login、圖線分析analysis三個界面,在登陸界面可分別進入另外兩個界面。各個界面之間可獨立保持或相互切換,實現(xiàn)不同功能間的通訊。3.2 登陸界面UCS GUI3.3 數(shù)據(jù)錄入界面 login GUI3.
7、4 圖線分析界面 analysis GUI第四章 簡單操作說明4.1 軟件需求制作過程中需用到MATLAB軟件、串口調(diào)試助手、虛擬串口軟件,此類資源網(wǎng)上十分豐富,可自己下載。若要在安裝不同MATLAB版本或未安裝MATLAB的PC上運行,需要安裝MCRInstaller.exe(具體操作見6.7將MATLAB GUI生成exe) 4.2 上位機操作4.2.1.安裝MCRInstaller.exe4.2.2運行文件夾“上位機EXE“中UCS.exe,打開登陸界面UCS4.2.3.點擊按鍵“數(shù)據(jù)錄入”,進入數(shù)據(jù)錄入界面login4.2.4.若需串口讀入,則設(shè)置左邊參數(shù),并在右側(cè)按格式輸入文件保存地
8、址,點擊按鍵“確定”,保存已輸入地址;再點擊按鍵“使能”開啟串口使能,點擊開始。4.2.5.若不需串口讀入,直接讀取以保存數(shù)據(jù),則只需在右側(cè)按格式輸入文件讀取地址(現(xiàn)已有保存數(shù)據(jù)在地址:“UCS所在地址data ”,直接可輸入此地址讀其中數(shù)據(jù)做測試),點擊按鍵“確定”,保存已輸入地址4.2.6.點擊按鍵“返回”,回到UCS界面;也可不返回,保持數(shù)據(jù)錄入界面login打開,手動切換界面4.2.7.點擊左上角按鍵“LOAD”,導(dǎo)入全部數(shù)據(jù)。此時會有屏閃,表示數(shù)據(jù)讀取中,屏閃結(jié)束時讀入完成4.2.8.按按鍵“NEXT”顯示下一幅,按按鍵“FRONT”顯示上一幅,按按鍵“FIRST”顯示第一幅,按按鍵
9、“VIDEO”連續(xù)播放第1-187副圖像。在圖像顯示、播放時相應(yīng)參數(shù)的曲線會在下方標有“曲線顯示區(qū)域”的位置顯示,各對應(yīng)曲線表示的參數(shù)在源文件中有注釋說明。各參數(shù)意義詳見文件夾“下位機說明”中文檔。第五章 主要功能說明5.1 MATLAB串口通信 5.1.1在此以CCD組為例。先選CCD組,設(shè)置波特率為38400,數(shù)據(jù)位8位,停止位1位,無校驗位,并使能。先發(fā)送170(十進制),然之后發(fā)送85(十進制)至下位機,下位機反應(yīng)后,開始接收一幅圖像以及這幅圖像中所附帶的參數(shù),下位機發(fā)送完畢后,lcd上會顯示“發(fā)送成功,等待繼續(xù)發(fā)送”的提示。連續(xù)導(dǎo)入187塊數(shù)據(jù),并以txt文檔形式保存串口通信使用函數(shù)
10、serial,詳見pdf檔案,尤其注意操作實例中回調(diào)函數(shù)(默認instrcallback或自編的mycallback)的運用,及基于中斷的串口通信優(yōu)于基于查詢的串口通信的原因數(shù)據(jù)保存的格式是:CCD組:(1)每一幀數(shù)據(jù),保存為一個txt文檔 (2)文檔包含圖像及參數(shù),相見下位機格式文檔 (3)文件名稱為“dataN.txt”,其中N為0-186的整數(shù),通過數(shù)據(jù)錄入模塊串口讀入時,自動保存為以上格式;若直接讀取已存在數(shù)據(jù)文件,則需將數(shù)據(jù)文件另命名為以上格式。5.1.2以中斷方式進行串口讀寫,其中斷觸發(fā)事件為輸入緩存達到3873字節(jié),中斷服務(wù)程序調(diào)用m函數(shù)mycallback,相關(guān)知識點見以下資料
11、:5.2 圖線數(shù)據(jù)顯示以CCD組為例,根據(jù)輸入的3873個字節(jié)數(shù)據(jù),由于圖像是40行*95列,且每行外加一個0作為標示,因此提取40*(95+1)即3840個數(shù)據(jù)進行處理。處理過程包括將讀入數(shù)據(jù)做矩陣化,矩陣轉(zhuǎn)置及歸一化等。由于在一個Figure中畫多幅圖是有一定限制的,若直接顯示則只顯示在當前激活的AXE控件中,會覆蓋已存在圖線,并不能同時做到多圖像不同窗口播放。因此,使用導(dǎo)入功能,現(xiàn)將圖像數(shù)據(jù)導(dǎo)入到全局變量global fn中,再從fn的CData屬性讀出,實現(xiàn)跨Figure顯示。(見6.13 在一個Figure中畫多幅圖)曲線部分,由于暫時未完成PID參數(shù)控制相關(guān),只以折線圖顯示了讀入的
12、原始參數(shù)。此部分內(nèi)容,有較大改進空間,希望日后能不斷完善。第六章 具體問題與解決方案6.1 GUI界面切換問題:我在做的一個程序需要實現(xiàn)多界面的切換,我搜索過論壇上的相關(guān)問題,解決方法好像都是做幾個figure,然后通過按鈕或者其他的操作使一個顯示而另一個隱藏。我試了一下,切換的時候界面會很明顯的閃一下,有沒有別的什么方法可以讓界面切換的時候看起來很自然,就好像在同一個界面上呢?如果只有上面這種辦法的話,要實現(xiàn)運行時移動其中的一個界面,所有的界面都相應(yīng)移動,應(yīng)該怎么做?回答:沒有太好的辦法。你可以這樣處理看看:1、把所有的GUI窗口都設(shè)置到一個位置顯示;2、在調(diào)用另一個界面的地方調(diào)用GUI后,
13、延時關(guān)閉先前的窗口:GUI2();pause(2);close(handles.figure1);這樣,新的窗口會遮擋住原先的窗口,再關(guān)閉原先窗口時就不會有任何感覺。備注:本程序界面切換設(shè)計,使用全局變量做判斷標志,控制各個界面的開閉狀態(tài),這樣可以同時打開多個GUI界面。當然,若想實現(xiàn)其他形式的界面切換,可靈活應(yīng)用上述問題的方法。6.2 按鈕外觀編輯問題:按鈕控件外觀是默認,怎樣才能在button上加圖標,使顯示更美觀。回答:在button上加圖標的程序,或許對大家有用?;舅枷?,利用button支持cdata的思想,把圖片的數(shù)據(jù)轉(zhuǎn)換成cData放在按鈕上。實現(xiàn)了在GUI上,按鈕有背景圖片。備
14、注:本程序設(shè)計中,對部分按鈕: 使用上述問題的方法,改變外觀。但發(fā)現(xiàn)存在一個問題,當GUI 大小改變時,按鈕大小將發(fā)生變化;而此時外觀圖片大小不變,這會使實現(xiàn)發(fā)生偏差。此問題希望有能力者加以完善。另外,利用Fireworks可以更方便編輯按鈕圖片。6.3 串口清除問題:在串口通信中遇到一個問題,假如有一個已經(jīng)打開的串口對象s,在沒有關(guān)閉之前就被clear命令清除了,這時如何關(guān)閉s對應(yīng)的串口?遇到這種情況我只會關(guān)閉matlab再重新打開,這樣太麻煩了,不知道有沒有更好的辦法?回答:delete(instrfindall)instrfindall可以找到所有的串口6.4 二進制文件相關(guān)*詳見附帶資
15、料的 “詳細問題與解決方案” 文件夾6.5 改變光標形狀問題:看了makesure5寫的“給控件添加相應(yīng)的注釋信息”學會了怎么給按鈕加注釋,現(xiàn)在想再增加點功能,希望當鼠標放在按鈕上時光標能改變形狀(比如小手什么的),不知道能不能實現(xiàn),希望高手指點下?;卮穑耗悴檎乙幌耭igure的pointer屬性就知道了,它是選擇指針符號!備注:Pointer屬性有: crosshair | fullcrosshair | arrow | ibeam | watch | topl |topr | botl | botr | left | top | right | bottom | circle | cros
16、s | fleur | custom | hand 可以任取一個嘗試。6.6 獲取當前路徑問題:如何在matlab下獲得當前路徑???我用uigetdir能獲得該路徑,但是會有一個對話框出來,有什么辦法能不顯示對話框而獲得當前路徑嗎?回答:用cd命令即可。備注:用cd命令獲取的是當前打開的MATLAB編程主程序的地址,而非GUI所在地址。若是已編譯完成,打開生成EXE,則無此問題。要注意的是編譯時所需的圖片文件等資料,是不會包含在EXE中的,需要根據(jù)編程時的相對地址事先存放圖片、音樂等,才可正常打開程序。6.7 將MATLAB GUI生成exe問題:如何要使MATLAB GUI生成EXE文件,方
17、便在不同PC上運行?回答:一、生成獨立可執(zhí)行的程序(exe文件)步驟 1、安裝編譯器。可有多種選擇,matlab自帶了一個LCC,推薦使用VC+6.0,我基于VS 2003實現(xiàn)。2、設(shè)置編譯器。在matlab命令行輸入mbuild setup以及mex setup,選擇安裝的c編譯器。3、調(diào)用編譯器。此處使用MATLAB下的一個GUI平臺deploytool下完全實現(xiàn)。在命令窗口輸入deploytool即可看到。具體使用方法請Help。當然,也可以輸入mcc -m filaname, filaname為要轉(zhuǎn)成exe的m文件;注:在以前的版本中,用編譯命令mcc -B sglcpp filana
18、me;自2006的版本后,替換為mcc-m filename(多m文件聯(lián)合編譯成exe則用mcc -m filename1 filename2 filename3);4、安裝toolboxcompilerdeploywin32目錄下的MCRInstaller。(2010b版本不在此文件地址下,可用系統(tǒng)搜索功能對全安裝目錄搜索得到)二、脫離matlab運行可執(zhí)行程序MCR是由matlab的運行環(huán)境,占用不到300M的對于用不同matlab版本生成的exe文件,MCR版本也會有不同,因此,在程序打包時,最好將相應(yīng)版本的MCR一起打包。MCR環(huán)境的設(shè)置文件存放目錄如下: toolboxcompile
19、rdeploywin32文件名為MCRInstaller.exe??蓪⑵淇截惖阶约旱奈募A中,(7.0以前的版本是mglinstaller.exe)。在MATLAB里運行可執(zhí)行程序的辦法是在前面加一個!,比如:!picshow,后綴名可有可無。在其它沒有安裝matlab的機器上運行exe文件前:首先安裝matlab的運行環(huán)境。在同一機器上可以并存不同版本的matlab環(huán)境(換句話說不同版本不兼容)。其次是要將“MCRinstaller.exe安裝目錄runtimewin32”這個路徑添加到該計算機的環(huán)境變量中,通常是自動加載。如果沒有,也可手動安裝,添加的方法是:右擊“我的電腦”“屬性”“高級
20、”“環(huán)境變量”“添加”指定一個變量名,然后將上述路徑復(fù)制到里面就可以了。在安裝過程中會彈出讓安裝Microsoft.NETFramework可以不用安裝。最后就是將編譯生成的相相關(guān)文件拷貝到同一目錄下,雙擊即可運行。目前此方法可完全運行在沒有安裝MATLAB以及C/C+的電腦上,但是如果是在AMD的CPU可以運行,但是不會出現(xiàn)任何MATLAB編譯的界面。美中不足就是,運行的時候dos的那個黑色的窗口一直存在。備注:黑色的窗口消除辦法好像已經(jīng)存在,但由于時間關(guān)系在此并不應(yīng)用。6.8 錄入圖片劣化問題:排除下位機原本數(shù)據(jù)缺損,Matlab串口通信時,連續(xù)多次(20次以上)讀入數(shù)據(jù)時,會產(chǎn)生不穩(wěn)定現(xiàn)
21、象,造成圖像劣化?;卮穑簷z查硬件串口,更換串口較短線,可改善傳輸質(zhì)量。但具體解決方法尚未知曉,只用串口調(diào)試助手希望以后的設(shè)計者可以深入了解,加以完善。6.9 圖片讀入相關(guān)Matlab常用圖像操作一. 讀寫圖像文件1. imreadimread函數(shù)用于讀入各種圖像文件,如:a=imread(e:w01.tif)注:計算機E盤上要有w01相應(yīng)的.tif文件。2. imwriteimwrite函數(shù)用于寫入圖像文件,如:imwrite(a,e:w02.tif,tif)3. imfinfoimfinfo函數(shù)用于讀取圖像文件的有關(guān)信息,如:imfinfo(e:w01.tif)二. 圖像的顯示1. imag
22、eimage函數(shù)是MATLAB提供的最原始的圖像顯示函數(shù)(主要彩色顯示圖象),如:a=1,2,3,4;4,5,6,7;8,9,10,11,12;image(a);2. imshowimshow函數(shù)用于灰度圖像文件的顯示,如:i=imread(e:w01.tif);imshow(i);3. colorbarcolorbar函數(shù)用顯示圖像的顏色條。 通常,顏色映象進行過調(diào)節(jié),把數(shù)據(jù)從最小擴展到最大,也就是說整個顏色映象都用于繪圖。有時也許想改變顏色使用的方法。函數(shù)caxis代表顏色軸,因為顏色增加了另一個維數(shù),它允許對數(shù)據(jù)范圍的一個子集使用整個顏色映象或者對數(shù)據(jù)的整個集合只使用當前顏色映象的一部分
23、。 cmin,cmax=caxis返回映射到顏色映象中第一和最后輸入項的最小和最大的數(shù)據(jù)。它們通常被設(shè)成數(shù)據(jù)的最小值和最大值。比如,函數(shù) mesh(peaks) 會畫出函數(shù)peaks的網(wǎng)格圖,并把顏色軸caxis設(shè)為-6.5466,8.0752,即Z的最小值和最大值。這些值之間的數(shù)據(jù)點,使用從顏色映象中經(jīng)插值得到的顏色。如:i=imread(e:w01.tif);imshow(i);colorbar; 4 .figurefigure函數(shù)用于設(shè)定圖像顯示窗口,如:figure(1); /figure(2);5.imagesc(a); caxis(-3 8) ; colorbar;標尺標度從-3,
24、到8 顯示標度尺。6.10 為GUI程序添加啟動畫面*詳見附帶資料的 “詳細問題與解決方案” 文件夾6.11 循環(huán)定義新數(shù)組問題:如何循環(huán)定義新數(shù)組我想定義n個數(shù)組(A1, A2,A3,A4,A5.A48)for i=1:48 Ai = zeros( (n+1)2 , 3 ) % 第i個數(shù)組end請問第i個數(shù)組怎么取名,總不能叫 Ai 啊回答:a = 1:5;for i = 1:4eval(a num2str(i) =a);enda1 = 1 2 3 4 5a2 = 1 2 3 4 5a3 = 1 2 3 4 5a4 = 1 2 3 4 5備注:eval命令是將字符串轉(zhuǎn)為可執(zhí)行命令的函數(shù),在許
25、多地方可靈活運用。6.12 硬盤格式轉(zhuǎn)換后 HostID改變 Matlab的license失效*詳見附帶資料的 “詳細問題與解決方案” 文件夾6.13 獲取系統(tǒng)時間問題:話說俺也不知道m(xù)atlab如何讀取系統(tǒng)時間,其實知道了系統(tǒng)時間的話,顯示應(yīng)該是比較簡單的?;卮穑汉瘮?shù)名 功能描述 函數(shù)名 功能描述now 以數(shù)字形式給出當前日期和時間 weekday 星期函數(shù)date 以字符轉(zhuǎn)形式給出當前日期 eomday 月末日判斷函數(shù)clock 以向量形式給出當前日期和時間 cputime 所用CPU的時間datenum 日期的數(shù)字形式轉(zhuǎn)換 tic 啟動秒表計時器datestr 日期的字符串形式轉(zhuǎn)換 to
26、c 讀取秒表計時器datevec 日期的向量形式轉(zhuǎn)換 etime 使用時間函數(shù)calendar 日歷函數(shù) pause 暫停函數(shù)6.14 用圖片作為axes的背景問題:如何用圖片作為axes的背景?回答:之前實現(xiàn)了在figure上把圖片做為背景,現(xiàn)在實現(xiàn)在Guide上實現(xiàn)。其實很簡單,就是在Fcn的地方添加以下代碼:ha=axes(units,normalized,position,0 0 1 1);uistack(ha,down)II=imread(禾木01.bmp);image(II)colormap grayset(ha,handlevisibility,off,visible,off);
27、另外如果要把那些按鈕等的背景也改變,也是在此處添加相應(yīng)代碼就可。比如下面代碼把按鈕的背景改變了(此方法已有人在論壇發(fā)過帖子,請自己搜索):I=imread(buttoncdata.bmp);set(handles.pushbutton1,cdata,I);備注:需要把axes控件的“units”屬性設(shè)置為“normalized”才可以的全屏顯示背景fread讀入二進制文檔的數(shù)據(jù)要經(jīng)str2num、reshape、轉(zhuǎn)置等處理才可顯示,且顯示時需要用GUI的Axes控件,才能固定圖像實際顯示大小,即同5*5cm的Axes顯示的10*10與20*20分辨率的圖像的實際顯示大小是一樣的。詳見附帶資料的
28、 “詳細問題與解決方案” 文件夾6.15 在一個Figure中畫多幅圖問題:Matlab關(guān)于在一個figure中畫多幅圖,colormap的設(shè)置問題大家好,請教一個問題。我要在一個figure里面畫三張圖,subplot(3,1,1),subplot(3,1,2),subplot(3,1,3)見附件。-但是這三張圖的colormap是不一樣的,比如說,第一和第二張圖都用colormap1,第三張圖用colormap2。但是當我每次定義完第三張圖的colormap之后,前兩張圖的colormap也就變成和第三張圖一樣的了。回答:在matlab里面,每個figure只能顯示一種colormap的圖
29、片,有兩種colormap肯定是不行的??梢韵劝褕D片顯示到另一個figure內(nèi),然后用getframe函數(shù)取得其圖形數(shù)據(jù),再用imshow等函數(shù)顯示到同一figure內(nèi)。figure(1);imshow(pic1);f1=getframe(gcf);figure(2);imshow(pic2);f2=getframe(gcf);figure(3);imshow(pic3);f3=getframe(gcf);close all;figure(4);subplot(131);imshow(f1.cdata);subplot(132);imshow(f2.cdata);subplot(133);im
30、show(f3.cdata);第七章 總結(jié)與展望作為一個上位機軟件,本程序的完善程度遠遠不夠。我們的目標是軟件實現(xiàn)PID控制的實現(xiàn)、智能的調(diào)試,從而節(jié)省作品完成時間,提高小車運行速度與穩(wěn)定性。但受技術(shù)水平及時間所限,現(xiàn)階段只能完成以上部分,供后來者參考。另外,除文檔外本人也將學習制作工程中用到的相關(guān)資料做了一些整理,打包在附件中,希望能對各位有所幫助。最后,多謝王日明老師提供我這樣一個機會動手學習,祝愿我們的同學在技術(shù)道路上披荊斬棘,勇創(chuàng)高峰!附 錄*1.串口程序% % 該回調(diào)函數(shù)設(shè)置以中斷方式進行串口讀寫,其中斷觸發(fā)事件為輸入緩存達到% 3873字節(jié),中斷服務(wù)程序調(diào)用m函數(shù)mycallbac
31、k% % - Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) global s; %串口變量s global co
32、ntrol; %串口變量s的使能標志 global com_times; %串口連續(xù)執(zhí)行次數(shù),即接收數(shù)據(jù)塊塊數(shù) group_str = get(handles.popupmenu1,String); %小組類型字符列表 groupvalue = get(handles.popupmenu1,Value); %小組類型當前選項值 groupselected_str = group_str(groupvalue); %小組類型當前選項字符值 com_str = get(handles.popupmenu2,String); %串口COM類型字符列表 comvalue = get(handles.p
33、opupmenu2,Value); %串口COM當前選項值 comselected_str = com_str(comvalue); %串口COM當前選項字符值 baudrate_str = get(handles.popupmenu3,String); %串口波特率類型字符列表 baudratevalue = get(handles.popupmenu3,Value); %串口波特率當前選項值 baudrateselected_str = baudrate_str(baudratevalue); %串口波特率當前選項字符值 baudrateselected_dbl = str2double(
34、baudrateselected_str);%串口波特率當前選項數(shù)字值 parity_str = get(handles.popupmenu4,String); %串口校驗位類型字符列表 parityvalue = get(handles.popupmenu4,Value); %串口校驗位當前選項值 parityselected_str = parity_str(parityvalue); %串口校驗位當前選項字符值 databits_str = get(handles.popupmenu5,String); %串口數(shù)據(jù)位類型字符列表 databitsvalue = get(handles.p
35、opupmenu5,Value); %串口數(shù)據(jù)位當前選項值 databitsselected_str = databits_str(databitsvalue); %串口數(shù)據(jù)位當前選項字符值 databitsselected_dbl = str2double(databitsselected_str);%串口數(shù)據(jù)位當前選項數(shù)字值 stopbits_str = get(handles.popupmenu6,String); %串口停止位類型字符列表 stopbitsvalue = get(handles.popupmenu6,Value); %串口停止位當前選項值 stopbitsselecte
36、d_str = stopbits_str(stopbitsvalue); %串口停止位當前選項字符值 stopbitsselected_dbl = str2double(stopbitsselected_str);%串口停止位當前選項數(shù)字值 all_str = *,groupselected_str,*,comselected_str,*,baudrateselected_str,. *,parityselected_str,*,databitsselected_str,*,stopbitsselected_str,*; %清除串口 delete(instrfindall); %建立串口 sw
37、itch comvalue case 1 s=serial(COM1); case 2 s=serial(COM2); case 3 s=serial(COM3); case 4 s=serial(COM4); case 5 s=serial(COM5); case 6 s=serial(COM6); case 7 s=serial(COM7); case 8 s=serial(COM8); otherwise ; end set(s,BaudRate,baudrateselected_dbl); %設(shè)置波特率 set(s,timeout,10); %設(shè)置超時時間10s set(s,Input
38、BufferSize,3873); %設(shè)置輸入緩存3873Byte set(s,OutputBufferSize,1024); %設(shè)置,輸出緩存1024Byte %設(shè)置奇偶校驗位 switch parityvalue case 1 set(s,Parity,none); %不使用校驗位 case 2 set(s,Parity,odd); %使用奇校驗 case 3 set(s,Parity,even); %使用偶校驗 otherwise ; end set(s,DataBits,databitsselected_dbl); %設(shè)置數(shù)據(jù)位 set(s,StopBits,stopbitsselec
39、ted_dbl); %設(shè)置停止位 set(s,BytesAvailableFcnMode,byte); %設(shè)置中斷觸發(fā)事件為字節(jié)事件 set(s,BytesAvailableFcnCount,3873); %設(shè)置中斷觸發(fā)事件字節(jié)事件的觸發(fā)條件為字節(jié)滿3873Byte set(s,BytesAvailableFcn,mycallback); %設(shè)置中斷觸發(fā)時調(diào)用中斷服務(wù)子程序為mycallback.m fopen(s); %開啟串口 com_times=187; %向硬件串口發(fā)送通信使能命令(0xaa 0x55),并連續(xù)接收187塊由圖像及參數(shù)數(shù)據(jù)組合成的數(shù)據(jù)塊 switch groupvalu
40、e case 1 %光電組 ; case 2 %電磁組 ; case 3 %CCD組 while(com_times0) if control=1 fwrite(s,170); fwrite(s,85); end end otherwise ; end*2 中斷服務(wù)程序mycallback% % 文件名稱: mycallback.m % 摘 要: 上位機數(shù)據(jù)錄入界面串口數(shù)據(jù)讀入中斷時,調(diào)用此文件,進行文件% 的讀取、保存% 當前版本: V1.0% 作 者: 廣東工業(yè)大學信息工程學院 07電信(3)班 文新懿% 完成日期: 2010年11月30日% % 定義全局變量 % global s; %串
41、口變量s global control; %串口變量s的使能標志 global com_times; %串口連續(xù)執(zhí)行次數(shù),即接收數(shù)據(jù)塊塊數(shù) global grouptype; %文件讀入模塊右側(cè)的小組類型 global fileaddress; %文件讀入地址 % 文件操作 % switch grouptype case 1 %光電組 ; case 2 %電磁組 ; case 3 %CCD組 control = 0; %串口使能關(guān)閉 str_time = num2str(187-com_times); %文件命名 com_times = com_times-1; %文件計數(shù) c = fread
42、(obj,3873); %串口數(shù)據(jù)讀取 str_fopen_txt = fileaddress,data,str_time,.txt; %串口讀入數(shù)據(jù)保存地址及文件名字符串 fid_txt = fopen(str_fopen_txt,a); %文件打開 fwrite(fid_txt,c); %文件寫入 fclose(fid_txt); %文件關(guān)閉 control=1; %串口使能開啟 otherwise ;End*3 導(dǎo)入數(shù)據(jù)% 導(dǎo)入數(shù)據(jù) % - Executes on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)意公關(guān)推廣合同(2篇)
- 2025承包合同書企業(yè)范文
- 2024年度天津市公共營養(yǎng)師之三級營養(yǎng)師測試卷(含答案)
- 2024年度四川省公共營養(yǎng)師之四級營養(yǎng)師模擬試題(含答案)
- 2024年度四川省公共營養(yǎng)師之二級營養(yǎng)師自我檢測試卷A卷附答案
- 2025種子代理購銷合同書
- 2025年中國咖啡杯行業(yè)發(fā)展前景預(yù)測及投資策略研究報告
- 2025年中國注射用重組鏈激酶行業(yè)市場全景評估及發(fā)展前景預(yù)測報告
- 2025年中國廉價航空運輸行業(yè)市場全景分析及投資策略研究報告
- 2025技術(shù)服務(wù)合同書范本
- 2025年初級會計職稱《經(jīng)濟法基礎(chǔ)》全真模擬及答案(解析3套)
- 《健康社區(qū)評價標準》
- 戶外市場研究報告-魔鏡洞察-202412
- 浙江省金華市金東區(qū)2023-2024學年九年級上學期語文期末試卷
- 【7地星球期末】安徽省合肥市包河區(qū)智育聯(lián)盟校2023-2024學年七年級上學期期末地理試題(含解析)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之2:“1至3章:范圍、術(shù)語和定義”(雷澤佳編制-2025B0)
- (2021)最高法民申5114號凱某建設(shè)工程合同糾紛案 指導(dǎo)
- 【9物(人)期末】安慶市宿松縣2023-2024學年九年級上學期期末考試物理試題
- 導(dǎo)航通信一體化考核試卷
- 甘肅省會寧二中2025屆高考仿真模擬數(shù)學試卷含解析
- 2024年未成年子女房產(chǎn)贈與協(xié)議
評論
0/150
提交評論