使用AppInventor的APP开发之旅

我为什么选择AppInventor制作APP

本人也只是一名学习机械的普通大一学生,奈何喜欢玩单片机,但是没有心思去专门学子Android平台的APP开发,想另辟蹊径,所以我找到了AppInventor,我要的基本功能都有,目前能满足我的要求。

首先要明确我所需要的

手机与单片机通过蓝牙通信(BLE),蓝牙模块通过UART串口连接到单片机。我刚刚开始接触UART串口,所以在后面肯定会遇到很多问题,希望大家能帮我指正!
我需要APP具有BLE蓝牙的连接功能、数据发送功能。这两个功能很基础,其他功能后面想到了再加吧。

开始制作

前期准备

我使用的蓝牙模块是HC-08,花了很少的钱就买到了测试架+蓝牙模块(我比较穷),安装好官方提供的电脑端和手机端的测试应用,就是这两个这是手机端的这是电脑端的
可以发送中文,也可以发送很长的字符串,我对发送中文没有要求,但是可能需要发送长字符串。简单测试之后就要看看我自己的APP怎么做了。
打开AppInventor的官网,我用的是国外版的(http://ai2.appinventor.mit.edu/),推荐有能力的朋友选择国外版的,然后需要在谷歌应用商店下载一个AI2伴侣,这是专门调试APP用的。
这是主页
点击“Create Apps!”开始制作,
在这里插入图片描述
选择新建项目(如果不是中文可以通过右上方的语言选项选择中文),填好项目名称就可以开始了。
这就是主界面
在左侧可以把自己需要的模块拖进手机,我简单拖了下

差不多排成这样了,如果显示不全,可以切换成(1024,768)分辨率的,目前没发现哪里可以更改自定义分辨率。在右侧可以定义每个组件的属性,包括颜色、尺寸、文本等等,大家自己摸索,我不过多讲解。
这个APP最重要的一个组件就是BLE蓝牙,最开始是走了弯路的,由于使用的非标准蓝牙,所以AppInventor提供的蓝牙组件是用不到的,为了方便大家开发类似的项目,我把组件连接贴出来吧(http://iot.appinventor.mit.edu/#/bluetoothle/bluetoothleintro)选择“Download the BluetoothLE extension (version 20190701)”就可以下载BLE的插件了(.aix文件),在用户面板底部的“extension”即可导入插件在这里插入图片描述
我提供的下载页面也不要急着关掉了,往下滑可以看到官方对于这个组件的使用介绍,没有时间看的朋友可以看我下面的基本使用介绍。

BLE组件的基本用法

打开逻辑设计逻辑设计
在这里插入图片描述
点击BluetoothLE1,会出现一堆模块,不要慌,下面是BLE通信基本要用到的模块
蓝牙扫描
首先就要开启蓝牙扫描(不然你连接空气?)我用标签显示蓝牙状态,在扫描出设备后肯定是要显示出设备的吧
显示设备
那么就要调用这个模块,通过列表显示框将找到的设备显示出来,(注意:我推荐的是使用列表显示框,目的是方便后面选择连接的设备)列表显示框可以对列举的项目进行选择,然后还需要在选择好设备后连接到这个设备
选择完成
在左侧选择列表显示框,然后就要选择完成后事件,我推荐在在选择完成后停止蓝牙扫描,方便下次连接,然后就是连接到列表显示框1中选中项索引,后面我用标签显示蓝牙状态,最后一步清空列表显示框1中的元素字符串,让界面整洁一些,也可以防止后面误操作。
如果连接失败怎么办呢?开发者提供了连接失败的模块
连接失败
还是通过前面的那个标签显示状态。
我在APP界面添加了以一个断开连接的按钮,在每次退出APP时需要手动点击断开连接(看后期能否优化吧)下面是断开连接的按钮点击后进行的操作。
断开连接
断开连接后需要把所有连接后才能用的按钮全部隐藏起来。
现在我们需要注册下设备的UUID了,serviceUuid和characteristicUuid一般都能在模块或者芯片的DataSheet里,我这里给出我用的HC-08的serviceUuidcharacteristicUuid
连接成功后
serviceUuid:0000FFE0-0000-1000-8000-00805F9B34FB
characteristicUuid:0000FFE1-0000-1000-8000-00805F9B34FB

将一些按钮显示出来,utf16设置为假。
有了这些还是没办法正常发送和接收数据。

接收数据Received

发送数据
这个问题坑了我很久,官网介绍由于是英文,本人水平有限就算借助了翻译也没看太懂,一直以为用的是ReadStrings,然后到处翻终于找到这个能用的了。(推荐在蓝牙连接成功后调用RegisterForStrings,设置参考前一张图片)
调用接收模块,我通过列表显示框2显示接受的数据,由于模块是蓝牙4.0的,所以只能接收20个字符(数字、标点、字母、汉字都算一个字符,暂时测试的汉字会乱码

发送数据Write

由于我需要在发送的字符串后面加结束符,所以我使用了一个下拉框来选择需要加上的结束符结束符
设置结束符变量,在发送时使用文本拼接即可
发送数据
将我在文本框输入的字符串在结尾接上结束符后发送出去(注意:结束符占一个字符)

完成了基本的结构

做到这里,已经基本完成了一个蓝牙串口通信的APP,但现在有一个很重要的问题有待解决,如何通过其他方式规避20个字符发送和接收的限制,目前正在想办法克服这个问题,有相关想法的朋友可以在下面给我评论,感激不尽。
关于APP调试,我多数几句,在界面顶部的“连接”里有三种调试方式。第一种是AI伴侣,通过手机上的AI2扫码调试;第二种是模拟器,通过aiStarter调试(下载地址:http://128.52.184.65/MIT_App_Inventor_Tools_2.3.0_win_setup.exe),在选则这个调试时要提前打开这个软件;第三种是USB,需要通过数据线把手机连到电脑,手机要打开开发者模式-启用USB调试,在调试时提前打开电脑上的aiStarter和手机上的AI2。USB调试方式是我最推荐的,第一种会出现锁屏掉线和切切出应用掉线的情况,第二种无法进行BLE之类的连接,加载速度较慢,USB调试的连接最稳定,速度也很快。

这是我在CSDN的处女作,我会尽可能完善这篇博客的内容,如果大家有什么问题,可以在评论里提出,我们一起讨论,整理进这篇博客。
2020.07.11 第一次更新

  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值