|
在51hei論壇里看見有好幾個用E4A做藍牙模塊與手機通訊的,下載看看,連藍牙都搜索不到,為此某為此特意獻上一款可用的E4A源碼以及51單片機源碼,特以此供諸位檢查及參考,制作多有隨意,還請諸位君不要見怪為是!
小車做得有點隨意,諸位君可不要介意
0.png (397.94 KB, 下載次數(shù): 163)
下載附件
2019-7-30 23:36 上傳
QQ截圖20190730225100.png (197.44 KB, 下載次數(shù): 166)
下載附件
2019-7-30 22:53 上傳
前言:此款藍牙APP為自己在別人的基礎(chǔ)上改進而來,主要特點是數(shù)據(jù)雙向傳輸,單片機端可實現(xiàn)手機控制PWM占空比大小,從而實現(xiàn)無極調(diào)速,前后左右等等操作,可以回傳單片機端的信號到手機上,只不過偶爾會丟字節(jié),會易安卓的可以多多琢磨。至于說單片機的硬件怎么連接這個就不再多說,可以參考代碼來實現(xiàn)硬件的連接!
藍牙設(shè)備顯示,搜索到自己的藍牙后,點擊即可連接。
有兩種模式切換,超聲波模式或藍牙模式,當(dāng)然無非就是單片機端怎么編程了!其實每一個按鈕都發(fā)送一串唯一的數(shù)據(jù),在此不累贅!
藍牙模塊可以回傳數(shù)據(jù)到App上,
只不過偶爾會丟字節(jié),這個不知為何,
若有大神,還請賜教!
//==========E4AAPK藍牙代===============================================================//
變量 分割數(shù)據(jù) 為 文本型
變量 啟動時間 為 長整數(shù)型
變量 模式 為 整數(shù)型
變量 前燈 為 整數(shù)型
事件 按鈕6.被單擊()
判斷 按鈕6.標(biāo)題
分支 "搜索設(shè)備"
列表框1.清空項目()
藍牙1.搜索設(shè)備() '搜索設(shè)備
彈出提示("正在搜索")
分支 "斷開連接"
藍牙1.斷開連接() '退出處理,釋放資源,結(jié)束內(nèi)部處理線程
豐富文本框1.內(nèi)容=""
編輯框1.內(nèi)容=""
編輯框2.內(nèi)容=""
速度調(diào)節(jié).位置=50
按鈕6.標(biāo)題="搜索設(shè)備"
結(jié)束 判斷
結(jié)束 事件
事件 主窗口.按下某鍵(鍵代碼 為 整數(shù)型,傳址 屏蔽 為 邏輯型)
如果 鍵代碼 = 返回鍵 則
如果 取啟動時間() - 啟動時間 >2000 則
彈出提示("再按一次退出程序")
啟動時間 = 取啟動時間()
否則
結(jié)束程序()
結(jié)束 如果
結(jié)束 如果
結(jié)束 事件
事件 主窗口.創(chuàng)建完畢()
列表框1.字體大小 = 6
標(biāo)簽1.背景顏色=無色
列表框1.背景顏色=綠色
模式=0
前燈=0
藍牙1.是否存在()
判斷 藍牙1.是否存在()
分支 假
彈出提示("沒有檢測到藍牙設(shè)備,程序?qū)㈥P(guān)閉")
結(jié)束程序()
分支 真
判斷 藍牙1.是否已開啟()
分支 假
藍牙1.開啟藍牙()
結(jié)束 判斷
結(jié)束 判斷
保存窗口("主窗口",本對象) '本對象是當(dāng)前窗口
保存窗口("窗口1",創(chuàng)建 窗口1)
結(jié)束 事件
事件 藍牙1.發(fā)現(xiàn)設(shè)備(設(shè)備名稱 為 文本型,設(shè)備地址 為 文本型,是否已配對 為 邏輯型)
列表框1.添加項目(設(shè)備名稱 & "/" & 設(shè)備地址 & "/" & 是否已配對)
結(jié)束 事件
事件 列表框1.表項被單擊(項目索引 為 整數(shù)型)
變量 設(shè)備信息 為 文本型
變量 文本數(shù)組 為 文本型()
變量 設(shè)備地址 為 文本型
設(shè)備信息 = 列表框1.取項目內(nèi)容(項目索引)
文本數(shù)組 = 分割文本(設(shè)備信息,"/")
設(shè)備地址 = 文本數(shù)組(1)
彈出提示(設(shè)備地址)
藍牙1.連接設(shè)備(設(shè)備地址) '連接設(shè)備 我看了有些例程是沒有的
彈出提示("正在連接")
藍牙1.停止搜索()
結(jié)束 事件
事件 藍牙1.連接完畢(連接結(jié)果 為 邏輯型,設(shè)備名稱 為 文本型,設(shè)備地址 為 文本型,連接模式 為 整數(shù)型)
變量 設(shè)備信息 為 文本型
變量 文本數(shù)組 為 文本型()
如果 連接結(jié)果 = 真 則
標(biāo)簽1.標(biāo)題 = "已連接:" & 設(shè)備名稱 & "-" & 設(shè)備地址
按鈕6.標(biāo)題="斷開連接"
彈出提示("連接成功")
否則
彈出提示("連接失敗")
標(biāo)簽1.標(biāo)題 = "已斷開"
按鈕6.標(biāo)題="搜索設(shè)備"
結(jié)束 如果
結(jié)束 事件
事件 藍牙1.藍牙設(shè)置完畢(設(shè)置結(jié)果 為 整數(shù)型)
判斷 設(shè)置結(jié)果
分支 1 '開啟藍牙
彈出提示("藍牙已開啟")
藍牙1.置可被發(fā)現(xiàn)() '置可被發(fā)現(xiàn)
分支 2 '不開啟藍牙
信息框("信息","藍牙未被開啟,程序?qū)⑼顺觯?quot;,"確定")
結(jié)束程序()
分支 3 '置可被發(fā)現(xiàn)
彈出提示("藍牙已設(shè)置為可被發(fā)現(xiàn)")
藍牙1.置工作模式(2) '藍牙聊天模式
分支 4 '不置可被發(fā)現(xiàn)
信息框("信息","藍牙未被設(shè)置為可被發(fā)現(xiàn),程序?qū)⑼顺觯?quot;,"確定")
結(jié)束程序()
結(jié)束 判斷
結(jié)束 事件
事件 按鈕1.被按下(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@lefth","GBK"))
結(jié)束 事件
事件 按鈕1.被彈起(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@stoph","GBK"))
結(jié)束 事件
事件 按鈕2.被按下(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@ahead","GBK"))
結(jié)束 事件
事件 按鈕2.被彈起(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@stoph","GBK"))
結(jié)束 事件
事件 按鈕3.被按下(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@right","GBK"))
結(jié)束 事件
事件 按鈕3.被彈起(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@stoph","GBK"))
結(jié)束 事件
事件 按鈕4.被按下(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@backh","GBK"))
結(jié)束 事件
事件 按鈕4.被彈起(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@stoph","GBK"))
結(jié)束 事件
事件 按鈕5.被單擊()
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@stoph","GBK"))
結(jié)束 事件
事件 按鈕7.被單擊()
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@sgetd","GBK"))
結(jié)束 事件
事件 按鈕9.被單擊()
判斷 前燈
分支 0
前燈=1
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@ligh1","GBK"))
按鈕9.標(biāo)題="前燈開"
分支 1
前燈=0
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@ligh0","GBK"))
按鈕9.標(biāo)題="前燈關(guān)"
結(jié)束 判斷
結(jié)束 事件
事件 按鈕10.被按下(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@load0","GBK"))
結(jié)束 事件
事件 按鈕10.被彈起(橫坐標(biāo) 為 整數(shù)型,縱坐標(biāo) 為 整數(shù)型)
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@load1","GBK"))
結(jié)束 事件
事件 按鈕8.被單擊()
判斷 模式
分支 0
按鈕8.標(biāo)題="藍牙模式"
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@mosh1","GBK"))
模式=1
分支 1
按鈕8.標(biāo)題="超聲波模式"
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@mosh0","GBK"))
模式=0
結(jié)束 判斷
結(jié)束 事件
事件 速度調(diào)節(jié).位置被改變(位置 為 整數(shù)型)
如果 位置>9 且 位置<100 則
藍牙1.發(fā)送數(shù)據(jù)(文本到字節(jié)("@spe"&整數(shù)到文本(位置),"GBK"))
結(jié)束 如果
結(jié)束 事件
事件 藍牙1.收到數(shù)據(jù)(數(shù)據(jù) 為 字節(jié)型(),設(shè)備名稱 為 文本型,設(shè)備地址 為 文本型)
變量 收到數(shù)據(jù) 為 文本型
分割數(shù)據(jù)=字節(jié)到文本(數(shù)據(jù),"GBK")
豐富文本框1.內(nèi)容 =豐富文本框1.內(nèi)容 & "\r\n " & 字節(jié)到文本(數(shù)據(jù),"GBK")
豐富文本框1.置光標(biāo)位置(取文本長度(豐富文本框1.內(nèi)容))
如果 尋找文本(分割數(shù)據(jù),"rp",0) >0 則
' 標(biāo)簽2.標(biāo)題=取文本中間(分割數(shù)據(jù),2 ,4) &"m/s"
' 結(jié)束 如果
' 如果 尋找文本(分割數(shù)據(jù),"dt",0) >= 0 則
' 標(biāo)簽3.標(biāo)題=取文本中間(分割數(shù)據(jù),2 ,4) &"cm"
如果 尋找文本(分割數(shù)據(jù),"dt",0) >0 則
編輯框1.內(nèi)容=取指定文本2(分割數(shù)據(jù),"dt","cm")
結(jié)束 如果
如果 尋找文本(分割數(shù)據(jù),"sp",0) >0 則
編輯框2.內(nèi)容=取指定文本2(分割數(shù)據(jù),"sp","ms")
結(jié)束 如果
'標(biāo)簽2.標(biāo)題="速度:"&分割數(shù)據(jù) &"m/s"
' 否則如果 尋找文本(分割數(shù)據(jù),"dt",0) >= 0 則
' 分割數(shù)據(jù)= 取文本右邊(分割數(shù)據(jù),3)
' 標(biāo)簽3.標(biāo)題="距離:"&分割數(shù)據(jù) &"cm"
結(jié)束 如果
'=====================以下是接收單片機發(fā)送過來的16進制HEX數(shù)據(jù)的方法=======================
' 變量 計次 為 整數(shù)型
' 判斷循環(huán)首 計次 < 取數(shù)組成員數(shù)(數(shù)據(jù))
' 編輯框1.內(nèi)容 = 編輯框1.內(nèi)容 & " " & 到十六進制(數(shù)據(jù)(計次))
' 計次 = 計次 + 1
' 判斷循環(huán)尾
結(jié)束 事件
'事件 編輯框1.內(nèi)容被改變(新內(nèi)容 為 文本型)
'
'結(jié)束 事件
事件 豐富文本框1.內(nèi)容被改變(新內(nèi)容 為 文本型)
結(jié)束 事件
事件 標(biāo)簽1.被單擊()
結(jié)束 事件
事件 標(biāo)簽2.被單擊()
結(jié)束 事件
事件 按鈕11.被單擊()
如果 讀取窗口("窗口1")=空 則
保存窗口("窗口1",創(chuàng)建 窗口1)
結(jié)束 如果
切換窗口(讀取窗口("窗口1"))
結(jié)束 事件
0.png (13.67 KB, 下載次數(shù): 147)
下載附件
2019-7-30 23:34 上傳
0.png (8 KB, 下載次數(shù): 170)
下載附件
2019-7-30 23:34 上傳
全部資料51hei下載地址:
藍牙小車apk、51單片機源代碼.rar
(1.24 MB, 下載次數(shù): 568)
2019-7-30 22:41 上傳
點擊文件名下載附件
E4A藍牙單片機小車源碼 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|