基于Basic4Android开发平台的手机控制系统

2016-06-01 00:46
单片机与嵌入式系统应用 2016年3期
关键词:跳线开发板串口

穆 明

(淄博市教育服务中心,淄博 255000)



基于Basic4Android开发平台的手机控制系统

穆明

(淄博市教育服务中心,淄博 255000)

摘要:目前物联网已经开始渗透到工作生活的方方面面,无线WiFi也成为普遍的应用技术之一。基于51系列WiFi开发板的控制系统介绍了B4A(Basic4Android)开发平台应用,从而降低了智能终端APP的开发难度。

关键词:WiFi;Basic4Android平台;STC89LE54RD+;APP

引言

图1 零度创意51单片机WiFi开发板的元器件图

本文基于51系列的零度创意WiFi开发板,在原开发板的软硬件平台架构的基础上,用Eclipse开发的手机端APP改为在Basic4Android平台进行开发,具有一定的推广价值。以下从一个具体实例入手,详细描述安卓智能手机通过WiFi与单片机系统通信的结构设计。

1单片机程序设计

1.1单片机平台简介

零度创意51单片机WiFi开发板基于STC89LE54RD+芯片,搭载工业级M02 WiFi模块,WiFi模块与单片机串口连接,内置IEEE802.11协议栈以及TCP/IP协议栈,能够实现嵌入式设备数据到无线网络之间的转换。本开发板将串口多次使用,即向单片机烧写程序时,断开WiFi模块和51主控芯片的连接跳线(见开发板随机说明资料),51主控芯片与虚拟串口CP2102USB芯片自然连接,下载成功后将WiFi模块和51主控芯片的跳线连接;配置WiFi模块时(指由专用软件配置),断开WiFi模块和51主控芯片的连接跳线,接通WiFi模块与虚拟串口CP2102USB芯片的连接跳线进行WiFi模块参数配置。零度创意51单片机WiFi开发板的元器件图如图1所示。

该模块有2种与上位机通信的模式:①AP热点模式,即本身为终端,设备接入AP进行控制;②STA模式,即本身为副端,可将其连入路由器,设备连入路由器后可以同时连接多个模块。模块自身带有配置程序,将模块连接至计算机,安装COM口驱动程序后,既可按自身需求设置WiFi模块的参数,也可通过编写WiFi模块函数添加到工程程序包,由单片机通过发送串口AT指令配置WiFi模块。

该系统采用config程序配置WiFi模块:先给开发板上电,接好串口连接线(即虚拟串口连接线),连接相应的跳线帽,检测串口线的驱动是否安装,并且查看串口线对应的COM 接口;然后再安装并运行WiFi模块配置工具,直到WiFi模块搜索成功。本实例将WiFi模块配置成AP模式,WiFi 模块默认IP地址为192.168.2.1,网络协议为TCP,本模块作为服务器模式。配置管理程序界面如图2所示。

图2 WiFi 模块配置管理程序界面

1.2单片机程序设计结构

单片机端控制LED的程序设计思路为通过WiFi模块接收串口数据来控制I/O口的高低电平以实现LED灯的通断。为了与手机端APP程序控制编码协议保持一致,单片机控制代码采用数值类型,本例的开灯控制代码为0x01、0x01,关灯控制代码为0x01、0x00(特别说明的是,本开发板的电脑TCP控制WiFi模块数据控制代码为字符串类型)。LED工程文件各模块分布如图3所示。

图3 LED.uvproj工程文件分布界面

LED工程文件中的USER模块是用户文件,C51_Driver.c是单片机驱动层,包括串口初始化配置、串口发送函数和串口中断接收函数;main.C是上层应用,判断接收的指令类型以及根据指令类型控制灯的开关;wifi.c是用户需要使用软件的AT指令方式配置WiFi模块的函数,一般情况下使用配置工具配置模块,所以这个文件基本上不使用;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;//初始化数组值

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开发平台简介

