找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1186|回复: 0
打印 上一主题 下一主题
收起左侧

E4A BLE蓝牙实验

[复制链接]
跳转到指定楼层
楼主
  易安卓E4A安卓手机BLE蓝牙控制,通过BLE蓝牙模块串口连接电脑或单片机实现通信,手机接收显示电脑或单片机发来的信息,同时手机可通过蓝牙发送控制命令到电脑或单片机。手机APP用E4A6.9版本实现,纯中文的安卓手机APP编程软件,界面友好,实例与教程也很详细,学习中文编程的好软件。
下面是主窗口代码:
变量 服务UUID 为 文本型
变量 通道UUID 为 文本型
变量 设备地址 为 文本型
      
        事件 主窗口.创建完毕()
        '安卓6.0以上的系统需要动态申请权限,否则app可能无法正常运行
        如果 权限操作1.取系统版本号()>=23 则
                权限操作1.申请全部权限()
        结束 如果      
      
        置状态栏颜色(标签_窗口标题.背景颜色)'E4A的设置里,窗口风格要设置为沉浸模式,此命令才能生效
      
        '添加底部导航选项卡,组件的高度建议设置为32
        '底部导航1.背景颜色 = 白色
        '底部导航1.置文字颜色("#C0C0C0")
        '底部导航1.置文字激活颜色("#00BFFF")
        '底部导航1.置字体大小(10)
        '底部导航1.添加项目("直播","btn_live.png","btn_live_selected.png")
        '底部导航1.添加项目("视频","btn_video.png","btn_video_selected.png")
        '底部导航1.添加项目("更多","btn_more.png","btn_more_selected.png")
        '底部导航1.添加项目("我的","btn_user.png","btn_user_selected.png")
        '底部导航1.置现行选中项(0)
      
        '添加右上角的菜单
        高级菜单1.初始化(R.bkg,白色,真)'bkg是一个9宫格图片,存放在drawable图片资源里
        高级菜单1.添加菜单项("menu_icon_1.png","菜单项一")
        高级菜单1.添加菜单项("menu_icon_2.png","菜单项二")
        高级菜单1.添加菜单项("menu_icon_3.png","菜单项三")
        变量 结果 为 逻辑型
      
      
      
      
        结果 = BLE蓝牙1.初始化()
        弹出提示("初始化结果: " & 结果)      
结束 事件
事件 权限操作1.申请完毕(权限数组 为 文本型(),申请结果 为 整数型())
        '可以把需要特殊权限的代码写在此处,当申请权限成功后再执行相关代码
结束 事件
'事件 底部导航1.项目被选择(项目索引 为 整数型)
'        弹出提示("项目被选择:" & 项目索引)
'结束 事件
事件 主窗口.按下某键(键代码 为 整数型,传址 屏蔽 为 逻辑型)
        如果 键代码 = 返回键 则
                返回桌面()
        结束 如果
结束 事件
事件 图片框_返回.被单击()
        返回桌面()
结束 事件
事件 图片框_菜单.被单击()
        高级菜单1.弹出菜单2(图片框_菜单,200)
结束 事件
事件 高级菜单1.菜单被选择(索引 为 整数型,图标 为 文本型,标题 为 文本型)
        弹出提示(标题)
结束 事件
事件 BLE蓝牙1.创建完毕()
      
结束 事件
事件 搜索蓝牙.被单击()
        如果 搜索蓝牙.标题 = "开始搜索" 则
        位置传感器1.开始监测()
        BLE蓝牙1.开始搜索()
        时钟1.时钟周期 = 10*1000
        搜索蓝牙.标题 = "停止搜索"
   否则
       BLE蓝牙1.停止搜索()
        时钟1.时钟周期 = 0
       搜索蓝牙.标题 = "开始搜索"
    结束 如果
结束 事件
事件 时钟1.周期事件()
          BLE蓝牙1.停止搜索()
       搜索蓝牙.标题 = "开始搜索"
      时钟1.时钟周期 = 0
结束 事件
事件 BLE蓝牙1.发现设备(名称 为 文本型,地址 为 文本型,MajorID 为 整数型,MinorID 为 整数型,配对状态 为 整数型)
    如果 名称 = "BT24" 则        '屏蔽掉没有名称的蓝牙设备
      弹出提示("发现设备")
      列表框1.添加项目("名称: " & 名称 & "\n 地址: " & 地址)
      列表框1.置项目标记(列表框1.取项目数()-1,地址)
      结束 如果
结束 事件
事件 BLE蓝牙1.信号强度改变(名称 为 文本型,地址 为 文本型,信号强度 为 整数型)
     如果 名称 = "BT24" 则
     列表框1.置项目内容(0,"名称: " & 名称 & "\n 地址: " & 地址 & "\n 信号: " & 信号强度)
结束 如果
结束 事件
事件 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
     判断循环尾
结束 事件
      
      
      
      
事件 BLE蓝牙1.读取数据完毕(结果 为 整数型,服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())
  如果 结果 = 1 则
      弹出提示("读取数据成功: " & 通道UUID & "\n 数据: " & 字节集到十六进制(数据))
否则
       弹出提示("读取数据失败: " & 通道UUID & "\n 数据: " & 字节集到十六进制(数据))
        结束 如果
结束 事件
事件 BLE蓝牙1.通道数据改变(服务UUID 为 文本型,通道UUID 为 文本型,数据 为 字节型())
     弹出提示("通道数据改变" & 通道UUID & "\n 数据: " & 字节集到十六进制(数据))
     接收框.加入文本(字节到文本(数据,"GBK"))
结束 事件
事件 BLE蓝牙1.写入数据完毕(结果 为 整数型)
     如果 结果 = 1 则
        弹出提示("写入数据成功")
     否则
      弹出提示("写入数据失败")
    结束 如果
结束 事件
事件 列表框1.表项被单击(项目索引 为 整数型)
        设备地址 = 列表框1.取项目标记(项目索引)
    BLE蓝牙1.连接设备(设备地址)
        'BLE 蓝牙 1.连接设备(列表框 1.取项目标记(项目索引))
    弹出提示("正在连接")
    连接状态.标题 = "正在连接"
结束 事件
事件 上.被单击()
        BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("上\n","GBK"))
结束 事件
事件 左.被单击()
        BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("左\n","GBK"))
结束 事件
事件 右.被单击()
        BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("右\n","GBK"))
结束 事件
事件 下.被单击()
        BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节("下\n","GBK"))
结束 事件
事件 读取.被单击()
        BLE蓝牙1.读取数据(服务UUID,通道UUID)
结束 事件
事件 清空.被单击()
        接收框.内容 = 空
结束 事件
事件 接收框.内容被改变(新内容 为 文本型)
      
结束 事件
事件 接收框.创建完毕()
        接收框.置多行模式(真)
结束 事件
事件 发送.被单击()
        BLE蓝牙1.写入数据(服务UUID,通道UUID,文本到字节(发送框.内容,"GBK"))
结束 事件
事件 断开连接.被单击()
        BLE蓝牙1.断开连接()
结束 事件

E4A运行界面.png (120.83 KB, 下载次数: 26)

E4A编程界面

E4A编程界面

设计窗口1.png (26.05 KB, 下载次数: 27)

设计窗口1.png

设计窗口2.png (7.12 KB, 下载次数: 25)

设计窗口2.png

代码窗口1.png (36.7 KB, 下载次数: 25)

代码窗口1.png

代码窗口2.png (28.13 KB, 下载次数: 31)

代码窗口2.png

评分

参与人数 1黑币 +50 收起 理由
admin + 50

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表