亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Matlab GUI的上位機(jī)與智能車的兩種實(shí)時(shí)通信※*

        2012-08-27 08:32:54蔣超劉新曾義和
        關(guān)鍵詞:PC機(jī)中斷上位

        蔣超,劉新,曾義和

        (湘潭大學(xué) 材料與光電物理學(xué)院,湘潭411105)

        引 言

        在以速度決定優(yōu)劣的飛思卡爾智能車比賽中,任何因素都可能影響小車的運(yùn)行。為了滿足對(duì)小車在賽道中各種狀態(tài)精確分析的需求,上位機(jī)的數(shù)據(jù)采集與處理要求通信波特率高、信號(hào)傳輸穩(wěn)定、不丟包、數(shù)據(jù)處理量大、數(shù)據(jù)處理及時(shí)等。在基于Matlab環(huán)境下的串口通信中,查詢方式下的非實(shí)時(shí)串行通信技術(shù)對(duì)實(shí)時(shí)性要求很高的智能車通信有很大的局限性。而在目前普遍采用的中斷機(jī)制下的通信雖然可以滿足實(shí)時(shí)性的需要,卻需要修改Matlab自帶的instrcallback回調(diào)函數(shù)。程序調(diào)試過程中修改了回調(diào)函數(shù)后,需要重新啟動(dòng)Matlab才能使得新的回調(diào)函數(shù)文件生效。由此可以看出,其操作復(fù)雜易出錯(cuò),且instrcallback函數(shù)接收到保存在工作空間的數(shù)據(jù)不能被GUI組件的函數(shù)實(shí)時(shí)調(diào)用。故此方式在需要對(duì)多組數(shù)據(jù)進(jìn)行分別作圖分析時(shí),往往生成多個(gè)零散圖形窗口。為了滿足智能車的實(shí)時(shí)通信需求,同時(shí)使基于Matlab GUI的通信界面更加簡潔,本文提出了一種將事件中斷函數(shù)寫入GUI組件函數(shù)中的方式。

        Matlab是由美國Mathworks公司開發(fā)的面向理論分析研究及工程設(shè)計(jì)處理和繪圖的一套具有強(qiáng)大功能的軟件系統(tǒng)。Matlab運(yùn)行穩(wěn)定、可靠,使用方便,是廣大科研人員進(jìn)行科學(xué)研究的得力助手。從Matlab6.0版本開始,Mathworks公司在軟件中增加了設(shè)備控制箱(instrument control toolbox),提供了對(duì)RS-232/RS-485通信標(biāo)準(zhǔn)的串口通信的正式支持。Matlab GUI(Graphic User Interface)是內(nèi)置于Matlab的進(jìn)行圖形界面開發(fā)的模塊。本文主要介紹在Matlab GUI環(huán)境下,上位機(jī)與智能車進(jìn)行實(shí)時(shí)通信的辦法。該方法較之使用VC/VB高級(jí)語言編程,大大縮減了開發(fā)時(shí)間,提高了開發(fā)效率。另外,較之傳統(tǒng)的RS-232接口,使用藍(lán)牙接口能夠更大范圍地全方位進(jìn)行數(shù)據(jù)傳輸和采集。實(shí)驗(yàn)結(jié)果表明,經(jīng)過兩次握手處理后數(shù)據(jù)傳輸實(shí)時(shí)穩(wěn)定,具有很強(qiáng)的實(shí)用性。

        1 系統(tǒng)總體設(shè)計(jì)方案

        系統(tǒng)采用飛思卡爾MC68HCS12G128單片機(jī)作為智能車的控制器,PC機(jī)為上位機(jī)。利用Matlab GUI構(gòu)建起二者的實(shí)時(shí)通信、數(shù)據(jù)處理和繪圖等平臺(tái)。整個(gè)系統(tǒng)的原理框圖如圖1所示,介紹了基于Matlab的GUI和串口通信機(jī)制下建立上位機(jī)與智能車實(shí)時(shí)通信和作圖的平臺(tái)方法。

        圖1 系統(tǒng)原理框圖

        智能車與PC機(jī)通過藍(lán)牙相連,系統(tǒng)工作時(shí),由Matlab調(diào)用設(shè)備控制工具箱中的serial類函數(shù)來設(shè)置串口屬性,創(chuàng)建串口對(duì)象,從而實(shí)現(xiàn)Matlab對(duì)串口的控制和讀寫操作。在對(duì)智能車的調(diào)試過程中,可以通過Matlab向藍(lán)牙發(fā)送特殊指令,啟動(dòng)智能車。在智能車系統(tǒng)運(yùn)行后便可以將所采集位置和速度等數(shù)據(jù)通過藍(lán)牙回送給PC 機(jī)。由Matlab通過中斷方式實(shí)時(shí)接收數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行分析和處理,實(shí)時(shí)繪出相應(yīng)的圖形。

        2 Matlab GUI設(shè)計(jì)介紹

        ②點(diǎn)擊Blank GUI(Default)選項(xiàng)并點(diǎn)擊OK 按鈕,完成新建Blank GUI。

        ③在新建的Blank GUI界面的右方菜單中添加設(shè)計(jì)所需要的元素,完成串口通信及數(shù)據(jù)實(shí)時(shí)顯示等功能的GUI界面設(shè)計(jì)。

        ④編寫GUI組建相應(yīng)的響應(yīng)控制代碼,運(yùn)行后的通信仿真界面如圖2所示。

        3 單片機(jī)與PC機(jī)串行通信

        3.1 設(shè)計(jì)思想

        圖2 響應(yīng)后的Matlab GUI通信仿真界面

        MC68HCS12G128單片機(jī)的軟件設(shè)計(jì)需要實(shí)現(xiàn)對(duì)程序的初始化、接收與發(fā)送串口信號(hào)、速度和位置數(shù)據(jù)的采集等功能。為了保證上位機(jī)采集數(shù)據(jù)的可靠性和穩(wěn)定性,防止出現(xiàn)丟包事件,在通信過程中約定了雙方的握手方法。在程序初始化以后,等待fwrite命令發(fā)送的握手信號(hào)0xFF。當(dāng)單片機(jī)第一次接收到的信號(hào)為0xFF時(shí),則握手成功,并開始運(yùn)行電機(jī)和激光頭等子程序。在實(shí)驗(yàn)過程中發(fā)現(xiàn)存在發(fā)送的第一組數(shù)據(jù)第一個(gè)字節(jié)丟失的現(xiàn)象,為了增強(qiáng)數(shù)據(jù)的可靠性,首先判斷數(shù)據(jù)包的前兩個(gè)字節(jié)是否為0xFF,是則剔除相應(yīng)字節(jié),分離出有效的數(shù)據(jù),再在回送的速度、激光傳感器的數(shù)據(jù)中嵌入兩個(gè)字節(jié)的握手信號(hào)0xFF,Matlab接收到串口的數(shù)據(jù)后進(jìn)行相應(yīng)的處理。智能車控制器通信的總程序流程如圖3所示。

        圖3 智能車控制器通信程序總流程圖

        3.2 系統(tǒng)藍(lán)牙串口通信主要代碼

        4 基于Matlab GUI的PC機(jī)與智能車的通信

        4.1 Matlab GUI基礎(chǔ)上實(shí)現(xiàn)串口通信的軟件設(shè)計(jì)

        在Matlab環(huán)境下,讀取串口數(shù)據(jù)有查詢和中斷兩種方式。查詢方式數(shù)據(jù)只能分批進(jìn)行傳送,實(shí)時(shí)性不高,且對(duì)系統(tǒng)資源的占用比較大。以中斷方式實(shí)現(xiàn)的串口通信,通常的處理方式是對(duì)Matlab提供的instrcallback回調(diào)函數(shù)進(jìn)行修改,采用事件驅(qū)動(dòng)的方式,達(dá)到實(shí)時(shí)處理下位機(jī)傳送數(shù)據(jù)的目的。但是采用Matlab的事件和回調(diào)函數(shù)機(jī)制編程要相對(duì)復(fù)雜一些,在對(duì)instrcallback函數(shù)進(jìn)行修改和備份等操作時(shí)容易出錯(cuò)且比較麻煩。另外,每次修改instrcallback函數(shù)后都要重新啟動(dòng)Matlab,可能會(huì)導(dǎo)致數(shù)據(jù)丟失等一些不必要的麻煩。將事件驅(qū)動(dòng)函數(shù)寫入GUI組件的M 文件中,可以減少編程的復(fù)雜性,避免一些不必要的麻煩,實(shí)現(xiàn)串口之間的實(shí)時(shí)通信。

        4.2 設(shè)備控制工具箱介紹

        Matlab設(shè)備控制工具箱主要是提供Matlab軟件與各種智能儀器的直接通信功能。工具箱提供了以下功能:

        ①支持串行接口(RS-232/RS-422/RS-485)、GPIB接口(IEEE 488)等通信協(xié)議。

        ②支持IVI、VXI plug &play 和Matlab 設(shè)備驅(qū)動(dòng)(instrument drivers),不需要學(xué)會(huì)寫與設(shè)備相關(guān)的指令即能與儀器直接聯(lián)通。

        ③傳輸?shù)臄?shù)據(jù)可以是文本或二進(jìn)制的(數(shù)字的)。

        ④支持同步和異步(有阻塞或無阻塞)通信。

        ⑤支持基于事件的通信。

        ⑥新的TMTOOL 圖形用戶接口不僅能夠連接儀器、接收/發(fā)送數(shù)據(jù),而且可以自動(dòng)生成M 代碼文件,以加入編寫的Matlab程序中。

        5 基于Matlab GUI查詢方式實(shí)現(xiàn)異步串行通信

        基于Matlab查詢方式的非實(shí)時(shí)串口通信雖然編程簡單,對(duì)數(shù)據(jù)的調(diào)用處理也更為容易,但是只能接收一個(gè)過程的數(shù)據(jù),這在對(duì)實(shí)時(shí)性要求較高的系統(tǒng)中往往不能滿足設(shè)計(jì)者的需求。以下為部分通信程序代碼。

        事件驅(qū)動(dòng)方式的優(yōu)點(diǎn)是程序響應(yīng)及時(shí),可靠性高。在Matlab環(huán)境下實(shí)現(xiàn)實(shí)時(shí)通信的中斷方式,實(shí)際上就是采用事件驅(qū)動(dòng)的方式實(shí)現(xiàn)的,類似于VB 語言MSComm 控件中OnComm 事件的實(shí)現(xiàn)方法。當(dāng)串口上監(jiān)視到緩沖區(qū)有指定字節(jié)數(shù)目的數(shù)據(jù)可用(bytes-available event),串口接收到的數(shù)據(jù)長時(shí)間處于非激活狀態(tài)(break-interrupt event),串行口引腳狀態(tài)改變(pin-status event)或輸出緩沖區(qū)為空(output empty event)等事件發(fā)生時(shí),Matlab會(huì)自動(dòng)調(diào)用回調(diào)函數(shù)進(jìn)行通信事件的處理。因此,事件驅(qū)動(dòng)實(shí)質(zhì)上是一種中斷機(jī)制,而回調(diào)函數(shù)實(shí)質(zhì)上相當(dāng)于一個(gè)中斷服務(wù)子程序。Matlab 端實(shí)時(shí)串行通信的程序流程如圖4所示。以下為兩種不同的方式實(shí)現(xiàn)實(shí)時(shí)通信的中斷機(jī)制程序。

        6.1 將中斷服務(wù)子程序?qū)懭隚UI組件的部分M 文件代碼

        主程序創(chuàng)建串口設(shè)備對(duì)象、設(shè)置串口設(shè)備屬性及打開串口等初始化操作的代碼與查詢方式下的初始化代碼相同:

        圖4 Matlab端實(shí)時(shí)串行通信流程圖

        6.2 通過調(diào)用修改后的instrcallback.m 文件實(shí)現(xiàn)中斷

        主程序:

        修改instrcallback(obj,event)回調(diào)函數(shù),instrcallback.m 文件包含了Matlab提供的回調(diào)函數(shù)程序模板,設(shè)計(jì)者可以根據(jù)需要自行添加相應(yīng)的服務(wù)程序代碼。Matlab安裝目錄下有兩個(gè)instrcallback.m 文件,只需要修改 \MATLAB\toolbox\matlab\iofun\@instrument目錄下的instrcallback.m 文件即可。另外,在修改instrcallback.m文件之前,最好對(duì)其做一個(gè)備份。在修改了instrcallback(obj,event)回調(diào)函數(shù)后,需要對(duì)其進(jìn)行保存,重新啟動(dòng)Matlab配置該文件,才使修改后的函數(shù)生效。

        圖5為以下方式實(shí)現(xiàn)的智能車啟動(dòng)過程速度的實(shí)時(shí)顯示,修改后的instrcallback.m 文件主要程序代碼如下:

        圖5 智能車啟動(dòng)過程速度實(shí)時(shí)顯示

        實(shí)驗(yàn)證明,基于Matlab事件驅(qū)動(dòng)實(shí)現(xiàn)的智能車與上位機(jī)的實(shí)時(shí)串口通信可以很好地滿足智能車調(diào)試過程中的需要,且將中斷服務(wù)子程序?qū)懭隚UI組件和修改instrcallback.m 文件兩種方式的通信都穩(wěn)定可靠。

        結(jié) 語

        在Matlab環(huán)境下兩種實(shí)現(xiàn)智能車與PC機(jī)實(shí)時(shí)通信的中斷機(jī)制都能實(shí)時(shí)穩(wěn)定地進(jìn)行數(shù)據(jù)傳輸,不過將中斷服務(wù)子程序?qū)懭隚UI組件的方式編程簡單,數(shù)據(jù)處理方便,實(shí)現(xiàn)更為容易,開發(fā)效率相對(duì)得到了較大的提高。實(shí)踐證明,采用這種方法是可行的,它不但能夠應(yīng)用于本文的智能車系統(tǒng),也可廣泛應(yīng)用在其他具有串口通信能力的儀器設(shè)備中。

        編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。

        [1]Matlab.Instrument Control Toolbox User's Guide,2011.

        [2]求是科技.MATLAB7.0從入門到精通[M].北京:人民郵電出版社,2006:356-358.

        [3]向先波,徐國華,張琴.Matlab環(huán)境下PC機(jī)與單片機(jī)的串行通信及數(shù)據(jù)處理[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2004(12):27-31.

        猜你喜歡
        PC機(jī)中斷上位
        特斯拉 風(fēng)云之老阿姨上位
        車迷(2018年12期)2018-07-26 00:42:22
        基于PC機(jī)與單片機(jī)的多機(jī)通信技術(shù)及抗干擾方法
        基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實(shí)現(xiàn)
        跟蹤導(dǎo)練(二)(5)
        千里移防,衛(wèi)勤保障不中斷
        解放軍健康(2017年5期)2017-08-01 06:27:44
        VC.NET下實(shí)現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
        電子制作(2017年23期)2017-02-02 07:16:47
        “三扶”齊上位 決戰(zhàn)必打贏
        基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
        以新思路促推現(xiàn)代農(nóng)業(yè)上位
        AT89C51與中斷有關(guān)的寄存器功能表解
        少妇厨房愉情理伦bd在线观看 | 国产饥渴的富婆一凶二区| 在线看片国产免费不卡| 久久深夜中文字幕高清中文| 亚洲第一幕一区二区三区在线观看 | 国产九色AV刺激露脸对白| 内射中出后入内射极品女神视频| 亚洲精品粉嫩美女一区| 国产又大又黑又粗免费视频| 免费无码午夜福利片69| 久久中文字幕亚洲精品最新| 久久精品国产亚洲av高清蜜臀| 一本久道竹内纱里奈中文字幕| 小sao货水好多真紧h无码视频| 醉酒后少妇被疯狂内射视频| 日日噜噜夜夜狠狠2021| 中文字幕亚洲五月综合婷久狠狠 | 高潮内射双龙视频| 中文字幕精品久久久久人妻| 99热这里只有精品3| av网站可以直接看的| 不卡的高清av一区二区三区| 真人作爱免费视频| 色欲AV成人无码精品无码| 亚洲精品天堂日本亚洲精品| 国产又猛又黄又爽| 久久韩国漫画无删减漫画歪歪漫画 | 日韩精品无码久久一区二区三| 亚洲精品中文字幕不卡在线| 美女丝袜诱惑在线播放蜜桃| 曰本女人与公拘交酡| 亚洲 欧美 综合 另类 中字| 大量老肥熟女老女人自拍| 国产欧美综合一区二区三区| 午夜dj在线观看免费视频 | 国产黄色三级三级三级看三级| 国产一区二区三区小说| 久久久久久久无码高潮| 北岛玲日韩精品一区二区三区 | 97青草超碰久久国内精品91| 又大又长粗又爽又黄少妇视频|