变量 服务UUID 为 文本型
变量 通道UUID 为 文本型
变量 设备地址 为 文本型
事件 主窗口.创建完毕()
'安卓6.0以上的系统需要动态申请权限,否则app可能无法正常运行
如果 权限操作1.取系统版本号()>=23 则
权限操作1.申请全部权限()
结束 如果
变量 结果 为 逻辑型
结果 = BLE蓝牙1.初始化()
弹出提示("初始化结果:" & 结果)
结束 事件
事件 权限操作1.申请完毕(权限数组 为 文本型(),申请结果 为 整数型())
'可以把需要特殊权限的代码写在此处,当申请权限成功后再执行相关代码
结束 事件
事件 接收框.创建完毕()
接收框.置多行模式(真)
结束 事件
事件 图片框_返回.被单击()
BLE蓝牙1.释放资源()
结束程序()
结束 事件
事件 搜索按钮.被单击()
如果 搜索按钮.标题 = "开始搜索" 则
位置传感器1.开始监测()
BLE蓝牙1.开始搜索()
时钟1.时钟周期 = 10*1000
搜索按钮.标题 = "停止搜索"
否则
BLE蓝牙1.停止搜索()
时钟1.时钟周期 = 0
搜索按钮.标题 = "开始搜索"
结束 如果
结束 事件
事件 时钟1.周期事件()
BLE蓝牙1.停止搜索()
搜索按钮.标题 = "开始搜索"
时钟1.时钟周期 = 0
结束 事件
事件 BLE蓝牙1.发现设备(名称 为 文本型,地址 为 文本型,MajorID 为 整数型,MinorID 为 整数型,配对状态 为 整数型)
' 如果 名称 = "BT24-PA" 则
如果 名称 = 对象名称框.内容 则
'屏蔽掉没有名称的蓝牙设备
' 弹出提示("发现设备")
列表框1.添加项目("名称:" & 名称 & "\n地址:" & 地址)
列表框1.置项目标记(列表框1.取项目数()-1,地址)
结束 如果
结束 事件
事件 BLE蓝牙1.信号强度改变(名称 为 文本型,地址 为 文本型,信号强度 为 整数型)
如果 名称 = "BT24" 则
列表框1.置项目内容(0,"名称:" & 名称 & "\n地址:" & 地址 & "\n信号:" & 信号强度)
结束 如果
结束 事件
事件 列表框1.表项被单击(项目索引 为 整数型)
设备地址 = 列表框1.取项目标记(项目索引)
BLE蓝牙1.连接设备(设备地址)
'BLE蓝牙1.连接设备(列表框1.取项目标记(项目索引))
' 弹出提示("正在连接")
连接状态.标题 = "正在连接"
结束 事件
事件 连接状态.被单击()
如果 连接状态.背景颜色 = 绿色 则
BLE蓝牙1.断开连接()
连接状态.标题 = "正在断开"
否则
连接状态.标题 = "正在连接"
BLE蓝牙1.连接设备(设备地址)
结束 如果
结束 事件
事件 BLE蓝牙1.连接状态改变(状态 为 整数型)
如果 状态 = 1 则
连接状态.标题 = "已连接"
连接状态.背景颜色 = 绿色
否则
连接状态.标题 = "已断开"
连接状态.背景颜色 = 红色
结束 如果
结束 事件
事件 BLE蓝牙1.发现服务(服务信息 为 集合)
如果 服务信息.取项目总数() < 0 则
退出
结束 如果
变量 i 为 整数型
变量 j 为 整数型
变量 信息数组 为 文本型()
i = 0
判断循环首 i < 服务信息.取项目总数()
信息数组 = 服务信息.取项目(i)
j = 0
判断循环首 j < 取数组成员数(信息数组)
如果 j >0 则
如果 BLE蓝牙1.是否可读(信息数组(0),信息数组(j)) = 真 且 BLE蓝牙1.是否可写(信息数组(0),信息数组(j)) =真 且 BLE蓝牙1.是否可通知(信息数组(0),信息数组(j)) =真 则
服务UUID = 信息数组(0)
通道UUID = 信息数组(j)
'BLE蓝牙1.读取数据(服务UUID,通道UUID)
'接收框.内容 = 服务UUID &"\n"& 通道UUID
时钟2.时钟周期 = 1000
结束 如果
结束 如果
j = j + 1
判断循环尾
i = i + 1
判断循环尾
结束 事件
事件 时钟2.周期事件()
BLE蓝牙1.读取数据(服务UUID,通道UUID)
接收框.内容 = 服务UUID &"\n"& 通道UUID
时钟2.时钟周期 = 0
结束 事件
事件 清空接收按钮.被单击()
接收框.内容 = 空
结束 事件
事件 BLE蓝牙1.读取数据完毕(结果 为 整数型,服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())
如果 结果 = 1 则
' 弹出提示("读取数据成功:" & 通道UUID & "\n数据:" & 字节集到十六进制(数据))
否则
' 弹出提示("读取数据失败:" & 通道UUID & "\n数据:" & 字节集到十六进制(数据))
结束 如果
结束 事件
事件 BLE蓝牙1.通道数据改变(服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())
' 弹出提示("通道数据改变" & 通道UUID & "\n数据:" & 字节集到十六进制(数据))
接收框.加入文本(字节到文本(数据,"GBK"))
结束 事件
事件 发送按钮.被单击()
BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节(发送框.内容,"GBK"))
结束 事件
事件 BLE蓝牙1.写入数据完毕(结果 为 整数型)
如果 结果 = 1 则
' 弹出提示("写入数据成功")
否则
' 弹出提示("写入数据失败")
结束 如果
结束 事件
事件 读取按钮.被单击()
BLE蓝牙1.读取数据(服务UUID,通道UUID)
结束 事件
事件 按钮上.被单击()
BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("{AT:ABCD1234UP}\r\n","GBK"))
结束 事件
事件 按钮下.被单击()
BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("{AT:ABCD1234DN}\r\n","GBK"))
结束 事件
事件 按钮左.被单击()
BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("{AT:ABCD1234LF}\r\n","GBK"))
结束 事件
事件 按钮右.被单击()
BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("{AT:ABCD1234RT}\r\n","GBK"))
结束 事件
事件 三角按钮上.被单击()
BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("{AT:ABCD1234T0}\r\n","GBK"))
结束 事件
事件 三角按钮下.被单击()
BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("{AT:ABCD1234V0}\r\n","GBK"))
结束 事件
事件 停止按钮.被单击()
BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("{AT:ABCD1234S0}\r\n","GBK"))
结束 事件
串口蓝牙模块以其易用而闻名,但是一直存在通信距离短的弊端,随着技术的发展,蓝牙的通信距离已经大大提升,从开始的10米,百米,到现在的600米。通信技术的提升带来更多的无线设备设计方案。作者使用开发板与手机通信,蓝牙模块作为桥接,实现短距离的穿墙测试,实现效果较好。