上一篇写了尝鲜1.6元的蓝牙芯片KT6368A,还没完,今天的主题是实现手机端的测试软件。手机端大家通常会用LightBlue或者Nordic的nRF Connect软件做测试,但是作为干嵌入式的攻城狮,我相信肯定有不少人会有兴趣想自己弄一个可以修改的软件,难不成今天要介绍安卓编程了吗?不,因为我不会!我觉得也没必要专门为了这个去学安卓,毕竟我们也不是专门从事安卓开发的。有一种方法可以搞定,那就是使用QT,大家知道QT可以跨平台运行,并且用的也是嵌入式工程师熟悉的C 语言,所以可以用QT整一个在安卓系统里运行的蓝牙软件。
下面介绍实现方法:
第一步:QT安卓开发环境搭建
我用的QT 5.13,具体环境搭建大家可以参考:https://blog.csdn.net/tanglei1224/article/details/104820485
搭建完安卓环境,如果想编译安卓平台的程序,编译的时候只选择如下Kit就可以,其它都不用变
如果手机通过USB连接电脑的话,点击运行,手机端就会提示你安装应用程序。当然也可以把编译后生成的apk放到手机里安装,编译生成的apk在如下目录:
第二步:找QT 安卓BLE程序
我喜欢用前人造好的轮子,在网上找到了这篇文章:https://blog.csdn.net/rsd102/article/details/112453131 ,恰巧还认识该作者小哈哥,我把他的公众号原文也放到这里:Qt编程实例:基于Android的BLE通信软件,文中有代码的解释,感谢小哈哥的分享,让我很快实现了自己的想法。
为了证明我也干了一点事情,我实际上做了几处小小的改动:
1. 修改UUID
。因为原作者用的蓝牙模块和我不一样,不改动是没法正常使用的。
static const QLatin1String serviceUuid(
"{00010203-0405-0607-0809-0a0b0c0d1910}");
改为:
static const quint16 serviceUuid = (quint16)0xfff0;
KTA6368A默认是16位UUID 0xFFF0,这个在芯片的使用手册里有说明
-
增加了发送区,可以发送自己手动输入的内容。原来例程是点击发送,发送一个Hello World。
-
增加了接收区,将接收区和日志输出区分开了。原来例程是一起的。
-
把原作者的广告信息换成了新的广告信息,这个是重点。
第三步:实际测试
-
手机安装完之后,打开APP,自动搜索周围的蓝牙,显示在蓝牙列表里
-
点击需要连接的KTA6368A对应的蓝牙,点击连接按钮
连接成功后,日志如下
不知道为什么,我经常需要点击两次连接按钮才能连接成功,后面再研究研究是什么原因。
-
测试手机发送数据给KTA6368A
-
测试KTA6368A发送数据给手机
这样就初步实现了我们的目标,以后也可以出去吹牛自己也是可以开发安卓程序的人了。
当然这个QT程序还有很多可以改进的地方,比如UI的美化、和不同尺寸手机的适配、更加丰富的功能等,感兴趣的朋友可以拿源代码自由发挥,需要修改后源代码的可以在文章下方留言。
今天就到这里,下篇文章再见。