国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于Matlab GUI的串口通信編程實現

發布時間:2010-11-28 12:14    發布者:designer
關鍵詞: GUI , Matlab , 編程 , 串口通信
Matlab是MathWorks公司開發的一種科學計算軟件。Matlab運行穩定、可靠、使用方便,是廣大科研人員進行科學研究的得力助手。Matlab不僅具有強大的科學計算功能,還具有滿足一般要求的數據采集以及界面設計開發功能。Matlab GUI(Graphic User Interface)就是內置于Matlab的進行圖形界面開發的模塊。

本文利用Matlab GUI設計通過串口進行數據發送和接收的界面,并利用內置于Matlab的串口通信API實現串口數據發送與接收功能。

1 Matlab GUl介紹

啟動Matlab后,運行guide命令即可以啟動Matlab GUI開發工具。如圖1所示。






新建Blank GUI,如圖2所示。

在新建Blank GUI界面中,包含了一般的界面元素,如菜單、按鈕、坐標軸、控件等。添加必要的串口通信參數設置按鈕。

運行后的界面如圖3所示。







2 串口數據發送與接收功能實現

2.1 建立串口通信流程的基本步驟

Matlab提供了對串口進行打開、關閉、以及串口參數設置等操作的一系列函數。利用這些函數可以選擇串口號、設置串口通信參數(波特率、數據位、停止位、校驗位等)、進行中斷控制、流控制。從建立串口通信到結束串口通信的完整流程包括以下幾個步驟:
(1)為應用程序創建串口對象。實現該功能的函數為:




其中參數port為完整的串口名稱,如cornl。PropertyName為串口通信參數,如baudrate,startbits等。創建串口對象的過程中,也可以忽略PropertyName。其函數為:



(2)連接打開串口。實現該功能的函數為:



obj即為使用創建串口對象函數的返回值。在連接打開串口后,可以對串口通信參數進行修改。

(3)設置或者修改串口通信參數。在能夠有效地進行串口通信前,必須設置正確的串口通信參數。實現該功能的函數為:




obj即為使用創建串口對象函數的返回值;PropertyName為串口通信參數,如baudrate,startbits等。

(4)從串口讀寫數據。在前面三個步驟正常完成后,即可以從串口讀數據或者向串口寫數據,也就是接收或者發送數據。實現讀串口功能的函數有多個。其區別在于根據到達串口數據的類型選擇合適的讀函數。主要包括:fgetl,fgets,fread,fscanf。這里主要介紹fread,fread函數實現從串口讀入二進制數據。fread的實現形式為:

A=fread(obj,size)

A為讀入的數據,以數組的形式存儲,存儲數據形式為字節;obj即為使用創建串口對象函數的返回值;size指定一次讀操作讀入字節的個數。實現寫串口的函數有兩個,分別為fwrite和fprintf。fwrite以二進制形式向串口寫入數據,實現形式為:

fwrite(obj,A)

obj即為使用創建串口對象函數的返回值;A為寫入的數據,以數組形式存儲。fwrite以文本形式向串口寫入數據,即以ASCII碼的形式向串口寫數據,實現形式為:

fprintf(obj,'cmd')

obj即為使用創建串口對象函數的返回值;cmd為寫入的文本數據,以數組形式存儲。

(5)關閉串口以及釋放串口對象占用的存儲空間。關閉串口函數為:fclose(obj)。釋放串口對象占用的內存空間,函數為:delete(obj)。釋放串口對象在Matlab工作區中占用的存儲空間,函數為:clear obj。

以上5步是建立串口通信過程到關閉串口,釋放串口占用資源的基本步驟。基本步驟可以實現手動收發數據。其例程如下:



運行以上語句后,顯示的結果如下:




串口數據接收完畢后,需要關閉串口,并釋放串口對象占用的資源,使用的命令如下:



2.2 串口中斷設置及中斷處理函數

要實現自動收發數據,還需要定義串口中斷處理函數以及觸發串口中斷的方式。定義串口中斷處理函數也就是定義串口數據接收或者發送函數。定義觸發串口中斷的方式其目的是為了在串口檢測到接收數據的時候,通知并啟動串口數據接收函數進行數據接收操作;在串口輸出緩存為空的時候,通知啟動串口數據發送函數。

(1)觸發串口中斷的方式。在Matlab串口通信編程中,Matlab通過檢測到串口通信事件,從而觸發串口中斷。涉及到串口讀寫的事件包括:Bytes available,Output empty。其中Bytes available事件有兩種:一種是接收到的字符數達到人工設定的數目時,則系統產生該事件;另一種是當接收到指定字符時,系統產生該事件。Output erupty事件是在系統檢測到輸出緩存區為空時,產生該事件。

Bytes available事件需要事先設置。可以使用函數:set(obj,'By tesAvailableFcnMode','byte');set(obj,'BytesAvailableFcn-Count',240);以上兩個函數設置當串口檢測到輸入緩存中到達了240個字符的數據時,則觸發串口中斷。另外,也可以設置為當系統檢測到某個字符達到串口,則觸發串口中斷。其設置函數為:set(obj,'BytesAvailableFcnMode','terminator');set(obj,'terminator', 'H')。以上兩個函數設置當串口檢測到字符H時,則觸發串口中斷。

