App Inventor 使用BLE发送一串十六进制数据

最近做的东西需要通过低功耗蓝牙BLE发送和接收一串的十六进制数据,现在终于把发送搞定了。

 现在要用手机发送一串指令“01 01 02 12 45 65”,想要既可以直接发送,也可以手动输入任何十六进制进行发送,找了很多资料要么是蓝牙(不是BLE)的,要么是发送接收一个数(整型、字符等待),发送一串数据就比较难搞了。以前都是用Light Blue发的,每次指令都要手打很烦,有必要整一个整合的工具,能一键发送指令。

一句话总结:BLE.WriteBytes + 列表


添加BLE功能模块

首先,默认大家已经知道ai的基本操作,所以由的步骤不会讲太细(才不是因为我也没研究过呢

App inventor的正式版是不带BLE功能的(虽然叫MIT AI 2 测试版),只有基础的蓝牙功能,需要使用BLE就要自己下载aix包后导入。点这里可以下载。

下载完后进入ai组件面板,选择Extension,然后import extension,选择刚刚下载的aix文件即可。

1、导入BLE功能模块
1、导入BLE功能模块

使用BLE需要把它拖进屏幕内,这样就能在逻辑面板使用BLE的各个模块了。

连接

我图省事儿,直接按MAC地址连接,如果需要选择设备的话有现成的帖子应该比较容易找到。

2、BLE连接

发送一串指令

那么具体步骤,首先重新明确一下要求,1、一键发送现成的指令。2、可以自行编辑十六进制的指令发送

两个功能我是分开做的,没有复用代码块(也导致我导出的程序有点大

一键发送指令

我创建了一个列表,把基础的指令按字节放在列表里。点击发送的时候就会读取文本框的数字(10进制),转为16进制替换掉列表里的值,然后调用BLE.WriteBytes发送这一个列表,实测MCU成功收到了完整的指令,也正确执行了操作。

Bytes类型就是二进制数据,使用string或者其他的都会进行数据判断导致出错,只有发送bytes可以原封不动的把二进制数码发送。

这里关键的是数据类型的转换(其实只包含了进制转换):创建的数组内容应该是16进制hex的,但是ai中16进制会表示为2个字符,那么反过来想,我们输入两个字符,再转为10进制不就在01的层面上获得了hex数吗。

3、一键发送的设计
4、预先创建列表,发送时替换第二行
5、一键发送的代码块

PS.图5中的数字我就是按hex传的,方便后台查看,也没考虑多大于99的情况

 

发送任意十六进制指令

有了上面的成功经验,发送任意长度的指令也是可行的了。这里我准备了一个文本框,在里面输入十六进制的数,BLE就能按这个形式发送出去(不能添加空格,程序中用了“删除空格”模块发现没啥用;如果是奇数个,会最后补零;长度大于20,会弹窗警告)。

6、发送按钮执行的功能
7、hex形式发送任意内容
8、字符串处理流程

过程中有不少杂乱低效的代码块,主要还是当时不熟悉ai的操作和各个代码块的使用,不少学习尝试的痕迹留在里面也没改,但感觉流程图还是比较清晰的。


自此,我们成功实现了使用蓝牙BLE发送一串指令,之前尝试过分段后一个一个发送,发现MCU也是一个个的接收一个个的打印,没有起到指令的作用。至于发送,先鸽了不重要。

这是我第一次写blog,主要是记录这次的尝试过程和结果,希望自己不要忘掉。文章的结构和描述都比较混乱,内容深度也不是很深,希望大家多多包涵。有什么意见欢迎提给我,我好多多学习。

 

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值