找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2546|回復: 0
收起左側(cè)

E4A BLE藍牙實驗

[復制鏈接]
ID:920755 發(fā)表于 2023-3-26 09:17 | 顯示全部樓層 |閱讀模式
  易安卓E4A安卓手機BLE藍牙控制,通過BLE藍牙模塊串口連接電腦或單片機實現(xiàn)通信,手機接收顯示電腦或單片機發(fā)來的信息,同時手機可通過藍牙發(fā)送控制命令到電腦或單片機。手機APP用E4A6.9版本實現(xiàn),純中文的安卓手機APP編程軟件,界面友好,實例與教程也很詳細,學習中文編程的好軟件。
下面是主窗口代碼:
變量 服務UUID 為 文本型
變量 通道UUID 為 文本型
變量 設備地址 為 文本型
      
        事件 主窗口.創(chuàng)建完畢()
        '安卓6.0以上的系統(tǒng)需要動態(tài)申請權(quán)限,否則app可能無法正常運行
        如果 權(quán)限操作1.取系統(tǒng)版本號()>=23 則
                權(quán)限操作1.申請全部權(quán)限()
        結(jié)束 如果      
      
        置狀態(tài)欄顏色(標簽_窗口標題.背景顏色)'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.置現(xiàn)行選中項(0)
      
        '添加右上角的菜單
        高級菜單1.初始化(R.bkg,白色,真)'bkg是一個9宮格圖片,存放在drawable圖片資源里
        高級菜單1.添加菜單項("menu_icon_1.png","菜單項一")
        高級菜單1.添加菜單項("menu_icon_2.png","菜單項二")
        高級菜單1.添加菜單項("menu_icon_3.png","菜單項三")
        變量 結(jié)果 為 邏輯型
      
      
      
      
        結(jié)果 = BLE藍牙1.初始化()
        彈出提示("初始化結(jié)果: " & 結(jié)果)      
結(jié)束 事件
事件 權(quán)限操作1.申請完畢(權(quán)限數(shù)組 為 文本型(),申請結(jié)果 為 整數(shù)型())
        '可以把需要特殊權(quán)限的代碼寫在此處,當申請權(quán)限成功后再執(zhí)行相關代碼
結(jié)束 事件
'事件 底部導航1.項目被選擇(項目索引 為 整數(shù)型)
'        彈出提示("項目被選擇:" & 項目索引)
'結(jié)束 事件
事件 主窗口.按下某鍵(鍵代碼 為 整數(shù)型,傳址 屏蔽 為 邏輯型)
        如果 鍵代碼 = 返回鍵 則
                返回桌面()
        結(jié)束 如果
結(jié)束 事件
事件 圖片框_返回.被單擊()
        返回桌面()
結(jié)束 事件
事件 圖片框_菜單.被單擊()
        高級菜單1.彈出菜單2(圖片框_菜單,200)
結(jié)束 事件
事件 高級菜單1.菜單被選擇(索引 為 整數(shù)型,圖標 為 文本型,標題 為 文本型)
        彈出提示(標題)
結(jié)束 事件
事件 BLE藍牙1.創(chuàng)建完畢()
      
結(jié)束 事件
事件 搜索藍牙.被單擊()
        如果 搜索藍牙.標題 = "開始搜索" 則
        位置傳感器1.開始監(jiān)測()
        BLE藍牙1.開始搜索()
        時鐘1.時鐘周期 = 10*1000
        搜索藍牙.標題 = "停止搜索"
   否則
       BLE藍牙1.停止搜索()
        時鐘1.時鐘周期 = 0
       搜索藍牙.標題 = "開始搜索"
    結(jié)束 如果
結(jié)束 事件
事件 時鐘1.周期事件()
          BLE藍牙1.停止搜索()
       搜索藍牙.標題 = "開始搜索"
      時鐘1.時鐘周期 = 0
結(jié)束 事件
事件 BLE藍牙1.發(fā)現(xiàn)設備(名稱 為 文本型,地址 為 文本型,MajorID 為 整數(shù)型,MinorID 為 整數(shù)型,配對狀態(tài) 為 整數(shù)型)
    如果 名稱 = "BT24" 則        '屏蔽掉沒有名稱的藍牙設備
      彈出提示("發(fā)現(xiàn)設備")
      列表框1.添加項目("名稱: " & 名稱 & "\n 地址: " & 地址)
      列表框1.置項目標記(列表框1.取項目數(shù)()-1,地址)
      結(jié)束 如果
結(jié)束 事件
事件 BLE藍牙1.信號強度改變(名稱 為 文本型,地址 為 文本型,信號強度 為 整數(shù)型)
     如果 名稱 = "BT24" 則
     列表框1.置項目內(nèi)容(0,"名稱: " & 名稱 & "\n 地址: " & 地址 & "\n 信號: " & 信號強度)
結(jié)束 如果
結(jié)束 事件
事件 BLE藍牙1.連接狀態(tài)改變(狀態(tài) 為 整數(shù)型)
   如果 狀態(tài) = 1 則
     連接狀態(tài).標題 = "已連接"
     連接狀態(tài).背景顏色 = 綠色
   否則
     連接狀態(tài).標題 = "已斷開"
     連接狀態(tài).背景顏色 = 紅色
   結(jié)束 如果
