穆 明
(淄博市教育服務(wù)中心,淄博 255000)
?
基于Basic4Android開發(fā)平臺(tái)的手機(jī)控制系統(tǒng)
穆明
(淄博市教育服務(wù)中心,淄博 255000)
摘要:目前物聯(lián)網(wǎng)已經(jīng)開始滲透到工作生活的方方面面,無線WiFi也成為普遍的應(yīng)用技術(shù)之一?;?1系列WiFi開發(fā)板的控制系統(tǒng)介紹了B4A(Basic4Android)開發(fā)平臺(tái)應(yīng)用,從而降低了智能終端APP的開發(fā)難度。
關(guān)鍵詞:WiFi;Basic4Android平臺(tái);STC89LE54RD+;APP
引言
圖1 零度創(chuàng)意51單片機(jī)WiFi開發(fā)板的元器件圖
本文基于51系列的零度創(chuàng)意WiFi開發(fā)板,在原開發(fā)板的軟硬件平臺(tái)架構(gòu)的基礎(chǔ)上,用Eclipse開發(fā)的手機(jī)端APP改為在Basic4Android平臺(tái)進(jìn)行開發(fā),具有一定的推廣價(jià)值。以下從一個(gè)具體實(shí)例入手,詳細(xì)描述安卓智能手機(jī)通過WiFi與單片機(jī)系統(tǒng)通信的結(jié)構(gòu)設(shè)計(jì)。
1單片機(jī)程序設(shè)計(jì)
1.1單片機(jī)平臺(tái)簡介
零度創(chuàng)意51單片機(jī)WiFi開發(fā)板基于STC89LE54RD+芯片,搭載工業(yè)級M02 WiFi模塊,WiFi模塊與單片機(jī)串口連接,內(nèi)置IEEE802.11協(xié)議棧以及TCP/IP協(xié)議棧,能夠?qū)崿F(xiàn)嵌入式設(shè)備數(shù)據(jù)到無線網(wǎng)絡(luò)之間的轉(zhuǎn)換。本開發(fā)板將串口多次使用,即向單片機(jī)燒寫程序時(shí),斷開WiFi模塊和51主控芯片的連接跳線(見開發(fā)板隨機(jī)說明資料),51主控芯片與虛擬串口CP2102USB芯片自然連接,下載成功后將WiFi模塊和51主控芯片的跳線連接;配置WiFi模塊時(shí)(指由專用軟件配置),斷開WiFi模塊和51主控芯片的連接跳線,接通WiFi模塊與虛擬串口CP2102USB芯片的連接跳線進(jìn)行WiFi模塊參數(shù)配置。零度創(chuàng)意51單片機(jī)WiFi開發(fā)板的元器件圖如圖1所示。
該模塊有2種與上位機(jī)通信的模式:①AP熱點(diǎn)模式,即本身為終端,設(shè)備接入AP進(jìn)行控制;②STA模式,即本身為副端,可將其連入路由器,設(shè)備連入路由器后可以同時(shí)連接多個(gè)模塊。模塊自身帶有配置程序,將模塊連接至計(jì)算機(jī),安裝COM口驅(qū)動(dòng)程序后,既可按自身需求設(shè)置WiFi模塊的參數(shù),也可通過編寫WiFi模塊函數(shù)添加到工程程序包,由單片機(jī)通過發(fā)送串口AT指令配置WiFi模塊。
該系統(tǒng)采用config程序配置WiFi模塊:先給開發(fā)板上電,接好串口連接線(即虛擬串口連接線),連接相應(yīng)的跳線帽,檢測串口線的驅(qū)動(dòng)是否安裝,并且查看串口線對應(yīng)的COM 接口;然后再安裝并運(yùn)行WiFi模塊配置工具,直到WiFi模塊搜索成功。本實(shí)例將WiFi模塊配置成AP模式,WiFi 模塊默認(rèn)IP地址為192.168.2.1,網(wǎng)絡(luò)協(xié)議為TCP,本模塊作為服務(wù)器模式。配置管理程序界面如圖2所示。
圖2 WiFi 模塊配置管理程序界面
1.2單片機(jī)程序設(shè)計(jì)結(jié)構(gòu)
單片機(jī)端控制LED的程序設(shè)計(jì)思路為通過WiFi模塊接收串口數(shù)據(jù)來控制I/O口的高低電平以實(shí)現(xiàn)LED燈的通斷。為了與手機(jī)端APP程序控制編碼協(xié)議保持一致,單片機(jī)控制代碼采用數(shù)值類型,本例的開燈控制代碼為0x01、0x01,關(guān)燈控制代碼為0x01、0x00(特別說明的是,本開發(fā)板的電腦TCP控制WiFi模塊數(shù)據(jù)控制代碼為字符串類型)。LED工程文件各模塊分布如圖3所示。
圖3 LED.uvproj工程文件分布界面
LED工程文件中的USER模塊是用戶文件,C51_Driver.c是單片機(jī)驅(qū)動(dòng)層,包括串口初始化配置、串口發(fā)送函數(shù)和串口中斷接收函數(shù);main.C是上層應(yīng)用,判斷接收的指令類型以及根據(jù)指令類型控制燈的開關(guān);wifi.c是用戶需要使用軟件的AT指令方式配置WiFi模塊的函數(shù),一般情況下使用配置工具配置模塊,所以這個(gè)文件基本上不使用;LED.c是每個(gè)外設(shè)例程的驅(qū)動(dòng)層,定義了LED的閃爍方式。 Library模塊是存放51的啟動(dòng)文件,該文件不需要任何改動(dòng)。其中main.c主程序部分代碼為:
void main(){
HardWareInit(); //硬件初始化
while(1){
if(Flag==1){
Flag=0;
if((Buf[0]==0x01) && (Buf[1]==0x01)){
//APP開燈指令
Status=1; //開燈標(biāo)志
Buf[0]=0;//初始化數(shù)組值
Buf[1]=0;
SendCounter=0;
}
else if((Buf[0]==0x01) && (Buf[1]==0x00)){
//APP關(guān)燈指令
Status=0; //關(guān)燈標(biāo)志
Buf[0]=0;
Buf[1]=0;
SendCounter=0;
}
}
if(Status==1)
Led_Blink(1);//開燈
else
Led_Blink(0);//關(guān)燈
}
}
2手機(jī)APP程序設(shè)計(jì)
2.1Basic4Android開發(fā)平臺(tái)簡介
Basic4Android是一個(gè)類似于VB的Android應(yīng)用開發(fā)平臺(tái),其功能非常強(qiáng)大,可將代碼直接編譯安卓原生應(yīng)用軟件而不需要其他環(huán)境的支持,避免了傳統(tǒng)Eclipse需要大量代碼以及難理解的問題(注:此工具只支持安卓系統(tǒng)開發(fā))。Basic4Android帶有豐富的庫函數(shù)并支持Android的核心特性,其開發(fā)環(huán)境搭建運(yùn)行基本步驟如下:
① 安裝.NET Frameword2.0(NetFx20SP2_x86);
② 安裝JDK6(jdk-6u39-windows-i586,32位);
③ 安裝Android_SDK;
④ 安裝Basic4Android平臺(tái);
⑤ 配置Basic4Android,打開Basic4Android,執(zhí)行“Tools”菜單下的“Configure Paths”命令,配置javac.exe和android.jar的安裝路徑,以及附加的Basic4Android庫;
⑥ 安裝B4A-Bridge調(diào)試器,手機(jī)端 安裝B4A-Bridge調(diào)試器并運(yùn)行,同時(shí)電腦端執(zhí)行“B4A安卓端工具”的“用WIFI連接”命令,運(yùn)行“Run”菜單命令即可編譯并在手機(jī)端安裝APP程序。
2.2APP程序設(shè)計(jì)結(jié)構(gòu)
在Basic4Android平臺(tái)完成代碼和VB編程類似,如所需要的控件函數(shù)不在工具欄,則需要添加庫函數(shù),點(diǎn)擊展開庫函數(shù)Libs菜單,勾選要引用的庫函數(shù)。若所用版本自身所帶函數(shù)庫種類不能滿足需要,也可根據(jù)需求擴(kuò)展庫函數(shù),即將后綴為.xml和.jar相應(yīng)的類庫文件拷貝到安裝程序的Libraries子文件夾下即可使用。每個(gè) Basic4Android 程序在其自己的進(jìn)程中運(yùn)行,由一個(gè)或者多個(gè)Activity組成,Activity有點(diǎn)類似Windows 的窗體。Activity建立后,就會(huì)調(diào)用Sub Activity_Create子程序;當(dāng)用戶啟動(dòng)應(yīng)用時(shí), 這個(gè)子程序用來載入或者建立layout;當(dāng)Activity從前臺(tái)轉(zhuǎn)換到后臺(tái)時(shí)調(diào)用 Activity_Pause子程序;當(dāng)Activity_Create完成后會(huì)立刻調(diào)用Activity_Resume子程序。
本文用手機(jī)控制單片機(jī)LED的亮滅,在Basic4Android 平臺(tái)IDE界面添加引用Network類庫,采用Socket類封裝函數(shù)與單片機(jī)通信,在Activity層文件里添加3個(gè)Button按鈕(其中Button1連接單片機(jī)按鈕、Button2為開燈按鈕、Button3為關(guān)燈按鈕),在Button_Click事件函數(shù)中分別實(shí)現(xiàn)連接51單片機(jī)WiFi模塊(WiFi模塊IP為192.168.2.1,端口為8000)、點(diǎn)亮LED、熄滅LED。本程序設(shè)計(jì)的關(guān)鍵環(huán)節(jié)是Socket函數(shù)類庫的正確使用。目前,介紹Socket類庫應(yīng)用的資料非常少。其中Activity設(shè)計(jì)層“Layout1”文件的顯示界面如圖4所示。
圖4 Activity設(shè)計(jì)層“Layout1”文件的顯示界面
主要的代碼模塊(在安卓手機(jī)測試通過)為:
Sub Process_Globals
‘進(jìn)程變量聲明函數(shù),變量能被所有模塊使用
Dim Socket1 As Socket
‘聲明新的Socket對象為進(jìn)程變量
Dim OutputStream1 As OutputStream
‘同時(shí)聲明輸出管道流對象
End Sub
Sub Globals
‘Activity變量聲明函數(shù),變量只能在此Activity使用
Dim buffer(2) As Byte
‘必須聲明為數(shù)值型變量與單片機(jī)接收類型一致
Dim Button1 As Button
Dim Button2 As Button
Dim Button3 As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
Socket1.Initialize("Socket1")
‘必須對聲明的對象初始化,才能應(yīng)用對象事件發(fā)生函數(shù)
Activity.LoadLayout("Layout1")
‘加載Layout1彈出窗體設(shè)計(jì)界面
End Sub
Sub Button1_Click
‘連接51單片機(jī)WiFi模塊
Socket1.connect("192.168.2.1",8000,0)
‘連接遠(yuǎn)程主機(jī)(與單片機(jī)端WiFi模塊網(wǎng)絡(luò)設(shè)置一致)
End Sub
Sub socket1_Connected (Successful As Boolean)
‘連接發(fā)生事件
If Successful Then
OutputStream1=Socket1.OutputStream
Button2.Enabled=True
End If
End Sub
Sub Button2_Click
‘開燈
buffer(0)=1
buffer(1)=1
OutputStream1.WriteBytes(buffer,0,2)
‘將開燈控制代碼數(shù)據(jù)(必須是數(shù)值型)寫入輸出管道流
Phone Control System Based on Basic4Android Platform
Mu Ming
(Zibo City Education Service Center,Zibo 255000,China)
Abstract:The internet of things has penetrated into many aspects of people′s work and life,and WiFi has become one of the universal application technologies.Based on the 51 series WiFi development board control system,B4A(Basic4Android) development platform is introduced,which can reduce the development difficulty of the intelligent terminal APP.
Key words:WiFi;Basic4Android platform;STC89LE54RD+;APP
中圖分類號:TP36
文獻(xiàn)標(biāo)識(shí)碼:A