《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于Matlab GUI的串口通信編程實現
基于Matlab GUI的串口通信編程實現
現代電子技術
王戰軍 沈 明
摘要: Matlab是MathWorks公司開發的一種科學計算軟件。Matlab運行穩定、可靠、使用方便,是廣大科研人員進行科學研究的得力助手。Matlab不僅具有強大的科學計算功能,還具有滿足一般要求的數據采集以及界面設計開發功能。Matlab GUI(Graphic User Interface)就是內置于Matlab的進行圖形界面開發的模塊。 本文利用Matlab GUI設計通過串口進行數據發送和接收的界面,并利用內置于Matlab的串口通信API實現串口數據發送與接收功能。
Abstract:
Key words :

0 引言
   
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步是建立串口通信過程到關閉串口,釋放串口占用資源的基本步驟?;静襟E可以實現手動收發數據。其例程如下:
   
    運行以上語句后,顯示的結果如下:
   
    串口數據接收完畢后,需要關閉串口,并釋放串口對象占用的資源,使用的命令如下:
   
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可以進行包含一般界面元素的界面開發,在此基礎上,加入串口通信功能,實現數據的實時采集與分析處理,并進行圖形化顯示。
此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品每日更新| 亚洲色图在线视频| 国产精品二区在线观看| 男人天堂欧美日韩| 一区二区亚洲精品国产| 久久久久久精| 亚洲天堂av图片| 国产日韩欧美综合精品| 99成人在线| 欧美高清在线一区二区| 欧美成人精品在线| 欧美日本韩国| 香港久久久电影| 激情综合网激情| 91久久精品日日躁夜夜躁国产| 久久久精品tv| 亚洲精品免费一区二区三区| 国产欧美日韩精品丝袜高跟鞋| 久久婷婷久久| 欧美成人在线影院| 欧美日韩精品不卡| 激情婷婷欧美| 在线播放一区| 欧美少妇一区二区| 午夜精品影院在线观看| 久久婷婷国产麻豆91天堂| 国产欧美日韩一区| 欧美在线观看视频在线| 亚洲午夜精品久久久久久app| 国产精品扒开腿做爽爽爽视频| 亚洲视频电影在线| 亚洲天堂av高清| 亚洲欧美视频| 一区二区三区鲁丝不卡| 欧美亚洲综合久久| 欧美日韩国产一中文字不卡| 欧美日韩一区二区免费视频| 欧美精品成人| 国产精品大片wwwwww| 毛片基地黄久久久久久天堂| 久久综合一区二区| 99精品国产热久久91蜜凸| 亚洲综合色自拍一区| 国产性天天综合网| 欧美一区二区三区在线播放| 亚洲一区二区免费| 久久www成人_看片免费不卡| 国产欧美日韩精品a在线观看| 免费91麻豆精品国产自产在线观看| 欧美日韩精品一区| 久久久久成人网| 亚洲高清在线观看一区| 国产精品国产三级国产aⅴ无密码| 国产精品白丝av嫩草影院| 一区二区三区国产在线观看| 欧美精品午夜视频| 久久精品国产一区二区三区免费看| 欧美激情91| 欧美美女喷水视频| 亚洲一区二区成人| 亚洲电影在线免费观看| 欧美日韩激情小视频| 久久久久99精品国产片| 国产精品久久一卡二卡| 欧美日韩亚洲一区| 激情欧美一区二区三区在线观看| 亚洲一区二区黄色| 欧美影院午夜播放| 国产精品永久免费观看| 欧美一区二区精品久久911| 精品99视频| 在线电影欧美日韩一区二区私密| 欧美成人免费全部观看天天性色| 亚洲人成网站精品片在线观看| 欧美在线精品免播放器视频| 欧美视频免费在线| 一本在线高清不卡dvd| 久久人人97超碰人人澡爱香蕉| 亚洲网站在线看| 国产亚洲一区二区三区在线播放| 久久久久久久91| 99www免费人成精品| 欧美在线视频在线播放完整版免费观看| 在线日韩一区二区| 亚洲综合第一页| 国产精品系列在线| 一区二区日本视频| 亚洲激情av| 久久超碰97人人做人人爱| 一区二区三区视频免费在线观看| 亚洲精品影院| 国产精品久久久久久久久免费桃花| 好看的亚洲午夜视频在线| 国产精品专区一| 日韩视频免费看| 欧美国产在线观看| 欧美午夜精彩| 极品尤物一区二区三区| 欧美不卡视频一区发布| 国产欧美日韩视频一区二区三区| 亚洲人在线视频| 麻豆成人在线观看| 欧美日韩视频免费播放| 日韩视频一区二区三区在线播放| 亚洲在线观看视频| 亚洲一区二区三区免费视频| 香蕉久久夜色精品| 欧美三级特黄| 夜夜夜精品看看| 中文日韩欧美| 伊人久久久大香线蕉综合直播| 国产精品免费一区豆花| 国产精品日韩欧美大师| 91久久综合亚洲鲁鲁五月天| 亚洲精品免费在线观看| 久久综合色影院| 亚洲一线二线三线久久久| 亚洲一区二区三区精品在线观看| 欧美亚洲一区二区三区| 欧美美女操人视频| 欧美成人精品三级在线观看| 欧美日韩成人一区二区三区| 一本色道久久综合亚洲二区三区| 亚洲视频播放| 嫩模写真一区二区三区三州| 亚洲在线网站| 欧美婷婷在线| 国产精品实拍| 久久精品一区二区三区不卡| 国产一区二区三区精品久久久| 亚洲人妖在线| 欧美日韩精品二区第二页| 亚洲国产mv| 欧美精品一区二区视频| 欧美午夜理伦三级在线观看| 久久精品视频在线免费观看| 欧美黑人一区二区三区| 国产色综合网| 亚洲激情啪啪| 日韩一级精品视频在线观看| 老牛国产精品一区的观看方式| 国产亚洲综合性久久久影院| 亚洲国产精品va在线观看黑人| 欧美 日韩 国产精品免费观看| 亚洲人妖在线| 亚洲国产精品久久人人爱蜜臀| 日韩视频免费大全中文字幕| 国产日韩高清一区二区三区在线| 久久www免费人成看片高清| 亚洲成在线观看| 欧美日本免费一区二区三区| 国产亚洲欧美激情| 亚洲精品日韩在线| 欧美日韩综合精品| 一区二区久久久久久| 欧美一级大片在线观看| 亚洲欧美综合| 亚洲激情网站免费观看| 亚洲精品国产精品乱码不99按摩| 国产精品乱子久久久久| 国产日韩欧美视频在线| 免费91麻豆精品国产自产在线观看| 久久精品视频在线| 国内一区二区在线视频观看| 国产亚洲a∨片在线观看| 欧美高清视频一区二区三区在线观看| 蜜臀久久99精品久久久久久9| 欧美日韩在线播放三区四区| 99精品视频免费在线观看| 毛片av中文字幕一区二区| 亚洲视频一区二区在线观看| 欧美在线亚洲综合一区| 久久久一本精品99久久精品66| 9色国产精品| 91久久精品国产91久久性色| 午夜精品一区二区三区电影天堂| 香蕉成人啪国产精品视频综合网| 欧美性理论片在线观看片免费| 一本色道久久88亚洲综合88| 精东粉嫩av免费一区二区三区| 国产精品久久久久久亚洲调教| 亚洲久久成人| 激情欧美亚洲| 一区二区在线视频观看| 免费成人在线观看视频| 国产日韩精品在线观看| 国内揄拍国内精品少妇国语| 国产网站欧美日韩免费精品在线观看| 欧美激情精品久久久久久| 91久久久久久久久久久久久| 亚洲砖区区免费| 国产精品爱啪在线线免费观看| 在线亚洲+欧美+日本专区| 1000部精品久久久久久久久| 欧美日韩视频在线一区二区| 欧美精品国产精品日韩精品| 久久久蜜桃一区二区人| 亚洲欧洲av一区二区三区久久| 国产亚洲综合性久久久影院| 亚洲日韩中文字幕在线播放| 黄色国产精品一区二区三区| 欧美日韩精品在线| 亚洲国产视频一区二区| 国产一区导航| 亚洲区一区二| 欧美好骚综合网| 国产亚洲美州欧州综合国| 亚洲欧美日韩一区在线观看| 免费在线观看日韩欧美| 亚洲人屁股眼子交8| 欧美午夜不卡| 久久久av毛片精品| 久久久国产精品亚洲一区| 久久九九精品| 日韩视频免费大全中文字幕| 国产视频精品va久久久久久| 国产精品高潮呻吟视频| 亚洲欧洲日本mm| 亚洲欧美日韩在线一区| 国产中文一区二区| 亚洲综合视频在线| 国产一区二区三区四区| 欧美日韩精品欧美日韩精品一| 久久噜噜噜精品国产亚洲综合| 久久精品五月| 欧美日韩国产大片| 国产欧美丝祙| 性欧美18~19sex高清播放| 亚洲视频一起| 国产精品免费视频xxxx| 久久久久成人精品| 亚洲国产mv| 国产亚洲欧洲997久久综合| 欧美视频免费在线| 国产日本亚洲高清| 欧美午夜免费电影| 久久夜色精品国产欧美乱| 欧美久久久久久| 狼人天天伊人久久| 狠狠综合久久av一区二区小说| 亚洲美女av网站| 亚洲欧美在线磁力| 午夜伦欧美伦电影理论片| 欧美激情综合五月色丁香小说| 欧美噜噜久久久xxx| 亚洲人精品午夜在线观看| 欧美精品一区二区高清在线观看| 蜜臀av一级做a爰片久久| 欧美人成在线视频| 国产日韩精品视频一区二区三区| 国产一区二区三区成人欧美日韩在线观看| 亚洲欧美成aⅴ人在线观看| 久久亚洲欧美国产精品乐播| 久久超碰97人人做人人爱| 久久中文精品| 欧美另类久久久品| 夜夜嗨av一区二区三区网页| 久久久久国内| 久久久久久综合| 亚洲欧洲av一区二区三区久久| 黄色成人在线免费| 激情自拍一区| 久久综合久久综合久久综合| 日韩亚洲欧美在线观看| 久久久99免费视频| 亚洲影院在线| 亚洲天堂免费观看| 国产专区综合网| 国产一区日韩一区| 国产精品久久久久久久久久久久久久| 久久成人精品无人区| 欧美大片在线观看一区二区| 国精品一区二区三区| 99在线观看免费视频精品观看| 欧美粗暴jizz性欧美20| 中日韩午夜理伦电影免费| 国产乱人伦精品一区二区| 国产欧美日韩另类视频免费观看| 欧美国产日本韩| 亚洲欧美日韩视频二区| 一道本一区二区| 午夜精品免费在线| 国产精品久久波多野结衣| 亚洲午夜精品| 亚洲已满18点击进入久久| 国产精品视频yy9299一区| 欧美午夜激情小视频| 免费欧美视频| 欧美在线免费观看亚洲| 欧美日韩国产在线看| 国内精品久久久久影院 日本资源| 激情久久影院| 久久亚洲一区二区三区四区| 欧美精品99| 欧美精品1区2区3区| 亚洲精品激情| 欧美一区二区视频在线观看| 欧美日韩国产a| 国产精一区二区三区| 在线亚洲欧美视频| 亚洲人成在线影院| 午夜精品免费在线| 狠狠v欧美v日韩v亚洲ⅴ| 国产综合婷婷| 美女999久久久精品视频| 亚洲男女自偷自拍| 欧美三级视频在线| 亚洲人成网站精品片在线观看| 亚洲综合精品四区| 国产综合视频| 夜夜嗨av色综合久久久综合网| 在线视频你懂得一区| 久久久高清一区二区三区| 红杏aⅴ成人免费视频| 国产精品高清免费在线观看| 欧美日韩一区二区视频在线| 中文在线资源观看视频网站免费不卡| 欧美一区二区三区免费看| 久久亚洲春色中文字幕| 欧美精品成人一区二区在线观看| 国产一区二区三区四区老人| 欧美日韩精品二区第二页| 欧美成人dvd在线视频| 亚洲精品国产无天堂网2021| 韩国女主播一区二区三区| 尤物九九久久国产精品的特点| 136国产福利精品导航网址| 欧美电影免费观看网站|