操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    NEWBIT 藍牙連接編程測試

    該實驗是NEWBIT通過藍牙連接手機,利用手機端的APP為NEWBIT寫程序并實現燒錄,下屬實驗步驟已自測成功。

    1、下載手機端APP,手機登入MICROBIT 官網下載APP,安裝、打開;

    2、打開APP后的界面如下圖,主界面分成五大部分,a:設置,通過該按鈕對軟件進行基礎設置;b:連接(connect)用于連接NEWBIT;c:燒錄(Flash)用于燒寫代碼;d:創建(create code):創建新的項目;e:發現(Discover)用于開發學習。

    3、 上圖,點擊b:Connect;

    4、點擊黃色部分;

    5、上圖所示,按住A、B鍵不放,按下reset鍵1S中左右,松開reset后LED矩陣顯示pairing model,同時點擊屏幕NEXT,進入下一步;

    6、屏幕顯示如上圖,此時按照NEWBIT圖標在屏幕上輸入驗證碼;點擊pair;

    7、進入配對狀態,顯示配對成功,屏幕出現“√”符號,即配對成功;

    8、如在配對時出現錯誤,則會出現如上顯示;

    9、如上圖,配對成功后反回,顯示綠色圖標;配對成功后返回主界面,點擊新建代碼,如下圖創建新代碼;代碼的工具都是在線的,需要手機聯網,編寫完成后點擊下載,會以文件的形式下載到手機,因我用的是樂視手機,默認用自帶瀏覽器打開,但是自帶瀏覽器在下載時總是會閃退,所以使用的是Google瀏覽器;

    10、下載完成后回到APP主界面,點擊下載(flash),該軟件會自動識別手機內所以的hex文件,都顯示出來,找到自己編寫的文件下載即可,如下圖

    11、下載前要確認NEWBIT是否還在連接狀態,如果已經斷了(長時間不連會斷開)需要從新連接,NEWBIT需要重新進入連接狀態(A+B 按住,按reset進入配對,屏幕上則直接點擊連接器即可,無需連接新設備);下圖是下載過程

    燒寫過程背面的燒錄指示燈并不會閃爍,因為數據走的是藍牙通道;燒寫速度不是很快,燒寫完成會提示重新連接。

    以上就完成了一次完整的藍牙連接手機、手機編程、手機燒錄的整個過程。

    藍牙防丟profile

    1.TXP(txpower) Characteristic, 設備端需要通過主機控制接口HCI來獲得發射功率參數,并以read屬性提供給master。

    2.IAS(immediate alter service), write屬性,供master寫告警級別。當master寫入新的值時,設備端會收到write的回調,其根據告警級別進行相應告警。

    3. LLS(link loss service),write/read屬性,供master設置鏈路斷開情況下默認的告警級別。

    RSSI通過接收端的接口來獲得,并不需要設備端提供service。

    以上Characteristic都通過GATT profile提供服務,在藍牙通信協議上,每個Characteristic都會對應一個UUID。


    android藍牙BLE接口編程

    androidBLE接口在android4.3版本以上提供。

    1. 判斷當前系統是否支持BLE

    getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)

    返回真表示支持。

    2. 獲得藍牙適配器類

    用戶通過統一的藍牙適配器類BluetoothAdapter來使用BLE API。

    先獲得藍牙管理器:

    BluetoothManagerbluetoothManager=getSystemService(Context.BLUETOOTH_SERVICE);

    再獲得藍牙適配器實例(單體對象):

    BluetoothAdaptermBluetoothAdapter=bluetoothManager.getAdapter();

    3. 啟動手機藍牙硬件功能(相當于在設置界面開啟藍牙功能)

    mBluetoothAdapter.enable();

    4. 開始掃描

    BluetoothAdapter.startLeScan(android.bluetooth.BluetoothAdapter.LeScanCallbackcallback)

    callback是當掃描到藍牙設備時的回調接口。實現callback中的onLeScan接口:

    @Override

    public void onLeScan(finalBluetoothDevice device, int rssi, byte[] scanRecord)

    其中,device代表掃描到的設備,可以獲得其MAC地址、設備名等等;rssi即信號強度,這是未連接時獲取RSSI的方法;scanRecord代表掃描設備得到的響應參數,ibeacon即通過該參數來獲得廣播內容。

    假設String bluetoothAddress=device.getAddress(),獲取藍牙48位MAC地址

    5. 連接GATT,獲取設備端的UUID服務,并進行數據通信交互

    通過MAC地址獲得代表設備端的藍牙設備類

    BluetoothDevicedevice=mBluetoothAdapter.getRemoteDevice(bluetoothAddress);

    連接GATT

    BluetoothGatt mBluetoothGatt=device.connectGatt(android.content.Context context, booleanautoConnect, android.bluetooth.BluetoothGattCallback callback);

    Callback是連接GATT之后,所有數據交互的回調入口。分別包括:

    1)設備服務發現

    @Override

    publicvoid onServicesDiscovered(BluetoothGatt gatt, int status)

    mBluetoothGatt.getServices()代表設備服務集合,

    for (BluetoothGattService gattService : mBluetoothGatt.getServices())

    對于每個服務service,用getUuid()可以獲得服務的UUID,getCharacteristics()代表該服務的Characteristic集合。

    for(BluetoothGattCharacteristic gattCharacteristic : gattCharacteristics)

    對于每個Characteristic,getUuid()獲得UUID,getPermissions()獲得屬性權限,getValue()獲得屬性值。

    在該回調中我們只提取感興趣的三個Characteristic的UUID,對于其他的如電池、設備服務等UUID可以不管。

    gattCharacteristic_char5_TXP=gattCharacteristic;

    2)連接狀態改變

    @Override

    public voidonConnectionStateChange(BluetoothGatt gatt, int status,intnewState)

    有兩種狀態,BluetoothProfile.STATE_CONNECTED代表連接,BluetoothProfile.STATE_DISCONNECTED代表斷開連接。

    3)讀回調

    @Override

    public voidonCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristiccharacteristic, intstatus)

    其對應手機端發出讀請求后,當收到設備端的數據時的回調。如

    mBluetoothGatt.readCharacteristic(gattCharacteristic_char5_TXP)

    4)設備端數據變化回調

    這里對應設備的characteristic的屬性是notify或者indication,即相當手機端訂閱這個characteristic的值變更服務,當設備端的characteristic發生變化時,設備端會主動發出通知給手機端。

    @Override

    public voidonCharacteristicChanged(BluetoothGatt gatt,

    BluetoothGattCharacteristiccharacteristic)

    在回調中獲得新的值characteristic.getValue()。

    5)獲取到RSSI值的回調

    RSSI在掃描時可以通過掃描回調接口獲得,但是在連接之后要不斷地使用

    mBluetoothGatt.readRemoteRssi()向底層驅動發出讀取RSSI請求,當底層獲取到新的RSSI后會進行以下回調:

    @Override

    public voidonReadRemoteRssi(BluetoothGatt gatt, int rssi, int status)

    rssi即是新的信號強度值。

    連接后,由于手機和設備端的距離在發生變化,因此要不斷地讀取RSSI,實時計算兩者之間的距離才能保證防丟功能的實現。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有