我們需要明白的是,ble的廣播是可以指定廣播信道的,廣播信道分别是37、38、39, 但TI的協定棧官方例程裡已經預設設定了在廣播階段 同時三個信道一起廣播,但是一旦跟主機連接配接上後,就隻在其中的一個信道傳輸資料,是以我們是要指定其中的一個信道的, 可惡的是, 這個連接配接上的信道也是随機的, 我們可以在抓取到連接配接包後, 填入發起者(即是主機)的位址和信道即可。
下面我們用 TI官方例程 SimpleBLEPeripheral 結合 cc2540 usb-dongle 和 SmartRF Packet Sniffer 軟體來實作資料包的抓取和讀寫
【1】首先要讓開發闆跑 SimpleBLEPeripheral , 這裡不是重點, 先不說哈。
【2】然後,把燒錄了“ sniffer_fw_cc2540_usb.hex” 固件的 usb-dongle插入到pc, 如果沒有安裝驅動, 是要安裝的驅動的, 但是如果你已經安裝了 SmartRF Packet Sniffer 軟體, 那麼驅動就已經預設安裝了。
【3】 運作 SmartRF Packet Sniffer 。如下圖:

上圖, 描述的是, 一旦主機和從機連接配接上後, 到
這一行, 抓包就不在顯示了, 這個時候, 如上填入位址, 并選好信道号, 然後再重新複位從機,主機重新連接配接,這個時候不一定 SmartRF Packet Sniffer 就能顯示到連接配接後的資料包, 如果不能連接配接上, 就試試 把 改成 38、 39等等, 多試試幾次, 就會出現下面圖了。(下圖表明抓取到了ble的資料包)
下面用lightblue進行一個char1的讀操作, lightblue讀取到了0x04.(lightblue是ios上很牛的一個軟體, 如果不知道, 可以先看看我先前的文章哈,
下面用lightblue進行一個char1的寫操作, lightblue寫入0x01.