




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課 程 設(shè) 計(jì) 書 嵌入式系統(tǒng)實(shí)訓(xùn) 學(xué)院 姓名 學(xué)號(hào) 組別 目錄1設(shè)計(jì)概述22設(shè)計(jì)方案22.1詳細(xì)設(shè)計(jì)方案32.1.1 電源模塊32.1.2 主芯片模塊32.1.3 WIFI模塊42.1.4 霍爾傳感器模塊42.1.5 開關(guān)磁阻電機(jī)52.1.6 電路板抗干擾設(shè)計(jì)62.2軟件設(shè)計(jì)方案73手機(jī)客戶端APP設(shè)計(jì)73.1開發(fā)環(huán)境的搭建73.2手機(jī)APP的主要功能模塊84軟件件調(diào)試過程和結(jié)果165課程總結(jié)201設(shè)計(jì)概述能源是經(jīng)濟(jì)發(fā)展和社會(huì)進(jìn)步的支柱,能源問題成為當(dāng)今世界各國(guó)尤其是發(fā)達(dá)國(guó)家所要解決的頭等大事。世界各國(guó)都在鼓勵(lì)大力開發(fā)可再生能源。風(fēng)能和太陽能成為當(dāng)下最受歡迎的新能源,也是目前可再生能源應(yīng)用技
2、術(shù)中最成熟的。本設(shè)計(jì)基于人體運(yùn)動(dòng)出來的機(jī)械能轉(zhuǎn)化成可利用回收的電能,是新能源的一種體現(xiàn),具有很好的開發(fā)前景和實(shí)際用途。該設(shè)計(jì)是基于以stm32f030芯片為主芯片的智能發(fā)電的PCB主板,再利用開關(guān)磁阻電機(jī)進(jìn)行發(fā)電,將其電壓和電流通過wifi模塊發(fā)送給手機(jī)端,通過手機(jī)上的APP可以顯示出電流和電壓值,并進(jìn)行后臺(tái)處理和數(shù)據(jù)保存。設(shè)計(jì)將從芯片器件的選型再到PCB板的設(shè)計(jì),之后是PCB板的焊接,再是軟件的編寫與調(diào)試,軟件部分還包括手機(jī)APP的編寫,最終完成本次設(shè)計(jì)。1 設(shè)計(jì)方案該設(shè)計(jì)方案可以劃分為兩個(gè)部分,第一部分是終端部分,有發(fā)電機(jī)的驅(qū)動(dòng)模塊,電壓電流采集模塊,WiFi模塊以和主控芯片及其外設(shè);第二
3、部分是手機(jī)部分,該部分主要是實(shí)現(xiàn)一個(gè)上位機(jī)的功能,包括接收信息,發(fā)送指令,主要有登錄界面和查詢界面。兩部分之間通過WIFI來實(shí)現(xiàn)通信。所以總體設(shè)計(jì)框圖1所示: 藍(lán)牙信號(hào) 手機(jī)端 終端部分圖2.1 總體設(shè)計(jì)方案其中手機(jī)端的設(shè)計(jì)為純粹的軟件設(shè)計(jì),而智能發(fā)電系統(tǒng)主體的設(shè)計(jì)方案是方案設(shè)計(jì)中的重點(diǎn)部分包括硬件部分的設(shè)計(jì)與軟件部分的設(shè)計(jì)。該系統(tǒng)的設(shè)計(jì)方案包括以下幾個(gè)方面,一是小車主體電路板的設(shè)計(jì)方案,屬于硬件部分的設(shè)計(jì);二是軟件設(shè)計(jì)方案,屬于軟件部分的設(shè)計(jì),主要是用于驅(qū)動(dòng)硬件電路和給手機(jī)端APP提供操作接口。該系統(tǒng)主體電路板的設(shè)計(jì)包括電源模塊的設(shè)計(jì),主芯片外圍電路的設(shè)計(jì),WiFi模塊的設(shè)計(jì),電機(jī)驅(qū)動(dòng)模塊的
4、設(shè)計(jì),各個(gè)傳感器模塊的設(shè)計(jì)。軟件部分的設(shè)計(jì)包括主體函數(shù)的設(shè)計(jì)及各個(gè)功能模塊的設(shè)計(jì),在實(shí)現(xiàn)了各個(gè)功能模塊設(shè)計(jì)的基礎(chǔ)上設(shè)計(jì)出主體程序,以便可以隨時(shí)中斷某一個(gè)功能而去實(shí)現(xiàn)另外的功能。外圍設(shè)計(jì)主要是各個(gè)傳感器的放置位置的選擇,以便達(dá)到所需的功能。1.1 詳細(xì)設(shè)計(jì)方案 2.1.1 電源模塊由于電機(jī)的驅(qū)動(dòng)需要15V的電源,而USB及傳感器等模塊的供電需要5V的電源,主芯片需要3.3V及1.2V的電源。所以在電源模塊的設(shè)計(jì)中需要用到外部供電電源為15V的可移動(dòng)電源,可以是蓄電池也可以是干電池串聯(lián)而得。5V的電源通過對(duì)15V電源降壓而得到,3.3V電源分別由XC6206P332MR通過不同的外圍電路來獲得。2
5、.1.2 主芯片模塊主芯片在此設(shè)計(jì)中制定為stm32f030作為主控芯片,stm32f030主控芯片的外圍電路包括復(fù)位電路,晶振,過芯片中的USB接口燒錄到SPI FLASH中,選擇的啟動(dòng)方式是USB啟動(dòng)。當(dāng)程序燒錄好以后,將啟動(dòng)方式轉(zhuǎn)換為SPI FLASH啟動(dòng)。SDRAM中用于存放程序。STM32F030 內(nèi)部有RC振蕩器,可以為內(nèi)部的鎖相環(huán)提供時(shí)鐘,但同外部晶振相比不夠準(zhǔn)確,所以本文使用外部時(shí)鐘源。外部時(shí)鐘源主要分為高速外部振蕩器和低速外部振蕩器,高速外部振蕩器主要作為芯片處理器和STM32 外設(shè)的驅(qū)動(dòng)時(shí)鐘,低速外部振蕩器用于驅(qū)動(dòng)窗口看門狗和實(shí)時(shí)時(shí)鐘。該系統(tǒng)采用 8M外部晶振作為高速外部時(shí)
6、鐘信號(hào)的時(shí)鐘源,外接兩個(gè)20p F的貼片電容。低速外部振蕩器是時(shí)鐘源可以使用外部晶振或用戶自己提供,該系統(tǒng)采用頻率值為 32.768k Hz 的外部晶振,外接兩個(gè)10p F的貼片電容。STM32F030有3種啟動(dòng)方式,分為系統(tǒng)復(fù)位、電源復(fù)位、備份區(qū)域復(fù)位。該系統(tǒng)采用電源復(fù)位,NRST 引腳與10K電阻串聯(lián)使引腳處于高電位,當(dāng)需要復(fù)位時(shí),S1開關(guān)閉合使 NRST引腳接地,產(chǎn)生低電平使微處理器復(fù)位。該微處理器內(nèi)部也有復(fù)位電路,當(dāng)引腳電壓小于 2.0V,片會(huì)處于復(fù)位狀態(tài),但會(huì)有 40m A的延遲。 圖2.12.1.3 WIFI模塊WIFI模塊的作用是實(shí)現(xiàn)下位機(jī)與上位機(jī)的實(shí)時(shí)通信,并且向上位機(jī)傳遞圖像
7、數(shù)據(jù)。使用的是HC05模塊。其特性如下: 1、嵌入高性能32位RISC微處理器 2、55nmCMOS高度集成射頻技術(shù) 3、集成高性能開關(guān)穩(wěn)壓器 4、低功耗 5、支持1/2/3/4/線PTAWIFI/藍(lán)牙 6、自動(dòng)校準(zhǔn) 7、天線分集 8、控制每個(gè)包的功率 9、完全遵守USBv2.0高速模式 10、直接支持WIFI功能 11、支持802.1w保護(hù)管理框架圖2.22.1.4 霍爾傳感器模塊霍爾傳感器是根據(jù)霍爾效應(yīng)制作的一種磁場(chǎng)傳感器?;魻栃?yīng)是磁電效應(yīng)的一種,這一現(xiàn)象是霍爾(A.H.Hall,18551938)于1879年在研究金屬的導(dǎo)電機(jī)構(gòu)時(shí)發(fā)現(xiàn)的。后來發(fā)現(xiàn)半導(dǎo)體、導(dǎo)電流體等也有這種效應(yīng),而半導(dǎo)體
8、的霍爾效應(yīng)比金屬強(qiáng)得多,利用這現(xiàn)象制成的各種霍爾元件,廣泛地應(yīng)用于工業(yè)自動(dòng)化技術(shù)、檢測(cè)技術(shù)及信息處理等方面。霍爾效應(yīng)是研究半導(dǎo)體材料性能的基本方法。通過霍爾效應(yīng)實(shí)驗(yàn)測(cè)定的霍爾系數(shù),能夠判斷半導(dǎo)體材料的導(dǎo)電類型、載流子濃度及載流子遷移率等重要參數(shù)。由霍爾效應(yīng)的原理知,霍爾電勢(shì)的大小取決于:Rh為霍爾常數(shù),它與半導(dǎo)體材質(zhì)有關(guān);I為霍爾元件的偏置電流;B為磁場(chǎng)強(qiáng)度;d為半導(dǎo)體材料的厚度。對(duì)于一個(gè)給定的霍爾器件,當(dāng)偏置電流 I 固定時(shí),UH將完全取決于被測(cè)的磁場(chǎng)強(qiáng)度B。一個(gè)霍爾元件一般有四個(gè)引出端子,其中兩根是霍爾元件的偏置電流 I 的輸入端,另兩根是霍爾電壓的輸出端。如果兩輸出端構(gòu)成外回路,就會(huì)產(chǎn)生
9、霍爾電流。一般地說,偏置電流的設(shè)定通常由外部的基準(zhǔn)電壓源給出;若精度要求高,則基準(zhǔn)電壓源均用恒流源取代。為了達(dá)到高的靈敏度,有的霍爾元件的傳感面上裝有高導(dǎo)磁系數(shù)的鍍膜合金;這類傳感器的霍爾電勢(shì)較大,但在0.05T左右出現(xiàn)飽和,僅適用在低量限、小量程下使用。在半導(dǎo)體薄片兩端通以控制電流I,并在薄片的垂直方向施加磁感應(yīng)強(qiáng)度為B的勻強(qiáng)磁場(chǎng),則在垂直于電流和磁場(chǎng)的方向上,將產(chǎn)生電勢(shì)差為UH的霍爾電壓。圖2.2 霍爾效應(yīng)2.1.5 開關(guān)磁阻電機(jī)開關(guān)磁阻電動(dòng)機(jī),調(diào)速系統(tǒng)所用的開關(guān)磁阻電動(dòng)機(jī)(SRM)是SRD中實(shí)現(xiàn)機(jī)電能量轉(zhuǎn)換的部件,也是SRD有別于其他電動(dòng)機(jī)驅(qū)動(dòng)系統(tǒng)的主要標(biāo)志。SRM系雙凸極可變磁阻電動(dòng)機(jī)
10、,其定、轉(zhuǎn)子的凸極均由普通硅鋼片疊壓而成。轉(zhuǎn)子既無繞組也無永磁體,定子極上繞有集中繞組,徑向相對(duì)的兩個(gè)繞組聯(lián)接起來,稱為“一相”,SR電動(dòng)機(jī)可以設(shè)計(jì)成多種不同相數(shù)結(jié)構(gòu),且定、轉(zhuǎn)子的極數(shù)有多種不同的搭配。相數(shù)多、步距角小,有利于減少轉(zhuǎn)矩脈動(dòng),但結(jié)構(gòu)復(fù)雜,且主開關(guān)器件多,成本高,現(xiàn)今應(yīng)用較多的是四相(8/6)結(jié)構(gòu)和三相(12/8)結(jié)構(gòu)。圖2.2示出四相(8/6)結(jié)構(gòu)SR電動(dòng)機(jī)原理圖。為簡(jiǎn)單計(jì),圖中只畫出A相繞組及其供電電路。SR電動(dòng)機(jī)的運(yùn)行原理遵循“磁阻最小原理” 磁通總要沿著磁阻最小的路徑閉合,而具有一定形狀的鐵心在移動(dòng)到最小磁阻位置時(shí),必使自己的主軸線與磁場(chǎng)的軸線重合。圖2中,當(dāng)定子D-D極勵(lì)
11、磁時(shí),1-1向定子軸線D-D重合的位置轉(zhuǎn)動(dòng),并使D相勵(lì)磁繞組的電感最大。若以圖中定、轉(zhuǎn)子所處的相對(duì)位置作為起始位置,則依次給DABC相繞組通電,轉(zhuǎn)子即會(huì)逆著勵(lì)磁順序以逆時(shí)針方向連續(xù)旋轉(zhuǎn);反之,若依次給BADC相通電,則電動(dòng)機(jī)即會(huì)沿順時(shí)針方向轉(zhuǎn)動(dòng)??梢?,SR電動(dòng)機(jī)的轉(zhuǎn)向與相繞組的電流方向無關(guān),而僅取決于相繞組通電的順序。另外,從圖2.2可以看出,當(dāng)主開關(guān)器件S1、S2導(dǎo)通時(shí),A相繞組從直流電源US吸收電能,而當(dāng)S1、S2關(guān)斷時(shí),繞組電流經(jīng)續(xù)流二極管VD1、VD2繼續(xù)流通,并回饋給電源US。因此,SR電動(dòng)機(jī)傳動(dòng)的共性特點(diǎn)是具有再生作用,系統(tǒng)效率高。 圖 2.32.1.6 電路板抗干擾設(shè)計(jì) 電路設(shè)計(jì)
12、和應(yīng)用應(yīng)盡量消除或抑制電子電路的干擾,該監(jiān)測(cè)系統(tǒng)的硬件電路用來接收傳感器的數(shù)據(jù)并對(duì)其進(jìn)行處理,如果不能降低各類干擾的影響,將會(huì)增加監(jiān)測(cè)數(shù)據(jù)誤差。硬件電路設(shè)計(jì)過程中充分考慮對(duì)干擾的抑制,對(duì)電路進(jìn)行了合理的設(shè)計(jì)以及選擇合適的元器件。在硬件電路設(shè)計(jì)過程中,充分從抑制干擾源、切斷干擾途徑以及提高元器件的抗干擾性能等三方面考慮,為降低信號(hào)干擾,采取了以下措施。 (1)以核心部件為中心,圍繞其進(jìn)行布線,易受干擾元器件相互遠(yuǎn)離,輸入輸出元器件分開放置,電源和高頻電路部分盡量遠(yuǎn)離; (2)STM32微處理器和大功率器件的地線需要單獨(dú)接地,以減少相互干擾,大功率元器件放置在電路板邊緣; (3)在電路板布線時(shí)避免
13、九十度折線,同時(shí)減少回路環(huán)面積,選擇合適粗細(xì)的地線以及電源線; (4)數(shù)字區(qū)和模擬區(qū)用地線隔離,模擬地和數(shù)字地要分離,統(tǒng)一在一點(diǎn)接于電源地。1.2 軟件設(shè)計(jì)方案 軟件系統(tǒng)框圖如下:軟件系統(tǒng)框圖 2.42 手機(jī)客戶端APP設(shè)計(jì)2.1 開發(fā)環(huán)境的搭建 本設(shè)計(jì)在開發(fā)過程中使用Eclipse加ADT插件的開發(fā)環(huán)境,Eclipse集成開發(fā)環(huán)境JDK,首先需要安裝JDK工具包,本設(shè)計(jì)中使用的JDK版本是JDK7Windowsi586exe。安裝完成后,配置系統(tǒng)環(huán)境變量,將JDK的安裝路徑添加到系統(tǒng)Path中去。在Andriod developer官網(wǎng)上下載Eclipse開發(fā)環(huán)境,其己對(duì)Eclipse和AD
14、K插件綁定,開發(fā)者直接下載后解壓即可使用。本設(shè)計(jì)使用的版本是adtbundlewindowsx86zip。2.2 手機(jī)APP的主要功能模塊 手機(jī)APP的設(shè)計(jì)采用了MVC框架,將Model、View和Controler分開,有效減少開發(fā)工作量量和有效減少開發(fā)工作查和代碼冗余率,有利于代碼調(diào)試。本設(shè)計(jì)將手機(jī)端功能主要分為5大功能模塊:登錄功能模塊、查詢功能模塊、接收數(shù)據(jù)模塊、藍(lán)牙驗(yàn)證模塊。(1)登錄模塊登錄模塊需要用戶輸入個(gè)人信息,如用戶名、密碼、手機(jī)號(hào)碼等。登錄界面設(shè)計(jì)兩個(gè)EditView輸入爛和2個(gè)Button,輸入爛用來接收用戶名,2個(gè)按紐分別是登錄和取消。當(dāng)用戶點(diǎn)擊確認(rèn)按鈕后,跳轉(zhuǎn)到主頁面
15、。confirm=(ImageButton)findViewById(R.id.confirm);(確認(rèn)按鈕綁定) cancel=(ImageButton)findViewById(R.id.cancel); (取消按鈕綁定) public void onClick(View v) (設(shè)定按鈕點(diǎn)擊事件)switch (v.getId() case R.id.confirm:username=name.getText().toString();if(username.equals()Toast.makeText(LoginActivity.this, 用戶名為空,請(qǐng)輸入!, Toast.LENG
16、TH_SHORT).show();elseIntent intent = new Intent(); intent.setClass(LoginActivity.this, MainActivity.class); intent.putExtra(name, username); startActivity(intent);break; case R.id.cancel:this.finish();break;default:break;(2)藍(lán)牙搜索模塊 進(jìn)入搜索藍(lán)牙界面后,會(huì)搜索附近的藍(lán)牙a.設(shè)置權(quán)限在manifest中配置b.啟動(dòng)藍(lán)牙首先要查看本機(jī)是否支持藍(lán)牙,獲取BluetoothAd
17、apter藍(lán)牙適配器對(duì)象BluetoothAdaptermBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();if(mBluetoothAdapter=null) /表明此手機(jī)不支持藍(lán)牙return;if(!mBluetoothAdapter.isEnabled()/藍(lán)牙未開啟,則開啟藍(lán)牙IntentenableIntent=newIntent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableIntent,REQUEST_ENABLE_BT);pub
18、licvoidonActivityResult(intrequestCode,intresultCode,Intentdata)if(requestCode=REQUEST_ENABLE_BT)if(requestCode=RESULT_OK)/藍(lán)牙已經(jīng)開啟c.發(fā)現(xiàn)藍(lán)牙設(shè)備這里可以細(xì)分為幾個(gè)方面 (I)使本機(jī)藍(lán)牙處于可見(即處于易被搜索到狀態(tài)),便于其他設(shè)備發(fā)現(xiàn)本機(jī)藍(lán)牙/使本機(jī)藍(lán)牙在300秒內(nèi)可被搜索privatevoidensureDiscoverable()if(mBluetoothAdapter.getScanMode()!=BluetoothAdapter.SCAN_MODE_CONN
19、ECTABLE_DISCOVERABLE)IntentdiscoverableIntent=newIntent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);startActivity(discoverableIntent);(II)查找已經(jīng)配對(duì)的藍(lán)牙設(shè)備,即以前已經(jīng)配對(duì)過的設(shè)備SetpairedDevices=mBluetoothAdapter.getBondedDevices();if(pa
20、iredDevices.size()0)findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);for(BluetoothDevicedevice:pairedDevices)/device.getName()+device.getAddress();elsemPairedDevicesArrayAdapter.add(沒有找到已匹對(duì)的設(shè)備);(III)通過mBluetoothAdapter.startDiscovery();搜索設(shè)備,要獲得此搜索的結(jié)果需要注冊(cè)一個(gè)BroadcastReceiver來獲取。先注冊(cè)再
21、獲取信息,然后處理/注冊(cè),當(dāng)一個(gè)設(shè)備被發(fā)現(xiàn)時(shí)調(diào)用onReceiveIntentFilterfilter=newIntentFilter(BluetoothDevice.ACTION_FOUND);this.registerReceiver(mReceiver,filter);/當(dāng)搜索結(jié)束后調(diào)用onReceivefilter=newIntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);this.registerReceiver(mReceiver,filter);privateBroadcastReceivermReceiver=new
22、BroadcastReceiver()OverridepublicvoidonReceive(Contextcontext,Intentintent)Stringaction=intent.getAction();if(BluetoothDevice.ACTION_FOUND.equals(action)BluetoothDevicedevice=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);/已經(jīng)配對(duì)的則跳過if(device.getBondState()!=BluetoothDevice.BOND_BONDED)mNewDe
23、vicesArrayAdapter.add(device.getName()+n+device.getAddress();/保存設(shè)備地址與名字elseif(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)/搜索結(jié)束 if(mNewDevicesArrayAdapter.getCount()=0)mNewDevicesArrayAdapter.add(沒有搜索到設(shè)備); ;d.建立連接查找到設(shè)備 后,則需要建立本機(jī)與其他設(shè)備之間的連接。一般用本機(jī)搜索其他藍(lán)牙設(shè)備時(shí),本機(jī)可以作為一個(gè)服務(wù)端,接收其他設(shè)備的連接。啟動(dòng)一個(gè)服務(wù)器端的線程
24、,死循環(huán)等待客戶端的連接,這與ServerSocket極為相似。這個(gè)線程在準(zhǔn)備連接之前啟動(dòng)/UUID可以看做一個(gè)端口號(hào)privatestaticfinalUUIDMY_UUID=UUID.fromString(fa87c0d0-afac-11de-8a39-c9a66);/像一個(gè)服務(wù)器一樣時(shí)刻監(jiān)聽是否有連接建立privateclassAcceptThreadextendsThreadprivateBluetoothServerSocketserverSocket;publicAcceptThread(booleansecure)BluetoothServerSockettemp=null;tr
25、ytemp=mBluetoothAdapter.listenUsingRfcommWithServiceRecord(NAME_INSECURE,MY_UUID);catch(IOExceptione)Log.e(app,listen()failed,e);serverSocket=temp;publicvoidrun()BluetoothSocketsocket=null;while(true)trysocket=serverSocket.accept();catch(IOExceptione)Log.e(app,accept()failed,e); break;if(socket!=nul
26、l)/此時(shí)可以新建一個(gè)數(shù)據(jù)交換線程,把此socket傳進(jìn)去/取消監(jiān)聽publicvoidcancel()tryserverSocket.close();catch(IOExceptione)Log.e(app,SocketType+socketType+close()ofserverfailed,e);e.建立數(shù)據(jù)通信線程,進(jìn)行讀取數(shù)據(jù)/建立連接后,進(jìn)行數(shù)據(jù)通信的線程privateclassConnectedThreadextendsThreadprivateBluetoothSocketsocket;privateInputStreaminStream;privateOutputStream
27、outStream;publicConnectedThread(BluetoothSocketsocket)this.socket=socket;try/獲得輸入輸出流 inStream=socket.getInputStream();outStream=socket.getOutputStream();catch(IOExceptione)Log.e(app,tempsocketsnotcreated,e);publicvoidrun()bytebuff=newbyte1024;intlen=0;/讀數(shù)據(jù)需不斷監(jiān)聽,寫不需要while(true)trylen=inStream.read(bu
28、ff);/把讀取到的數(shù)據(jù)發(fā)送給UI進(jìn)行顯示Messagemsg=handler.obtainMessage(BluetoothChat.MESSAGE_READ,len,-1,buff);msg.sendToTarget();catch(IOExceptione)Log.e(app,disconnected,e);connectionLost();/失去連接start();/重新啟動(dòng)服務(wù)器break;publicvoidwrite(bytebuffer)tryoutStream.write(buffer);/SharethesentmessagebacktotheUIActivityhandl
29、er.obtainMessage(BluetoothChat.MESSAGE_WRITE,-1,-1,buffer).sendToTarget();catch(IOExceptione)Log.e(app,Exceptionduringwrite,e);publicvoidcancel()trysocket.close();catch(IOExceptione)Log.e(app,close()ofconnectsocketfailed,e);(3)數(shù)據(jù)查詢 query=(ImageButton)findViewById(R.id.query); query.setOnClickListene
30、r(this); listview = (ListView) findViewById(R.id.listView); db=new DataBaseCreat(MainActivity.this); db.open(); begin_date=(EditText)findViewById(R.id.begin_date); end_date=(EditText)findViewById(R.id.end_date); yue=(Button)findViewById(R.id.yue); zhou=(Button)findViewById(R.id.zhou); ri=(Button)fin
31、dViewById(R.id.ri); yue.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubQUERY_METHOD=0;); zhou.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubQUERY_METHOD=1;); ri.setOnClickLi
32、stener(new OnClickListener() Override public void onClick(View v) / TODO Auto-generated method stub QUERY_METHOD=2; );Overridepublic void onClick(View v) / TODO Auto-generated method stubswitch (v.getId() case R.id.query:if(TextUtils.isEmpty(begin_date.getText() | TextUtils.isEmpty(end_date.getText(
33、) Toast.makeText(MainActivity.this, 輸入時(shí)間為空,請(qǐng)檢查, Toast.LENGTH_SHORT).show(); break;Toast.makeText(MainActivity.this, 查詢中,請(qǐng)稍后, Toast.LENGTH_SHORT).show();ArrayListHashMap temp = new ArrayListHashMap();temp=db.getAllContact(QUERY_METHOD,name,datebegin, dateend);SimpleAdapter myAdapter = null;switch (QU
34、ERY_METHOD) case 0: myAdapter = new SimpleAdapter(this,temp,R.layout.item0,new Stringuser_name,year, month,total,new int R.id.user_name0,R.id.year0,R.id.month0,R.id.total0 );break; case 1: myAdapter = new SimpleAdapter(this,temp,R.layout.item1,new Stringuser_name,weekofyear,total,new int R.id.user_n
35、ame1,R.id.weekofyear1,R.id.total1 );break; case 2: myAdapter = new SimpleAdapter(this,temp,R.layout.item2,new Stringuser_name,year, month,day,total,new int R.id.user_name2,R.id.year2,R.id.month2,R.id.day2,R.id.total2 ); break;default:break;listview.setAdapter(myAdapter);Break;default:break; 3 軟件件調(diào)試過程和結(jié)果由于我只負(fù)責(zé)軟件部分,硬件部分由終端同學(xué)負(fù)責(zé),需要將PCB板打出來,這里我們用電腦模仿硬件,用串口調(diào)試助手通過藍(lán)牙向外發(fā)送數(shù)據(jù),然后手機(jī)APP端接收,并通過查詢按鈕查詢出來并實(shí)時(shí)顯示電流數(shù)據(jù),電壓數(shù)據(jù),轉(zhuǎn)速數(shù)據(jù)和總電量,下面是我們的測(cè)試示意圖:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京鏈家購房合同范本
- 產(chǎn)品攝影廣告合同范例
- 劇目買斷合同范本
- 融資收費(fèi)合同范本
- 勞動(dòng)合同范本解除
- 單位車輛外包服務(wù)合同范本
- 分期出租房合同范本
- 醫(yī)療服務(wù)協(xié)議合同范本
- 單位招聘保安合同范本
- 分項(xiàng)付款合同范本
- 生理學(xué)泌尿系統(tǒng)6學(xué)時(shí)課件
- PySide學(xué)習(xí)教程
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter1 Introduction
- 人教三年級(jí)數(shù)學(xué)下冊(cè)表格式全冊(cè)
- 事業(yè)單位綜合基礎(chǔ)知識(shí)考試題庫 綜合基礎(chǔ)知識(shí)考試題庫.doc
- 優(yōu)秀教研組評(píng)比制度及實(shí)施細(xì)則
- 譯林初中英語教材目錄
- 物業(yè)交付后工程維修工作機(jī)制
- 農(nóng)作物病蟲害專業(yè)化統(tǒng)防統(tǒng)治管理辦法
- JJF 1752-2019全自動(dòng)封閉型發(fā)光免疫分析儀校準(zhǔn)規(guī)范(高清版)
- GB 1886.300-2018 食品安全國(guó)家標(biāo)準(zhǔn) 食品添加劑 離子交換樹脂(高清版)
評(píng)論
0/150
提交評(píng)論