2012-12-01 22 views
1

在藍牙核心「CBConcreteCentralManager沒有通電」目前試圖獲得Bluteooth樣品的工作。解決的MonoTouch

我使用這個樣本作爲參考 - http://developer.apple.com/library/mac/#samplecode/HeartRateMonitor/Listings/HeartRateMonitor_HeartRateMonitorAppDelegate_m.html#//apple_ref/doc/uid/DTS40011322-HeartRateMonitor_HeartRateMonitorAppDelegate_m-DontLinkElementID_4

藍牙設備上啓用。

我使用像代碼嘗試:

_manager = new CBCentralManager(); 
_manager.DiscoveredPeripheral += HandleDiscoveredPeripheral; 
_manager.ConnectedPeripheral += HandleConnectedPeripheral; 
_manager.DisconnectedPeripheral += HandleDisconnectedPeripheral; 

,我已經試着寫我自己的代表從CBCentralManagerDelegate

繼承,但是當我打電話StartScan

void StartScan() 
    { 
     var spp = Guid.Parse("00001101-0000-1000-8000-00805f9b34fb"); 
     _manager.ScanForPeripherals(new [] { spp }, null); 
    } 

然後我看到錯誤:

bluetooth1[1210:907] CoreBluetooth[WARNING] <CBConcreteCentralManager: 0x9beea0> is not powered on 

環顧這個錯誤我發現只是一對夫婦的點擊:

但這些都不是特別有幫助......

我試着延遲開始,直至狀態改變:

void HandleUpdatedState (object sender, EventArgs e) 
    { 
     // more to do here.... 
     Console.WriteLine("State updated " + e.ToString()); 

     switch (_manager.State) { 
     case CBCentralManagerState.PoweredOn: 
      _manager.DiscoveredPeripheral += HandleDiscoveredPeripheral; 
      _manager.ConnectedPeripheral += HandleConnectedPeripheral; 
      _manager.DisconnectedPeripheral += HandleDisconnectedPeripheral; 
      StartScan(); 
      break;   
     case CBCentralManagerState.Unauthorized: 
      break;   
     } 
    } 
  • 但這似乎永遠不會被調用。

我也試着運行Xcode的樣品,但力不在我今天......

任何人有什麼CBConcreteCentralManager任何想法:0x9beea0上沒有手段供電,該如何解決呢這裏?

回答

4

答:爲了突破這個在MonoTouch的,我不得不使用不同的構造函數:

CBCentralManager(_delegate, MonoTouch.CoreFoundation.DispatchQueue.CurrentQueue) 

當我切換到它開始工作......

+1

你說得對。綁定生成器創建默認的構造函數(除非被告知不),Apple的文檔可能'init'ed缺少一點。本週我發現了CoreBluetooth extra ttors(因爲它們在使用OSX的處置時崩潰),並且在接下來的MT版本中它們將被標記爲「[Obsolete]」。 – poupou

+0

謝謝:)我的其他發現在http://forums.xamarin.com/discussion/476/corebluetooth-spp-sample#latest-感覺像.Net Guid到CBUUID翻譯的問題。我仍然無法與我的sphero工作聯繫 - 不確定爲什麼Sphero文檔也有點缺乏!如果你想討論,那麼看到你在那個論壇上的線程(StackOverflow的評論不是很好的聊天!) – Stuart

+0

我認爲問題是.Net無法區分Guid null數組和CBUUID null數組,你必須指定類型。我剛使用「新的CBUUID [] {}」,它的工作原理.. – Rogier

相關問題