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

        ?

        基于Android和Ardunio的移動便攜點名系統(tǒng)開發(fā)

        2014-02-26 05:49:16吳元君
        巢湖學院學報 2014年3期
        關鍵詞:設備系統(tǒng)

        吳元君

        (安徽財貿職業(yè)學院,安徽 合肥 230601)

        1 引言

        學生上課的出勤率是學校教務部門需要考查的一項重要數(shù)據(jù),也是班級和學生評優(yōu)評獎的重要指標。在高等院校,特別是多個班級合班的大課,教師在上課前點名會耗費大量時間。而且對于班主任而言,除了到班級檢查外,無法及時獲得曠課的學生信息。為了幫助授課教師提高點名的效率,協(xié)助班主任及時了解班級出勤率,為學生考試、評優(yōu)提供依據(jù),同時將這些數(shù)據(jù)共享發(fā)布,項目組研究開發(fā)了一個基于Android和Ardunio的移動便攜點名系統(tǒng)。

        系統(tǒng)采用目前主流的射頻卡RFID(工作頻率為125KMHz,如飯卡、上機卡等)技術標識學生身份,采用相應的讀卡模塊,利用Arduino Nano讀取并處理射頻卡數(shù)據(jù),并將該數(shù)據(jù)以目前廣泛普及的藍牙技術發(fā)送給移動智能設備客戶端,如采用Android操作系統(tǒng)的智能手機等,完成點名的操作,并最終利用智能設備的WIFI或3G功能將點名信息上傳至學校教務部門公網服務器,達到數(shù)據(jù)共享的目的[1]。該系統(tǒng)方案成本較低,不增加學生負擔,對教師而言,只需要配備一款基于Android操作系統(tǒng)的手機即可使用,具有一定的推廣價值。

        2 關鍵技術

        2.1 Android平臺

        Android名詞源于法國作家的科幻小說《未來夏娃》中的小機器人,2005年Google收購了剛成立22個月的Android公司,開始開發(fā)名為Android的開放源代碼的移動系統(tǒng),Android軟件系列包括了操作系統(tǒng)、中間件和一些關鍵應用。Android代碼開源的特性,利于開發(fā)人員明確細節(jié),開發(fā)出差異化的應用程序。Android的源代碼遵循 Apache V2軟件許可,而不是 GPL v2許可證,非常利于商業(yè)開發(fā)。目前Android基于 QEMU開發(fā)的模擬器調試手段有限,僅支持通話、SMS等,且運行效率較低[2]。但是,Android豐富的開發(fā)工具,包括模擬機、調試工具、內存運行檢測,以及為 Eclipse所寫的 ADT插件,深受廣大開發(fā)人員歡迎。

        2.2 Arduino平臺

        Arduino是一個基于開放原始碼的軟硬體平臺,是一款便捷靈活、方便上手的開源電子原型平臺,包含硬件(各種型號的arduino板)和軟件(arduino IDE)。Arduino構建于開放原始碼simple I/O介面版,并且具有使用類似Java,C語言的Processing/Wiring開發(fā)環(huán)境。

        Arduino能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、馬達和其他的裝置來反饋、影響環(huán)境。板子上的微控制器可以通過Arduino的編程語言來編寫程序,編譯成二進制文件,燒錄進微控制器。對Arduino的編程是利用 Arduino編程語言 (基于 Wiring)和Arduino開發(fā)環(huán)境(based on Processing)來實現(xiàn)的?;贏rduino的項目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運行的軟件,他們之間進行通信(比如 Flash,Processing,MaxMSP)來實現(xiàn)[3]。

        3 系統(tǒng)硬件原理及設計

        3.1 RFID讀卡模塊

        RDM630系列非接觸式射頻ID卡專用模塊,釆用先進的射頻接收線路及嵌入式微控制器設計,結合高效譯碼算法,完成對EM4100兼容式ID卡的數(shù)據(jù)接收。具有接收靈敏度高、工作電流小、穩(wěn)定性高等特點,適用于門禁、考勤、收費、防盜、巡更等各種射頻識別應用領域。

        該模塊可以讀取125K EM4100系列RFID卡,且使用方便,供電后串口連接Arduino主板即可。當有RFID卡進入讀卡范圍時,模塊會通過串口直接把卡號發(fā)送給Arduino。如果再用繼電器模塊連接Arduino的話,就可以實現(xiàn)簡單的門禁控制。

        數(shù)據(jù)輸出格式如下:

        (1)9600bps,N,8,1

        (2)CHECKSUM:card 10byte DATA entire do XOR operation

        ?

        卡號:62E3086CED

        輸出:36H、32H、45H、33H、30H、38H、36H、43H、45H、44H

        CHECKSUM:(62H)XOR (E3H)XOR (08H)XOR (6CH)XOR (EDH)=08H

        3.2 藍牙模塊

        核心模塊使用HC-06從模塊,引出接口包括VCC、GND、TXD、RXD,預留LED狀態(tài)輸出腳。led指示藍牙連接狀態(tài),閃爍表示沒有藍牙連接,常亮表示藍牙已連接并打開了端口。底板設置LDO,輸入電壓3.6-6V,未配對時電流約30mA,配對后約10mA。接口電平3.3V,可以直接連接各種單片機(51,AVR,PIC,ARM,MSP430等)。配對以后當全雙工串口使用,僅支持8位數(shù)據(jù)位、1位停止位、無奇偶校驗的通信格式。配對后只需要當成固定波特率的串口一樣使用即可,因此只要是以“固定波特率,8位數(shù)據(jù)位,無奇偶校驗”通信格式的串口設備都可以直接取代原來的有線串口而不需要修改程序。如數(shù)據(jù)采集、智能車、串口打印機、戶外點陣條屏控制等[4]。適合手機跟設備間通過藍牙串口通信。

        3.3 Arduino Nano

        Arduino Nano是Arduino USB接口的微型版本,最大的不同是沒有電源插座以及USB接口是Mini-B型插座。Arduino Nano是尺寸非常小的而且可以直接插在面包板上使用。其處理器核心是ATmega328(或ATmega168),同時具有14路數(shù)字輸入/輸出口(其中6路可作為PWM輸出),8路模擬輸入,一個16MHz晶體振蕩器,一個mini-B USB口,一個ICSP header和一個復位按鈕。

        該板提供一個硬件串口(TX pin、RX Pin),可以連接其它TTL電平設備,作為數(shù)據(jù)通訊[5]。作為擴展,可以通過SoftSerial類創(chuàng)建軟串口,連接其它串口設備。實現(xiàn)后的藍牙RFID讀卡器原理圖如圖1。

        圖1 藍牙RFID讀卡器原理圖

        4 系統(tǒng)軟件環(huán)境及設計

        4.1 軟件環(huán)境

        本系統(tǒng)硬件設備部分,使用開源的eclipse集成開發(fā)環(huán)境,并安裝了Arduino插件以提供支持。應用系統(tǒng)部分,使用微軟Visual Studio 2010,配合微軟SQLServer 2008 R2 Express完成數(shù)據(jù)的存儲,并提供Web服務。

        4.2 對RFID讀卡模塊的封裝

        該部分主要是利用面向對象的方法,將硬件設備抽象為類,如類Rfid表示RFID讀卡器,類Led表示指示燈,類Buzzer表示蜂鳴器等。這樣做可以極大提供代碼的利用率,提高程序的可讀性[6]。關鍵代碼如下:

        bool Rfid::nextCard(unsigned char*card) {

        hasCard=false;

        //把現(xiàn)有的數(shù)據(jù)放入數(shù)組

        while (Serial.available() > 0) {

        //加入判斷,位置0時,數(shù)據(jù)應為2,位置13時,數(shù)據(jù)應為3

        unsigned char c;

        c=Serial.read();

        if(currentByte==0&&c!=2) {

        continue;

        }

        if(currentByte==13&&c!=3) {

        currentByte=0;

        continue;

        }

        newData[currentByte++]=c;

        //放入14個以后,退出

        if(currentByte >=14) {

        //比較前后兩次讀取的是否一致,如果不一致,則表示是新卡

        for(currentByte=0;currentByte<14;currentByte++){

        if (preData[currentByte]!=newData[currentByte]){

        preData[currentByte]=newData[currentByte];

        hasCard=true;

        }

        }

        if(hasCard==true) {

        for(currentByte=0;currentByte< 14;currentByte++){

        card[currentByte]=newData[currentByte];

        }

        }

        4.3 Arduino Nano上的程序

        Nano上首先實例化RFID讀卡器,不停的查詢是否有磁卡接近,當有磁卡接近,讀取卡號并將卡號發(fā)送給藍牙模塊。關鍵代碼如下:

        #include “SendCardByBT3.h”

        #include “Rfid.h”

        #include “SoftwareSerial.h”

        //因為Nano版只有一個硬串口,所以使用軟串口連接藍牙

        SoftwareSerial mySerial(7,8);//使用Pin7作為軟串口的RX,使用Pin8作為軟串口的TX

        //RFID模塊

        Rfid*rfid;

        //存儲卡號的臨時數(shù)組

        unsigned char card[14];

        //存儲卡號的臨時字符串對象

        String s;

        //蜂鳴器//Buzzer*buzzer;

        void setup() {

        rfid=new Rfid();//實例化 RFID 讀卡器模塊

        //buzzer=new Buzzer(4);//實例化蜂鳴器,用 Pin4 進行控制

        //

        mySerial.begin(9600);//軟串口開始工作,準備向藍牙模塊發(fā)送卡片信息

        }

        void loop() {

        //當讀到有卡片時,從藍牙將卡號發(fā)出

        if(rfid->nextCard(card) ==true) {

        s= “”;

        for(int i=1;i< 11;i++){

        s.concat((char)card[i]);

        }

        mySerial.println(s+ “ ”);//把卡號發(fā)送到藍牙模塊,并附帶換行符,以便 Java

        //能順利讀取數(shù)據(jù)

        //buzzer->beep();//讀取一個磁卡,蜂鳴器發(fā)出一次聲音

        }

        }

        4.4 Android手機上連接藍牙獲取磁卡信息的程序

        手機端藍牙與藍牙模塊配對后,會一直讀取藍牙模塊輸入流的數(shù)據(jù),以判斷是否有新卡信息到達[7]。當有新卡信息到達時,會自動更新對應學生的出勤狀態(tài);否則,繼續(xù)等待。如果這個操作在Activity主線程中運行的話,必然導致界面無法響應用戶操作。因此,在獲取藍牙輸入流后,需要單獨開啟一個線程運行讀卡信息的操作。當藍牙模塊關閉或Activity主線程結束時,該讀卡信息的線程會自動結束。該過程可參照流程圖見圖2,關鍵代碼如下。

        圖2 流程圖

        //啟用手機藍牙設備

        @Override

        protected void onStart(){//在Activity啟動時,判斷手機藍牙是否啟用

        super.onStart();

        if(!bluetoothAdapter.isEnabled()) {

        //請求藍牙權限

        Intent intent=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

        startActivityForResult(intent,REQUEST_BLUETOOTH_ENABLED);

        }

        }

        //連接藍牙讀卡器后需要進行讀卡操作,因此使用單獨的線程運行

        private void connectDevice(final String address) {

        new Thread(new Runnable(){

        public void run() {

        try{

        //獲取要連接的藍牙設備

        BluetoothDevice device=bluetoothAdapter

        .getRemoteDevice(address);

        /

        /創(chuàng)建Socket連接

        bluetoothSocket=device

        .createRfcommSocketToServiceRecord(MY_UUID);

        //進行連接

        bluetoothSocket.connect();

        Log.d(“Message”, “啟動讀卡線程“);//輸入操作日志

        //開始讀卡

        readCards();

        }catch (Exception e) {

        e.printStackTrace();

        }

        }

        }).start();

        }

        //讀卡操作的線程

        private void readCards() {

        BufferedReader reader=null;

        String nextCard=null;

        String preCard=null;

        try{

        reader=new BufferedReader(new InputStreamReader(

        bluetoothSocket.getInputStream()));

        while ((nextCard=reader.readLine()) !=null) {

        if(!nextCard.equals(preCard)) {

        //讀到新卡信息,更新對應學生出勤狀態(tài)

        }

        }

        }catch (Exception e) {

        }finally{//…

        }

        }

        5 系統(tǒng)實現(xiàn)

        該系統(tǒng)基于RFID技術標示學生身份,采用開源的硬件平臺Arduino作為主控設備,與采用單片機作為主控設備相比,該方案可擴展性更強,操作更為方便;同時,利用藍牙技術,在智能設備與Arduino之間建立起連接,借助智能設備的WIFI或3G功能共享數(shù)據(jù)[8]。使用智能Android設備配合射頻卡完成上課點名的操作是本系統(tǒng)的亮點,此外,系統(tǒng)還設計了完整的應用程序,方便用戶操作。系統(tǒng)結構圖如圖3所示。

        圖3 系統(tǒng)結構圖

        6 結束語

        系統(tǒng)有較強的實用性,RFID藍牙讀卡器價格普遍在500元以上,而該方案的成本可以控制在200元以內,利用該系統(tǒng)不僅可以極大提高點名效率,而且教學相關人員可以及時了解和監(jiān)控學生上課情況。該系統(tǒng)支持多種Android終端設備,如手機、電腦等,RFID技術的普及、智能設備的廣泛使用也都為該系統(tǒng)在校園的普及奠定了基礎。

        [1] 楊豐盛.Android應用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010.

        [2] 楊明極,畢晶.基于 Android 視頻客戶端的設計[J].電視技術,2012,(3):43-47.

        [3] H.Hagras,Victor Callaghan,Martin Colley,Graham Clarke,Anthony Pounds-Cornish,and Hakan Duman.Creating an ambient-telligence environment using embedded agents[J].IEEE Intelligent Systems,2004,(4):12-20.

        [4] 周時偉,謝維波.基于Android的智能家居終端設計與實現(xiàn)[J].微型機與應用,2012,(14):10-13

        [5] 王朝華,陳德艷,黃國宏,等.基于Android的智能家居系統(tǒng)的研究與實現(xiàn)[J].計算機技術與發(fā)展,2012,(6):225-228.

        [6] 詹成國,朱偉,徐敏.基于Android的測控裝置人機界面的設計與開發(fā)[J].電力自動化設備,2012,(1):119-122

        [7] 唐賽武,滿君豐,謝成劍.便于省時排隊的無線監(jiān)測系統(tǒng)的研制[J].福建電腦,2012,(11):35-37.

        [8] 宮磊,周聰.基于Android的移動終端應用程序開發(fā)與研究[J].計算機與現(xiàn)代化,2008,(8):85-89

        猜你喜歡
        設備系統(tǒng)
        諧響應分析在設備減振中的應用
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        基于VB6.0+Access2010開發(fā)的設備管理信息系統(tǒng)
        基于MPU6050簡單控制設備
        電子制作(2018年11期)2018-08-04 03:26:08
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        500kV輸變電設備運行維護探討
        中出内射颜射骚妇| 久久国产A∨一二三| 日韩精品视频在线一二三| 日本韩国亚洲三级在线| 高潮毛片无遮挡高清视频播放| 国产区一区二区三区性色| 东北女人啪啪对白| 国产裸拍裸体视频在线观看| 国产精品23p| 亚洲二区三区四区太九| 精品在线视频在线视频在线视频| 精品国产一区二区三区三| 免费a级作爱片免费观看美国| 北条麻妃毛片在线视频| 日本一区二区三区资源视频| 日本高清在线一区二区| av在线观看免费天堂| 欧美大成色www永久网站婷| 一本久道久久综合久久| 日本一区二区日韩在线| 国产精品视频亚洲二区| 色屁屁www影院免费观看入口| 一区二区三区不卡在线| 清纯唯美亚洲经典中文字幕| 熟女肥臀白浆一区二区| 粗大猛烈进出白浆视频| 国产久热精品无码激情 | 亚洲av中文字字幕乱码| 欧美老妇牲交videos| 欧美成人一区二区三区| 2021亚洲色中文字幕| 在线观看一区二区蜜桃| 国产二级一片内射视频播放| 国产一区二区三区在线观看精品| 国产丝袜美腿诱惑在线观看| 国内自拍情侣露脸高清在线| 99久久人人爽亚洲精品美女| 欧美精品日韩一区二区三区| 中文字幕人妻互换av | 久久中文精品无码中文字幕下载| 亚洲中文字幕无码久久2018|