2017-04-11 3 views
0

IOSからBluetooth周辺機器に16進データを送信しようとしています。私はカスタマイズされたサードパーティのキーボードを持っているので、SENDというボタンがキーボードを消して、テキストフィールドからコントロールと呼ばれる指定された特性に情報を送信します。別のクラスのメソッドを呼び出すときに渡されない変数

私は2つのクラスがあります。

MRHexKeyboardBTLECentralViewController

送信機能は、私がBTLECentralViewController上に置かれ、ボタンを使用している場合は正常に動作しますが、私は、このキーボードからの送信機能を呼び出すに書き込む特性がないため、もはや機能しません。

BTLECentralViewControllerで

:私はキーボードのメソッドこのフォームを呼び出すとき

-(IBAction)sendCmdControl:(id)sender;{ 
    //When button is pressed send data 
    [self sendDataCMD]; 

} 

-(void)sendDataCMD{ 
    if (!_control) { 
     NSLog(@"No Characteristic to write to"); 
     return; 
    } 
    //sending commandToSend to characteristic 'control' 
    [self.discoveredPeripheral writeValue:commandToSend forCharacteristic:self.control type:CBCharacteristicWriteWithResponse]; 
} 

は今、私はこの

MRHexKeyboard行います

BTLECentralViewController* myScript = [[BTLECentralViewController alloc] init]; 
[myScript sendDataCMD]; 

私が午前の問題がある:メソッドが実行されますが、そこ変数が渡されていないようにデータを送信する特性はありません。

私は、MRHexKeyboardクラスがBTLECentralViewControllerで宣言されている句を参照していないので、私はそれを信じていますか?

@property (strong, nonatomic) CBCentralManager  *centralManager; 
@property (strong, nonatomic) CBPeripheral   *discoveredPeripheral; 

どうすれば他のクラスにアクセスできますか?

私はiOSとObjectiveCに非常にフレッシュです。

+2

'BTLECentralViewController * myScript = [[BTLECentralViewController alloc] init]'。あなたは全く新しいオブジェクトを作成しています。 – Larme

+0

Larmeのコメントを少し拡大する:プロパティはクラスではなくオブジェクトインスタンスにあります。新しいView Controllerの作成(alloc&init)は、それらのプロパティをプロビジョニングするために何かをしない限り、nil centralManagerおよびdiscoveredPeripheralプロパティを取得します。私はあなたが何を期待しているのかは不明です。これはかなり基本的なオブジェクト指向のものです。 – CuriousRabbit

+0

@CuriousRabit - >ありがとう、私は真剣にオブジェクト指向の基本が欠けていると思う - >これで良い参考資料がどこにあるのか知っていますか? –

答えて

0

あなたのコードを見ても分かるように、CBCentralManagerとCBPeripheralのシングルトンオブジェクトを作成することをお勧めします。そのため、ViewControllerを初期化するときにnilになることはありません。または、すべてのアクティビティを実行するBLEManagerシングルトンクラスを作成することもできます。

関連する問題