2017-04-11 76 views
0

我可能試圖從IOS發送十六進制數據到藍牙外設。我有一個我自定義的第三方鍵盤,以便一個名爲SEND的按鈕可以消除鍵盤並將信息從文本字段發送到稱爲控制的指定特徵。調用另一個類的方法,不通過的變量

我有兩個類:

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的評論有點:屬性在對象實例上,而不是類。一個新視圖控制器的創建(alloc&init)將獲得一個零中央管理器和發現的外圍屬性,除非您執行某些操作來調配這些屬性。我不清楚你的期望。這是非常基本的面向對象的東西。 – CuriousRabbit

+0

@CuriousRabit - >謝謝,我想我嚴重缺乏OO基礎知識 - >你知道我在哪裏可以找到這方面的一些很好的參考材料......? –

回答

0

通過查看您的代碼,我可以建議創建一個CBCentralManager和CBPeripheral的單例對象,所以在初始化ViewController時它不會爲零。或者你可以創建一個BLEManager單例類來執行所有的活動。