2016-01-22 4 views
7

私はここでフォーラムで多くの記事を読んでいます。しかし、私はまだ私が探していた明快さを持っていません。2つのBLEペリフェラルの接続にはどのような流れがありますか?

2つのCBPeripheralsに接続し、両方にデータを書きたいとします。私が読んだことから、私は、第2のデバイスに接続する前に、現在の周辺機器を切断する必要があるという考えを持っています。さて、私が周辺機器の1つにコマンドを書き込んで、もう1つのコマンドを別のコマンドに書きたいとしたら、現在の周辺機器から切断する必要がありますか?私がもう一方に接続するために切断した場合、前のコマンドはまだ有効ですか?このためのベストプラクティスはiOSで何ですか?

+0

接続を切断する必要はありませんので、私は、同時に2つのBLEデバイスで働いていたの最大数についていずれかから – OlDor

答えて

2

私のブルートゥースの友人は、まず両方のメッセージを送信したい場合は、現在の周辺機器を切断して別のものと接続する必要はありません。しかし、多くのアプリケーションでは、接続されているデバイス(CBPeripheral)の数が5〜10個に制限されています。これは5〜10個の接続デバイスが自発的に失われる可能性があるためです。たとえば:

[[RKCentralManager sharedManager] scanForPeripheralsWithServices:nil options:@{CBCentralManagerScanOptionAllowDuplicatesKey:@NO} onUpdated:^(RKPeripheral *peripheral) 
{ 
    //first of all u should start a scan 

    [[RKCentralManager sharedManager] connectPeripheral: peripheral options:nil onFinished:^(RKPeripheral * connectedperipheral, NSError *error) 
    { 
     //after u can connect to Peripheral immediately 

     [connectedperipheral discoverServices:nil onFinish:^(NSError *error) 
     { 
      // services - a collection of data and associated behaviors for accomplishing a function or feature of a device 

       [connectedperipheral discoverCharacteristics:nil forService: [connectedperipheral.services lastObject] onFinish:^(CBService *service, NSError *error) 
       { 
       //after u should take a characteristic - Represents a service's characteristic 
       CBCharacteristic * characteristic = service.characteristics[0]; 

       //and at last u can write value in characteristic in which you are going to write down something 
       NSData * data = [NSData dataWithHexString: newstring]; 
       CBCharacteristicWriteType type = CBCharacteristicWriteWithoutResponse; 
       [connectedperipheral writeValue:data forCharacteristic:characteristic type:type onFinish:nil]; 

       }]; 

     }]; 

    }]; 

}]; 

Bluetoothデバイスのためのメッセージを送るのおおよそのスキームは、メソッドの投資を行うことは必須ではない、彼らはアクションに配布することができます。

は、Uを正しく使用すると、CBCentralManagerの仕事であるため、接続とデータを複数のデバイスに送信する心配はありません。

CBCentralManagerオブジェクトは、検出されたまたは接続されたリモート周辺デバイス(CBPeripheralオブジェクトによって表される)を管理するために使用され、広告周辺機器のスキャン、検出、および接続を含みます。

いくつかのデバイスに一度に接続してメッセージを送信することができ、すべて正常です。 質問がある場合は、回答を試みます。

これは、uが良い例を見ることができているか、その作業:https://github.com/ruiking/ble

デバイスhttps://stackoverflow.com/a/17282862/4912496

+0

答えの兄弟のおかげで!私はライブラリを使用しないことを望んでいますが、それはアプリに別のレイヤーを追加するためです。ネイティブ関数を正しく管理する方法が必要ですか? – Jobs

+0

@Jobs https://github.com/ruiking/bleこれは図書館ではなく、単純なプロジェクトでタグをいくつかの意思決定に使うことができます。私はBLEであなたに幸運を祈ります。その中に。 –

+0

大丈夫、もっと徹底的に調べましょう! BLEは、いったんあなたがそれをぶら下げると、一枚のケーキです。それまで、しかし、歓声!私が解決できない問題に遭遇すれば、私はあなたを打つだろう。 – Jobs

関連する問題