出品 21ic论坛 gaoyang9992006网站:bbs.21ic.com做安卓手机APP通常使用高端大气的Android Studio,开发语言是Java,该开发IDE就是体积大学习成本高,入手慢,这里给大家推荐一款国产的软件,体积小,运行和编译速度快。最重要的是编程语言是中文这个软件就是E4A.本次我将向大家介绍如何使用E4A开发BLE蓝牙手机上位机APP。当然,该软件自带了丰富的例子,也提供了一个BLE例子,大家可以借鉴。由于没有提供各种库的说明文档和帮助文件,学这个软件可能有经过一段摸索,这里我将向大家介绍我在开发这个软件中获得的经验。中文编程语言:易语言,采用中文作为关键字,但是编程的语法和思想和C语言是类似的,为了方便理解,这里我结合单片机开发的思路简单介绍一下。变量要声明类型对象操作的函数称为:方法对象可触发的中断函数称为:事件对象可设置的参数称为:属性好接下来介绍 BLE蓝牙库BLE(Bluetooth Low Energe)低功耗蓝牙设备主要用于智能穿戴和物联网。BLE蓝牙类库,包含两种操作:方法和事件方法: 初始化 置可被发现 开始搜索 停止搜索 连接设备 断开连接 释放资源 是否可读 是否可写 是否可通知 读取数据 写入数据事件: 创建完毕 发现设备 信号强度改变 发现服务 连接状态改变 读取数据完毕通道数据改变由于不存在可见的对象,因此蓝牙没有属性设置。了解方法和事件的用法可通过左侧类库目录选中对应的条目,在下面的提示信息中查看。例如选中BLE蓝牙库的方法 初始化 条目后: 方法:初始化()为 逻辑型 分类:BLE蓝牙类库—BLE蓝牙 注释:初始化BLE蓝牙设备,成功返回真,失败返回假,BLE蓝牙需要安卓4.3以上系统的支持。另外 事件类似中断函数,因此在代码中没有先后顺序,可以根据易读的排列顺序进行排版。所有的动作均属于触发的事件,因此,方法通常在事件里面进行调用。自己创建的函数,需要自己实现该函数的具体过程,因此函数在这里称为:过程不过我们这里做BLE蓝牙APP可以不用到过程。好了,基本的概念已经介绍了,我们可以开始整了。第一步,先根据我们的需要完成可视化的组件布局,并给添加的组件起上一个跟操作相关的名字,在组件的属性对话框设置,同时可以设置组件的其他相关属性。
第二步,使用中需要完成单击响应的,我们可以在设计区直接双击组件,即可自动在代码区生成一个空的事件(类似单片机开发中的中断处理函数,用于响应单击事件),例如四个方向键的单击事件。以下代码我已经填充了单击后执行的蓝牙方法:写入数据,即发数据给连接到手机的蓝牙模块。事件 按钮上.被单击() BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节(“上\n”,”GBK”))结束 事件事件 按钮下.被单击() BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节(“下\n”,”GBK”))结束 事件事件 按钮左.被单击() BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节(“左\n”,”GBK”))结束 事件事件 按钮右.被单击() BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节(“右\n”,”GBK”))结束事件第三步,完成主窗口的创建工作,因为我们要使用蓝牙库,所以我们可以在APP启动后就申请使用蓝牙的权利,并初始化一个蓝牙对象。另外就是要实现软件退出的操作,所以我们可以设置一个退出的按钮,实现结束程序。内容如下。事件 主窗口.创建完毕() ‘安卓6.0以上的系统需要动态申请权限,否则app可能无法正常运行 如果 权限操作1.取系统版本号()>=23 则 权限操作1.申请全部权限() 结束 如果 变量 结果 为 逻辑型 结果 = BLE蓝牙1.初始化() 弹出提示(“初始化结果:” & 结果) 结束 事件事件 权限操作1.申请完毕(权限数组 为 文本型(),申请结果 为 整数型()) ‘可以把需要特殊权限的代码写在此处,当申请权限成功后再执行相关代码结束 事件事件 图片框_返回.被单击() 结束程序()结束事件
第四步,实现蓝牙设备的搜索,从搜索到的蓝牙信号中选出我们要的那个,另外在搜索的过程中显示信号的强度。
通过按钮单击实现搜索与停止搜索,并设定搜索时间为10秒,10秒后自动停止搜索。
通过发现设备事件,读取搜到的设备,并匹配名称是否为自己要找的信号。这里我内置了信号名称,也可以通过一个输入框,实现敏感信号名称的修改。
使用信号强度改变事件读取搜索中的信号强度,我们只读取感兴趣的那个名字的信号。
同时通过颜色和文字提示是否连接上或者断开了。这可以使用BLE蓝牙对象的连接状态改变事件实现。
执行完读取操作后,系统会在通道内有数据发送来的时候触发通道数据改变的事件,在该事件中我们读取数据,另外也会触发读取完毕的事件。
发送数据是通过单击发送按钮触发写入数据方法实现的,当完成写入后可通过写入数据完毕事件知道是否发送成功。
事件 BLE蓝牙1.读取数据完毕(结果 为 整数型,服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型()) 如果 结果 = 1 则 弹出提示(“读取数据成功:” & 通道UUID & “\n数据:” & 字节集到十六进制(数据)) 否则 弹出提示(“读取数据失败:” & 通道UUID & “\n数据:” & 字节集到十六进制(数据)) 结束 如果 结束 事件事件 BLE蓝牙1.通道数据改变(服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型()) 弹出提示(“通道数据改变” & 通道UUID & “\n数据:” & 字节集到十六进制(数据)) 接收框.加入文本(字节到文本(数据,”GBK”)) 结束 事件事件 发送按钮.被单击() BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节(发送框.内容,”GBK”))结束 事件事件 BLE蓝牙1.写入数据完毕(结果 为 整数型) 如果 结果 = 1 则 弹出提示(“写入数据成功”) 否则 弹出提示(“写入数据失败”) 结束 如果结束事件
其他的操作可在以下完整代码中查看
技巧:分割线可以使用标签组件制作,如下图所示
另外就是关于生成后程序的属性设置,比如版本号,设计的分辨率,图标等
实测截图下图为蓝牙串口模块,与电脑连接,红灯常亮表示已连接手机蓝牙,闪烁表示等待连接。
下图为串口助手与手机通过蓝牙模块进行通信的截图
下图为手机画面截图
讲解视频https://www.bilibili.com/video/BV1rb4y1b7ez/