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

        ?

        基于Android系統(tǒng)藍(lán)牙開發(fā)的研究與實(shí)現(xiàn)*

        2013-03-11 05:48:42周進(jìn)波袁欽鵬
        光學(xué)儀器 2013年1期
        關(guān)鍵詞:單片機(jī)設(shè)備方法

        周進(jìn)波,張 磊,張 敏,袁欽鵬

        (上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)

        引 言

        Android是Google開發(fā)的一款基于Linux的開源手機(jī)系統(tǒng),由于其完全開放的特點(diǎn),Android開發(fā)群體和用戶越來(lái)越多,逐漸成為市場(chǎng)份額最大的智能手機(jī)操作系統(tǒng)。除了在移動(dòng)通信方面,Android系統(tǒng)已經(jīng)應(yīng)用到其它電子領(lǐng)域,如平板電腦、手持設(shè)備等。設(shè)備間的數(shù)據(jù)傳輸方式主要包括USB 傳輸、紅外傳輸、藍(lán)牙傳輸,USB 傳輸速度快、即插即用、便于擴(kuò)展,Android 系統(tǒng)從SDK3.1 平臺(tái)開始引入ADK(accessory development kit),使不支持USB Host功能的Android設(shè)備可以與其它USB設(shè)備通信。紅外傳輸是一種無(wú)線通信技術(shù),因?yàn)閭鬏斁嚯x較短、易受干擾,現(xiàn)在更多使用藍(lán)牙作為無(wú)線傳輸[1],藍(lán)牙傳輸方便穩(wěn)定。Android系統(tǒng)同時(shí)支持藍(lán)牙通信,通過(guò)對(duì)Android系統(tǒng)的藍(lán)牙開發(fā)研究,對(duì)藍(lán)牙、單片機(jī)編程,以實(shí)現(xiàn)與單片機(jī)通信。

        1 系統(tǒng)設(shè)計(jì)原理

        Android系統(tǒng)控制單片機(jī)步進(jìn)電機(jī)系統(tǒng)結(jié)構(gòu)圖如圖1所示。首先由Android系統(tǒng)提供的藍(lán)牙API接口,編寫應(yīng)用程序,實(shí)現(xiàn)藍(lán)牙設(shè)備的基本操作,設(shè)備連接正常后,通過(guò)Bluetoothsocket實(shí)現(xiàn)數(shù)據(jù)的輸入、輸出。單片機(jī)藍(lán)牙模塊接到數(shù)據(jù)命令后,調(diào)用單片機(jī)控制程序,控制步進(jìn)電機(jī)的加速、減速、轉(zhuǎn)向。

        圖1 系統(tǒng)結(jié)構(gòu)框圖Fig.1 Block diagram of system structure

        2 Android藍(lán)牙應(yīng)用程序設(shè)計(jì)

        2.1 Android藍(lán)牙協(xié)議棧

        Android系統(tǒng)從2.0開始支持藍(lán)牙,使用了BlueZ協(xié)議棧,BlueZ通過(guò)DBUS來(lái)通信交互的。BlueZ是Linux內(nèi)核的官方藍(lán)牙協(xié)議棧,目前在較高Linux內(nèi)核版本中已有支持,也是目前應(yīng)用最廣泛的藍(lán)牙協(xié)議棧,幾乎支持所有已通過(guò)認(rèn)證的藍(lán)牙設(shè)備。該協(xié)議棧由多個(gè)相對(duì)獨(dú)立的模塊組成,內(nèi)核空間主要包括設(shè)備驅(qū)動(dòng)層(藍(lán)牙的設(shè)備驅(qū)動(dòng)一般是指電源的開關(guān)驅(qū)動(dòng)以及通信接口的驅(qū)動(dòng),如串口、USB 等)、L2CAP層與SCO 音頻層、RFCOMM、藍(lán)牙核心及HCI層、BNEP、CMTP層與HIDP層、通用藍(lán)牙SDP庫(kù)和后臺(tái)服務(wù)及面向所有層的標(biāo)準(zhǔn)套接字接口。Android提供Bluetooth通信的API是BlueZ的RFCOMM 的封裝,RFCOMM 層支持標(biāo)準(zhǔn)的套接口,并提供了串行仿真TTY 接口,這使串行端口應(yīng)用程序和協(xié)議可以不加更改地運(yùn)行在藍(lán)牙設(shè)備上[2-4]。藍(lán)牙應(yīng)用程序設(shè)計(jì)主要包括:藍(lán)牙打開、藍(lán)牙查找、藍(lán)牙連接、數(shù)據(jù)通信等四個(gè)模塊[5-6],流程圖如圖2所示。Android系統(tǒng)為藍(lán)牙開發(fā)提供了API,其中最主要的幾個(gè)類包括:

        BluetoothDevice:藍(lán)牙設(shè)備類,包括藍(lán)牙設(shè)備的名稱、MAC地址等信息。

        Bluetoothsocket:藍(lán)牙套接字的接口類,藍(lán)牙設(shè)備間數(shù)據(jù)輸入輸出的連接點(diǎn)。

        BluetoothAdapter:藍(lán)牙適配器類,所有藍(lán)牙設(shè)備交互的接口,包括查找、綁定、監(jiān)聽其它設(shè)備。通過(guò)調(diào)用上面幾個(gè)基本類中的方法可以實(shí)現(xiàn)藍(lán)牙設(shè)備的基本操作。

        圖2 藍(lán)牙通信流程圖Fig.2 Flowchart of bluetooth communication process

        2.2 藍(lán)牙設(shè)備打開

        首先獲取藍(lán)牙適配器,通過(guò)方法GetDefaultAdapter(),返回本地BluetoothAdpter,通過(guò)該對(duì)象就可以操作藍(lán)牙設(shè)備了,如果返回為空,則啟動(dòng)藍(lán)牙失敗,需要檢測(cè)設(shè)備藍(lán)牙模塊是否正常工作。然后判斷藍(lán)牙是否打開,如果藍(lán)牙處于disable狀態(tài),則需要封裝ACTION_REQUEST_ENABLED 到intent對(duì)象,通過(guò)startActivityForResult()方法調(diào)用intent對(duì)象打開藍(lán)牙。

        2.3 藍(lán)牙設(shè)備查找

        獲得藍(lán)牙設(shè)備包括新掃描的設(shè)備和已經(jīng)綁定的設(shè)備,程序先要注冊(cè)一個(gè)ACTION_FOUND 動(dòng)作的廣播,調(diào)用startDiscovery()方法,每次發(fā)現(xiàn)一個(gè)設(shè)備,系統(tǒng)就廣播一次,將設(shè)備的信息包括設(shè)備名、設(shè)備mac加入設(shè)備列表;調(diào)用getBondedDevices()方法得到已綁定的設(shè)備數(shù)量,依次加入到設(shè)備列表。因?yàn)樵谡麄€(gè)掃描過(guò)程要持續(xù)12s左右,占用一定系統(tǒng)資源,在設(shè)備連接之前,程序要調(diào)用cancelDiscovery()方法取消設(shè)備查找,減少資源浪費(fèi)。

        2.4 藍(lán)牙設(shè)備連接

        藍(lán)牙支持點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)的連接方式。作為主設(shè)備,Android 系統(tǒng)中,一個(gè)從設(shè)備擁有一個(gè)RFECOMM 信道,只有當(dāng)主從設(shè)備同時(shí)在一個(gè)信道上,調(diào)用 Bluetoothdevice 類中的createRfcommSocketToServiceRecord(UUID)方法(UUID 為識(shí)別碼),獲取Bluetoothsocket后才能建立連接。連接多個(gè)設(shè)備時(shí),應(yīng)用程序需要建立一個(gè)服務(wù)器端口Bluetoothserversocket,調(diào)用accept()方法監(jiān)聽其它設(shè)備請(qǐng)求,當(dāng)有請(qǐng)求發(fā)出后,將已經(jīng)連接的Bluetoothsocket分配給設(shè)備。

        2.5 藍(lán)牙設(shè)備通信

        設(shè)備連接成功后,主從設(shè)備擁有同一個(gè)Bluetoothsocket,通 過(guò) getInputStream ()、getOutputStream()方法得到數(shù)據(jù)流,然后調(diào)用write()、read()方法寫入或者讀出數(shù)據(jù),對(duì)于復(fù)雜的數(shù)據(jù)傳送可能出現(xiàn)堵塞情況,需要單獨(dú)建立一個(gè)線程實(shí)現(xiàn)。

        至此整個(gè)應(yīng)用程序設(shè)計(jì)完成,圖3為應(yīng)用程序運(yùn)行界面、測(cè)試結(jié)果圖。

        3 單片機(jī)程序設(shè)計(jì)

        步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度,它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的??梢酝ㄟ^(guò)控制脈沖個(gè)數(shù)來(lái)控制角位移量,達(dá)到準(zhǔn)確定位的目的;可以通過(guò)調(diào)整每相通電順序,改變電機(jī)轉(zhuǎn)動(dòng)方向;可以通過(guò)控制脈沖頻率來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度,達(dá)到調(diào)速的目的[7]。設(shè)計(jì)采用AT89C52單片機(jī)作為控制器芯片,ULN2003芯片作為脈沖驅(qū)動(dòng)芯片,藍(lán)牙串口模塊采用HC-06,步進(jìn)電機(jī)采用M35SP-9四相電機(jī),具有調(diào)速、調(diào)向的功能,數(shù)據(jù)接收、發(fā)送采用查詢的方式[8],程序流程如圖4所示。應(yīng)用程序發(fā)送控制命令,單片機(jī)接收后調(diào)用對(duì)應(yīng)的命令子程序,最后返回當(dāng)前運(yùn)行狀態(tài)給應(yīng)用程序。

        圖3 應(yīng)用程序運(yùn)行效果圖Fig.3 Running effect of application program

        圖4 程序流程圖Fig.4 Program flowchart

        4 結(jié) 論

        Android系統(tǒng)的應(yīng)用越來(lái)越廣泛,其中藍(lán)牙是一種主要的數(shù)據(jù)傳輸方式,通過(guò)對(duì)Android系統(tǒng)藍(lán)牙編程,完成了應(yīng)用程序界面編寫及單片機(jī)步進(jìn)電機(jī)驅(qū)動(dòng)程序設(shè)計(jì),實(shí)現(xiàn)了Android系統(tǒng)與單片機(jī)之間的藍(lán)牙通信。實(shí)踐表明,該通信方式數(shù)據(jù)傳輸穩(wěn)定、控制精度高,對(duì)Android系統(tǒng)的應(yīng)用具有積極的指導(dǎo)意義。

        [1] 鄔正義,范 瑜,徐惠鋼.現(xiàn)代無(wú)線通信技術(shù)[M].北京:高等教育出版社,2006:342-343.

        [2] 郭宏志.Android應(yīng)用開發(fā)詳解[M].北京:電子工業(yè)出版社,2010:173-175.

        [3] 楊文志.Google Android程序設(shè)計(jì)指南[M].北京:電子工業(yè)出版社,2009:210-212.

        [4] 李黎國(guó),張 輝,程 號(hào).基于Android健康服務(wù)終端藍(lán)牙傳輸軟件的設(shè)計(jì)[J].電子科技,2012,25(5):115-118.

        [5] MILIER B A.藍(lán)牙核心技術(shù)[M].北京:機(jī)械工業(yè)出版社,2001:180-182.

        [6] 朱 剛,談?wù)褫x,周賢偉.藍(lán)牙技術(shù)原理與協(xié)議[M].北京:北方交通大學(xué)出版社,2002:200-201.

        [7] 胡虔生,胡敏強(qiáng).電機(jī)學(xué)[M].北京:中國(guó)電力出版社,2009:145-146.

        [8] 陳貴銀.單片機(jī)原理及接口技術(shù)[M].北京:電子工業(yè)出版社,2011:98-100.

        猜你喜歡
        單片機(jī)設(shè)備方法
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
        電子制作(2019年13期)2020-01-14 03:15:28
        基于單片機(jī)的層次漸變暖燈的研究
        電子制作(2019年15期)2019-08-27 01:12:10
        基于單片機(jī)的便捷式LCF測(cè)量?jī)x
        電子制作(2019年9期)2019-05-30 09:42:02
        基于MPU6050簡(jiǎn)單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        可能是方法不對(duì)
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        用對(duì)方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        捕魚
        日本高清一区二区三区在线观看| 亚洲电影中文字幕| 中文无码免费在线| 色视频不卡一区二区三区| 欧美激情肉欲高潮视频| 色老头在线一区二区三区| 视频一区精品自拍| 亚洲国产一区中文字幕| av高清在线不卡直播| 国产精品久久久久久婷婷| 国产在线精品一区二区在线看| 亚洲午夜精品国产一区二区三区| 亚洲av毛片在线免费观看| 久久精品人妻无码一区二区三区| 精品久久久久久久久午夜福利| 亚洲日本VA午夜在线电影| 91九色视频在线国产| 高清精品一区二区三区| 亚洲深深色噜噜狠狠爱网站| 无码成人AV在线一区二区| 91久久国产香蕉熟女线看| 亚洲欧美色一区二区三区| 无码人妻丰满熟妇精品区| 99久久久精品国产性黑人| 亚洲伊人av天堂有码在线| 亚洲va久久久噜噜噜久久男同| 色yeye免费视频免费看| 久久久人妻一区精品久久久| 国产精品久久久天天影视| 亚洲av永久无码精品一区二区| 免费看国产精品久久久久| 国产精品久久av高潮呻吟| 欧美精品videosse精子| 日本丶国产丶欧美色综合| 日韩av一区在线播放| 国产精品久久免费中文字幕| 亚洲性爱视频| 人妻被猛烈进入中文字幕| 亚洲日本高清一区二区| 日本乱偷人妻中文字幕| 99视频在线国产|