上一篇寫了嘗鮮1.6元的藍牙芯片KT6368A,還沒完,今天的主題是實現(xiàn)手機端的測試軟件。手機端大家通常會用LightBlue或者Nordic的nRF Connect軟件做測試,但是作為干嵌入式的攻城獅,我相信肯定有不少人會有興趣想自己弄一個可以修改的軟件,難不成今天要介紹安卓編程了嗎?不,因為我不會!我覺得也沒必要專門為了這個去學安卓,畢竟我們也不是專門從事安卓開發(fā)的。有一種方法可以搞定,那就是使用QT,大家知道QT可以跨平臺運行,并且用的也是嵌入式工程師熟悉的C 語言,所以可以用QT整一個在安卓系統(tǒng)里運行的藍牙軟件。
下面介紹實現(xiàn)方法:
第一步:QT安卓開發(fā)環(huán)境搭建
我用的QT 5.13,具體環(huán)境搭建大家可以參考:https://blog.csdn.net/tanglei1224/article/details/104820485
搭建完安卓環(huán)境,如果想編譯安卓平臺的程序,編譯的時候只選擇如下Kit就可以,其它都不用變
如果手機通過USB連接電腦的話,點擊運行,手機端就會提示你安裝應用程序。當然也可以把編譯后生成的apk放到手機里安裝,編譯生成的apk在如下目錄:
第二步:找QT 安卓BLE程序
我喜歡用前人造好的輪子,在網(wǎng)上找到了這篇文章:https://blog.csdn.net/rsd102/article/details/112453131 ,恰巧還認識該作者小哈哥,我把他的公眾號原文也放到這里:Qt編程實例:基于Android的BLE通信軟件,文中有代碼的解釋,感謝小哈哥的分享,讓我很快實現(xiàn)了自己的想法。
為了證明我也干了一點事情,我實際上做了幾處小小的改動:
1. 修改UUID
。因為原作者用的藍牙模塊和我不一樣,不改動是沒法正常使用的。
static const QLatin1String serviceUuid(
"{00010203-0405-0607-0809-0a0b0c0d1910}");
改為:
static const quint16 serviceUuid = (quint16)0xfff0;
KTA6368A默認是16位UUID 0xFFF0,這個在芯片的使用手冊里有說明
-
增加了發(fā)送區(qū),可以發(fā)送自己手動輸入的內(nèi)容。原來例程是點擊發(fā)送,發(fā)送一個Hello World。
-
增加了接收區(qū),將接收區(qū)和日志輸出區(qū)分開了。原來例程是一起的。
-
把原作者的廣告信息換成了新的廣告信息,這個是重點。
第三步:實際測試
-
手機安裝完之后,打開APP,自動搜索周圍的藍牙,顯示在藍牙列表里
-
點擊需要連接的KTA6368A對應的藍牙,點擊連接按鈕
連接成功后,日志如下
不知道為什么,我經(jīng)常需要點擊兩次連接按鈕才能連接成功,后面再研究研究是什么原因。
-
測試手機發(fā)送數(shù)據(jù)給KTA6368A
-
測試KTA6368A發(fā)送數(shù)據(jù)給手機
這樣就初步實現(xiàn)了我們的目標,以后也可以出去吹牛自己也是可以開發(fā)安卓程序的人了。
當然這個QT程序還有很多可以改進的地方,比如UI的美化、和不同尺寸手機的適配、更加豐富的功能等,感興趣的朋友可以拿源代碼自由發(fā)揮,需要修改后源代碼的可以在文章下方留言。
今天就到這里,下篇文章再見。