穆 明
(淄博市教育服務中心,淄博 255000)
?
基于Basic4Android開發(fā)平臺的手機控制系統(tǒng)
穆明
(淄博市教育服務中心,淄博 255000)
摘要:目前物聯(lián)網(wǎng)已經(jīng)開始滲透到工作生活的方方面面,無線WiFi也成為普遍的應用技術之一。基于51系列WiFi開發(fā)板的控制系統(tǒng)介紹了B4A(Basic4Android)開發(fā)平臺應用,從而降低了智能終端APP的開發(fā)難度。
關鍵詞:WiFi;Basic4Android平臺;STC89LE54RD+;APP
引言

圖1 零度創(chuàng)意51單片機WiFi開發(fā)板的元器件圖
本文基于51系列的零度創(chuàng)意WiFi開發(fā)板,在原開發(fā)板的軟硬件平臺架構的基礎上,用Eclipse開發(fā)的手機端APP改為在Basic4Android平臺進行開發(fā),具有一定的推廣價值。以下從一個具體實例入手,詳細描述安卓智能手機通過WiFi與單片機系統(tǒng)通信的結構設計。
1單片機程序設計
1.1單片機平臺簡介
零度創(chuàng)意51單片機WiFi開發(fā)板基于STC89LE54RD+芯片,搭載工業(yè)級M02 WiFi模塊,WiFi模塊與單片機串口連接,內置IEEE802.11協(xié)議棧以及TCP/IP協(xié)議棧,能夠實現(xiàn)嵌入式設備數(shù)據(jù)到無線網(wǎng)絡之間的轉換。本開發(fā)板將串口多次使用,即向單片機燒寫程序時,斷開WiFi模塊和51主控芯片的連接跳線(見開發(fā)板隨機說明資料),51主控芯片與虛擬串口CP2102USB芯片自然連接,下載成功后將WiFi模塊和51主控芯片的跳線連接;配置WiFi模塊時(指由專用軟件配置),斷開WiFi模塊和51主控芯片的連接跳線,接通WiFi模塊與虛擬串口CP2102USB芯片的連接跳線進行WiFi模塊參數(shù)配置。零度創(chuàng)意51單片機WiFi開發(fā)板的元器件圖如圖1所示。
該模塊有2種與上位機通信的模式:①AP熱點模式,即本身為終端,設備接入AP進行控制;②STA模式,即本身為副端,可將其連入路由器,設備連入路由器后可以同時連接多個模塊。模塊自身帶有配置程序,將模塊連接至計算機,安裝COM口驅動程序后,既可按自身需求設置WiFi模塊的參數(shù),也可通過編寫WiFi模塊函數(shù)添加到工程程序包,由單片機通過發(fā)送串口AT指令配置WiFi模塊。
該系統(tǒng)采用config程序配置WiFi模塊:先給開發(fā)板上電,接好串口連接線(即虛擬串口連接線),連接相應的跳線帽,檢測串口線的驅動是否安裝,并且查看串口線對應的COM 接口;然后再安裝并運行WiFi模塊配置工具,直到WiFi模塊搜索成功。本實例將WiFi模塊配置成AP模式,WiFi 模塊默認IP地址為192.168.2.1,網(wǎng)絡協(xié)議為TCP,本模塊作為服務器模式。配置管理程序界面如圖2所示。

圖2 WiFi 模塊配置管理程序界面
1.2單片機程序設計結構
單片機端控制LED的程序設計思路為通過WiFi模塊接收串口數(shù)據(jù)來控制I/O口的高低電平以實現(xiàn)LED燈的通斷。為了與手機端APP程序控制編碼協(xié)議保持一致,單片機控制代碼采用數(shù)值類型,本例的開燈控制代碼為0x01、0x01,關燈控制代碼為0x01、0x00(特別說明的是,本開發(fā)板的電腦TCP控制WiFi模塊數(shù)據(jù)控制代碼為字符串類型)。LED工程文件各模塊分布如圖3所示。