輸出緩存為空事件的產生。該事件由系統自動檢測產生,不需要用戶特別設置。該事件一般在輸出緩存中的最后一個字符發送完畢后產生。用戶可以定義該事件引起的串口中斷處理函數。

(2)串口中斷處理函數。串口中斷處理函數可以根據用戶需要自行定義。如串口讀中斷處理函數可以這樣定義:obj.BytesAvailableF-cn=@reeeiveData。receiveData即為串口讀中斷處理函數。在讀中斷處理函數中可以進行串口讀操作。即將輸入緩存區中的數據讀到用戶自定義的存儲變量中,以備后續的數據處理與分析。類似可以定義輸出緩存為空時觸發的串口中斷處理函數:obj.OutputEmptyFcn=@write-Data。

本文開發的串口通信程序用于接收采集IMU(Inertial Measurement Unit)輸出的加速度計和陀螺的測量數據。通過定義串口讀中斷事件和串口中斷處理函數,實現了數據的自動采集,并以Matlab圖形方式實時顯示數據。

3 串口通信程序的編譯發布

3.1 編譯程序

為了對代碼進行保密,以及方便用戶發布可以在不同平臺運行的可執行程序,Matlab提供了Matlab程序編譯與發布功能。在進行Matlab程序編譯之前,需要設置編譯工具。在Matlab命令窗口中,輸入運行mbuild-setup,進行編譯工具設置。如圖4所示。




mbuild-setup命令運行后,Matlab會檢測已經安裝在本機上的編譯器,用戶可以自行選擇任意一個編譯器,選擇完畢后,運行編譯命令,Matlab將使用用戶選定的編譯器對程序進行編譯。

設置完畢編譯工具后,即可以在命令窗口中運行編譯命令,將Matlab程序編譯成可執行程序。命令格式為:

mcc[-options]mifilel[mfile2…mfileN];
options為編譯參數;mfilel為待編譯的Matlab文件,如果包含多個Matlab文件,可以直接列在mfilel后面。

如將一個文件名為myfun.m的Matlab文件編譯成一個獨立可執行程序,可以使用mcc命令:
mcc-m myfun:
mcc命令可以用使用多個編譯參數,相應參數的含義可以參見Matlab幫助文檔。

3.2 發布程序

Matlab文件編譯完畢后,生成的可執行程序還需要.Matlab環境的支持,要發布到沒有安裝Matlab的機器上運行,還需要進行最后一項工作,即打包Matlab組件運行環境(Matlab Component Runtime,MCR)。將MCR與可執行程序一起打包,拷貝到其他沒有安裝Matlab的機器上,在該機器上安裝MCR,安裝完畢即可以直接在該機器上運行編譯的Matlab可執行程序。MCR安裝文件位于:

Matlab Root\toolbox\compiler\deploy\win32

在2008版Matlab中,已經內置了Matlab編譯發布工具箱,在Matlab命令窗口中運行deploytool命令,即可以調出該工具窗口,通過該工具可以方便、快捷地編譯發布Matlab程序。

4 結語

Matlab具有強大的科學計算功能和圖形顯示功能,選用Matlab作為數據處理與分析工具是合適的,但其界面開發和數據采集功能相對較弱,不如VisualC++或者LabView強大。不過,對于一般的界面開發,和普通功能的串口通信開發,Matlab是足以勝任的,同時也可以直接利用其強大的數據分析與處理功能。本文基于Matlab GUI的串口通信功能的編程實現表明利用Matlab GUI可以進行包含一般界面元素的界面開發,在此基礎上,加入串口通信功能,實現數據的實時采集與分析處理,并進行圖形化顯示。
本文地址:http://m.qingdxww.cn/thread-42327-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩乱妇高清免费 | 国产精品无码专区在线观看 | 老色批午夜免费视频网站 | 日本高清免费h色视频在线观看 | 国内精品七七久久影院 | 91天堂素人精品系列全集亚洲 | 国产一区二区三区不卡免费观看 | 日本午夜网站 | 日本www高清 | 久久这里只有精品久久 | 五月婷婷导航 | 在线国产三级 | 亚洲成人网在线 | 在线观看a网站 | 日韩国产成人 | 手机免费看黄色 | 日韩精品视频免费在线观看 | 精品久久中文网址 | 久久精品福利 | 亚洲第一成年网站大全亚洲 | aⅴ一区二区三区 | 精品久久久久久免费影院 | 高清一区二区三区四区五区 | 久久这里只有精品首页 | 国产亚洲女人久久久久久 | 日本高清免费不卡在线 | 国产麻豆精品一区二区 | 啦啦啦资源视频在线观看4 啦啦啦中文在线影院观看 啦啦啦在线观看视频免费观看4 | 乱一色一一区二区三区 | 一区精品麻豆经典 | 日本不卡高清中文字幕免费 | 亚洲成a人片在线观看中文动漫 | 麻豆短视频app网站 麻豆短视频 | 99热在这里只有精品 | 日本黄色大全 | 欧美日韩一区在线观看 | 免费簧片视频 | 国产韩国精品一区二区三区 | 888午夜不卡理论久久 | 日本色视| 国产精品极品美女自在线观看免费 |