結(jié)束 事件
事件 BLE藍牙1.發(fā)現(xiàn)服務(服務信息 為 集合)
    如果 服務信息.取項目總數(shù)() < 0 則
     退出
   結(jié)束 如果
   變量 i 為 整數(shù)型
   變量 j 為 整數(shù)型
        變量 信息數(shù)組 為 文本型()
        i = 0
        判斷循環(huán)首 i < 服務信息.取項目總數(shù)()
      信息數(shù)組 = 服務信息.取項目(i)
    j = 0
    判斷循環(huán)首 j < 取數(shù)組成員數(shù)(信息數(shù)組)
     如果 j >0 則
       如果 BLE藍牙1.是否可讀(信息數(shù)組(0),信息數(shù)組(j)) =真 且 BLE藍牙1.是否可寫(信息數(shù)組(0),信息數(shù)組(j)) =真 且 BLE藍牙1.是否可通知(信息數(shù)組(0),信息數(shù)組(j)) =真 則
      服務UUID = 信息數(shù)組(0)
      通道UUID = 信息數(shù)組(j)     
        'BLE藍牙1.讀取數(shù)據(jù)(服務UUID,通道UUID)
    '接收框.內(nèi)容 = 服務 UUID &"\n"&通道 UUID
     時鐘2.時鐘周期 = 1000
     結(jié)束 如果
     結(jié)束 如果
     j = j + 1
     判斷循環(huán)尾
     i = i + 1
     判斷循環(huán)尾
結(jié)束 事件
      
      
      
      
事件 BLE藍牙1.讀取數(shù)據(jù)完畢(結(jié)果 為 整數(shù)型,服務UUID 為 文本型,通道UUID 為 文本型,數(shù)據(jù) 為 字節(jié)型())
  如果 結(jié)果 = 1 則
      彈出提示("讀取數(shù)據(jù)成功: " & 通道UUID & "\n 數(shù)據(jù): " & 字節(jié)集到十六進制(數(shù)據(jù)))
否則
       彈出提示("讀取數(shù)據(jù)失。 " & 通道UUID & "\n 數(shù)據(jù): " & 字節(jié)集到十六進制(數(shù)據(jù)))
        結(jié)束 如果
結(jié)束 事件
事件 BLE藍牙1.通道數(shù)據(jù)改變(服務UUID 為 文本型,通道UUID 為 文本型,數(shù)據(jù) 為 字節(jié)型())
     彈出提示("通道數(shù)據(jù)改變" & 通道UUID & "\n 數(shù)據(jù): " & 字節(jié)集到十六進制(數(shù)據(jù)))
     接收框.加入文本(字節(jié)到文本(數(shù)據(jù),"GBK"))
結(jié)束 事件
事件 BLE藍牙1.寫入數(shù)據(jù)完畢(結(jié)果 為 整數(shù)型)
     如果 結(jié)果 = 1 則
        彈出提示("寫入數(shù)據(jù)成功")
     否則
      彈出提示("寫入數(shù)據(jù)失敗")
    結(jié)束 如果
結(jié)束 事件
事件 列表框1.表項被單擊(項目索引 為 整數(shù)型)
        設備地址 = 列表框1.取項目標記(項目索引)
    BLE藍牙1.連接設備(設備地址)
        'BLE 藍牙 1.連接設備(列表框 1.取項目標記(項目索引))
    彈出提示("正在連接")
    連接狀態(tài).標題 = "正在連接"
結(jié)束 事件
事件 上.被單擊()
        BLE藍牙1.寫入數(shù)據(jù)(服務UUID,通道UUID,文本到字節(jié)("上\n","GBK"))
結(jié)束 事件
事件 左.被單擊()
        BLE藍牙1.寫入數(shù)據(jù)(服務UUID,通道UUID,文本到字節(jié)("左\n","GBK"))
結(jié)束 事件
事件 右.被單擊()
        BLE藍牙1.寫入數(shù)據(jù)(服務UUID,通道UUID,文本到字節(jié)("右\n","GBK"))
結(jié)束 事件
事件 下.被單擊()
        BLE藍牙1.寫入數(shù)據(jù)(服務UUID,通道UUID,文本到字節(jié)("下\n","GBK"))
結(jié)束 事件
事件 讀取.被單擊()
        BLE藍牙1.讀取數(shù)據(jù)(服務UUID,通道UUID)
結(jié)束 事件
事件 清空.被單擊()
        接收框.內(nèi)容 = 空
結(jié)束 事件
事件 接收框.內(nèi)容被改變(新內(nèi)容 為 文本型)
      
結(jié)束 事件
事件 接收框.創(chuàng)建完畢()
        接收框.置多行模式(真)
結(jié)束 事件
事件 發(fā)送.被單擊()
        BLE藍牙1.寫入數(shù)據(jù)(服務UUID,通道UUID,文本到字節(jié)(發(fā)送框.內(nèi)容,"GBK"))
結(jié)束 事件
事件 斷開連接.被單擊()
        BLE藍牙1.斷開連接()
結(jié)束 事件

E4A編程界面

E4A編程界面
設計窗口1.png
設計窗口2.png
代碼窗口1.png
代碼窗口2.png

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表