圖3 LED.uvproj工程文件分布界面
LED工程文件中的USER模塊是用戶文件,C51_Driver.c是單片機驅動層,包括串口初始化配置、串口發(fā)送函數(shù)和串口中斷接收函數(shù);main.C是上層應用,判斷接收的指令類型以及根據(jù)指令類型控制燈的開關;wifi.c是用戶需要使用軟件的AT指令方式配置WiFi模塊的函數(shù),一般情況下使用配置工具配置模塊,所以這個文件基本上不使用;LED.c是每個外設例程的驅動層,定義了LED的閃爍方式。 Library模塊是存放51的啟動文件,該文件不需要任何改動。其中main.c主程序部分代碼為:
void main(){
HardWareInit(); //硬件初始化
while(1){
if(Flag==1){
Flag=0;
if((Buf[0]==0x01) && (Buf[1]==0x01)){
//APP開燈指令
Status=1; //開燈標志
Buf[0]=0;//初始化數(shù)組值
Buf[1]=0;
SendCounter=0;
}
else if((Buf[0]==0x01) && (Buf[1]==0x00)){
//APP關燈指令
Status=0; //關燈標志
Buf[0]=0;
Buf[1]=0;
SendCounter=0;
}
}
if(Status==1)
Led_Blink(1);//開燈
else
Led_Blink(0);//關燈
}
}
2手機APP程序設計
2.1Basic4Android開發(fā)平臺簡介
Basic4Android是一個類似于VB的Android應用開發(fā)平臺,其功能非常強大,可將代碼直接編譯安卓原生應用軟件而不需要其他環(huán)境的支持,避免了傳統(tǒng)Eclipse需要大量代碼以及難理解的問題(注:此工具只支持安卓系統(tǒng)開發(fā))。Basic4Android帶有豐富的庫函數(shù)并支持Android的核心特性,其開發(fā)環(huán)境搭建運行基本步驟如下:
① 安裝.NET Frameword2.0(NetFx20SP2_x86);
② 安裝JDK6(jdk-6u39-windows-i586,32位);
③ 安裝Android_SDK;
④ 安裝Basic4Android平臺;
⑤ 配置Basic4Android,打開Basic4Android,執(zhí)行“Tools”菜單下的“Configure Paths”命令,配置javac.exe和android.jar的安裝路徑,以及附加的Basic4Android庫;
⑥ 安裝B4A-Bridge調試器,手機端 安裝B4A-Bridge調試器并運行,同時電腦端執(zhí)行“B4A安卓端工具”的“用WIFI連接”命令,運行“Run”菜單命令即可編譯并在手機端安裝APP程序。
2.2APP程序設計結構
在Basic4Android平臺完成代碼和VB編程類似,如所需要的控件函數(shù)不在工具欄,則需要添加庫函數(shù),點擊展開庫函數(shù)Libs菜單,勾選要引用的庫函數(shù)。若所用版本自身所帶函數(shù)庫種類不能滿足需要,也可根據(jù)需求擴展庫函數(shù),即將后綴為.xml和.jar相應的類庫文件拷貝到安裝程序的Libraries子文件夾下即可使用。每個 Basic4Android 程序在其自己的進程中運行,由一個或者多個Activity組成,Activity有點類似Windows 的窗體。Activity建立后,就會調用Sub Activity_Create子程序;當用戶啟動應用時, 這個子程序用來載入或者建立layout;當Activity從前臺轉換到后臺時調用 Activity_Pause子程序;當Activity_Create完成后會立刻調用Activity_Resume子程序。
本文用手機控制單片機LED的亮滅,在Basic4Android 平臺IDE界面添加引用Network類庫,采用Socket類封裝函數(shù)與單片機通信,在Activity層文件里添加3個Button按鈕(其中Button1連接單片機按鈕、Button2為開燈按鈕、Button3為關燈按鈕),在Button_Click事件函數(shù)中分別實現(xiàn)連接51單片機WiFi模塊(WiFi模塊IP為192.168.2.1,端口為8000)、點亮LED、熄滅LED。本程序設計的關鍵環(huán)節(jié)是Socket函數(shù)類庫的正確使用。目前,介紹Socket類庫應用的資料非常少。其中Activity設計層“Layout1”文件的顯示界面如圖4所示。

圖4 Activity設計層“Layout1”文件的顯示界面
主要的代碼模塊(在安卓手機測試通過)為:
Sub Process_Globals
‘進程變量聲明函數(shù),變量能被所有模塊使用
Dim Socket1 As Socket
‘聲明新的Socket對象為進程變量
Dim OutputStream1 As OutputStream
‘同時聲明輸出管道流對象
End Sub
Sub Globals
‘Activity變量聲明函數(shù),變量只能在此Activity使用
Dim buffer(2) As Byte
‘必須聲明為數(shù)值型變量與單片機接收類型一致
Dim Button1 As Button
Dim Button2 As Button
Dim Button3 As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
Socket1.Initialize("Socket1")
‘必須對聲明的對象初始化,才能應用對象事件發(fā)生函數(shù)
Activity.LoadLayout("Layout1")
‘加載Layout1彈出窗體設計界面
End Sub
Sub Button1_Click
‘連接51單片機WiFi模塊
Socket1.connect("192.168.2.1",8000,0)
‘連接遠程主機(與單片機端WiFi模塊網(wǎng)絡設置一致)
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
文獻標識碼:A