2014年1月20日 星期一

BLE mini vs HM-10

花了兩天時間製作《AMIGO Controller 2.0》的藍牙部份。今次同時支援 BLE mini 及 HM-10。目標能同時操作八台機體,沒有使用 SDK,改為直接編寫自己的接口。搞了很久能成功連線,但仍未能存取數據。iOS 6 沒問題,iOS 7 卻出事。查看兩者的 SDK 都大同小異,明明方法用對了,但沒有效果。細心檢查才發現是 UUID 錯配了,同時留意到是「writeValue」時出問題:
NSData *chunk = [NSData dataWithBytes:byteArray+offset length:size];
if (characteristic.properties&CBCharacteristicPropertyWriteWithoutResponse)  {
    [peripheral writeValue:chunk forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse];
}  else  {
    [peripheral writeValue:chunk forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
}
iOS 6 不用分 With 還是 Without,iOS 7 卻要分開處理才能成事。最後 HM-10 在兩個 iOS 內都正常運作,收發自如;但 BLE mini 卻十分難搞,只能在 iOS 6 發出訊號,無發接收。一想到 BLE mini 價錢是 HM-10 的 7 倍,就很想完全放棄 BLE mini...。

沒有留言: