背景
我和我的團隊曾經開發過一款基於藍牙連接的智能家居產品,但由於市場的原因,這個產品和項目已經停止了。最近,想用手上剩下的存貨做一些使用電腦與硬體連接應用實驗。
然後發現在電腦平臺下進行藍牙開發,遠遠沒有在 Andorid / iOS 上簡單。主要問題如下: - 藍牙硬體 我所使用的開發電腦並沒有藍牙,於是我在網上買了一個USB藍牙適配器,但收到貨以後,裝上後的確是免驅動的,可以傳文件,連接藍牙耳機,但卻不能和我的設備進行通訊。搜索了一下資料,發現 Window 自帶的藍牙開發比較複雜,對於沒 Window 開發經驗的我,Window 藍牙那套 Api 簡直天書一樣,到這裡是第一次放棄。 - Linux / MacOS 的 Gatttool 工具 後來有一段時間使用 Ubuntu 做開發。然後無意中發現那個 USB藍牙適配器在 Ubuntu 下也是免驅的,然而系統有一個
hcitool
的工具,可以比較輕鬆的完成與藍牙設備的搜索、連接、傳輸數據。並且使用
pygatt
庫可以完成我的大部分需求,但是,在 Window 下並沒有這個工具,而且,使用 Python 編寫 GUI 也不是太方便,使用 Web 作為 GUI,又涉及到部署,不方便轉移,到這裡,我完成了設備的指令代碼封裝就又一次擱淺了。 - noble 再三嘗試 Node.js 有一個庫叫 Electron,可以通過 JavaScript、HTML、CSS 比較簡單的構建跨平臺的桌面應用。所以想如果能用 Node.js 去完成這個需求,那也是不錯。於是就找到了 noble 這個庫。然而,這個庫在 Window 上也是沒能簡單的使用,卻在樹莓派上成功安裝了。這由回到了上面的問題,不能做成桌面應用,就不大方便了,於是再一次擱淺。
新進展
最近有新的需求,需要使用 Electron ,於是最近有研究一下 Node.js,然後又開始心癢癢去研究下這個 noble 庫。然後發現之前在 Window 平臺上安裝,並沒有按照它的介紹先去安裝依賴以及替換 USB 藍牙適配器的驅動,所以才會造成安裝失敗。
然後經過我仔細看說明,然後嘗試了一番,終於可以完成 noble 的安裝,以及能正常使用。以下是一個搜索的 Demo: