1

現在、Bluteoothサンプルを機能させようとしています。

このサンプルを参照として使用しています-http://developer.apple.com/library/mac/#samplecode/HeartRateMonitor/Listings/HeartRateMonitor_HeartRateMonitorAppDelegate_m.html#//apple_ref/doc/uid/DTS40011322-HeartRateMonitor_HeartRateMonitorAppDelegate_m-DontLinkElementID_4

デバイスでBluetoothが有効になっています。

私は次のようなコードを使用してみました:

_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

1 に答える 1

4

回答:MonoTouchでこれを乗り越えるには、別のコンストラクターを使用する必要がありました。

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

私がそれに切り替えたとき、それは働き始めました...

于 2012-12-01T14:13:56.487 に答える