Basic4Android是一个类似于VB的Android应用开发平台,其功能非常强大,可将代码直接编译安卓原生应用软件而不需要其他环境的支持,避免了传统Eclipse需要大量代码以及难理解的问题(注:此工具只支持安卓系统开发)。Basic4Android带有丰富的库函数并支持Android的核心特性,其开发环境搭建运行基本步骤如下:

① 安装.NET Frameword2.0(NetFx20SP2_x86);

② 安装JDK6(jdk-6u39-windows-i586,32位);

③ 安装Android_SDK;

④ 安装Basic4Android平台;

⑤ 配置Basic4Android,打开Basic4Android,执行“Tools”菜单下的“Configure Paths”命令,配置javac.exe和android.jar的安装路径,以及附加的Basic4Android库;

⑥ 安装B4A-Bridge调试器,手机端 安装B4A-Bridge调试器并运行,同时电脑端执行“B4A安卓端工具”的“用WIFI连接”命令,运行“Run”菜单命令即可编译并在手机端安装APP程序。

2.2APP程序设计结构

在Basic4Android平台完成代码和VB编程类似,如所需要的控件函数不在工具栏,则需要添加库函数,点击展开库函数Libs菜单,勾选要引用的库函数。若所用版本自身所带函数库种类不能满足需要,也可根据需求扩展库函数,即将后缀为.xml和.jar相应的类库文件拷贝到安装程序的Libraries子文件夹下即可使用。每个 Basic4Android 程序在其自己的进程中运行,由一个或者多个Activity组成,Activity有点类似Windows 的窗体。Activity建立后,就会调用Sub Activity_Create子程序;当用户启动应用时, 这个子程序用来载入或者建立layout;当Activity从前台转换到后台时调用 Activity_Pause子程序;当Activity_Create完成后会立刻调用Activity_Resume子程序。

本文用手机控制单片机LED的亮灭,在Basic4Android 平台IDE界面添加引用Network类库,采用Socket类封装函数与单片机通信,在Activity层文件里添加3个Button按钮(其中Button1连接单片机按钮、Button2为开灯按钮、Button3为关灯按钮),在Button_Click事件函数中分别实现连接51单片机WiFi模块(WiFi模块IP为192.168.2.1,端口为8000)、点亮LED、熄灭LED。本程序设计的关键环节是Socket函数类库的正确使用。目前,介绍Socket类库应用的资料非常少。其中Activity设计层“Layout1”文件的显示界面如图4所示。

图4 Activity设计层“Layout1”文件的显示界面

主要的代码模块(在安卓手机测试通过)为:

Sub Process_Globals

‘进程变量声明函数,变量能被所有模块使用

Dim Socket1 As Socket

‘声明新的Socket对象为进程变量

Dim OutputStream1 As OutputStream

‘同时声明输出管道流对象

End Sub

Sub Globals

‘Activity变量声明函数,变量只能在此Activity使用

Dim buffer(2) As Byte

‘必须声明为数值型变量与单片机接收类型一致

Dim Button1 As Button

Dim Button2 As Button

Dim Button3 As Button

End Sub

Sub Activity_Create(FirstTime As Boolean)

Socket1.Initialize("Socket1")

‘必须对声明的对象初始化,才能应用对象事件发生函数

Activity.LoadLayout("Layout1")

‘加载Layout1弹出窗体设计界面

End Sub

Sub Button1_Click

‘连接51单片机WiFi模块

Socket1.connect("192.168.2.1",8000,0)

‘连接远程主机(与单片机端WiFi模块网络设置一致)

End Sub

Sub socket1_Connected (Successful As Boolean)

‘连接发生事件

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)

‘将开灯控制代码数据(必须是数值型)写入输出管道流

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

猜你喜欢
跳线开发板串口
输电线路跳线风偏响应分析及手册计算方法修正
浅谈AB PLC串口跟RFID传感器的通讯应用
基于STM32H7的FDCAN通信系统设计与实现∗
基于线性拟合和差值补偿的跳线计算方法研究
浅析单片机开发板的设计与制作
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
小康巡诊日记