我试图将IOS中的十六进制数据发送到蓝牙外设。我有一个第三方键盘,我自定义,以便一个名为SEND的按钮消除键盘,并将信息从文本字段发送到指定的称为控制的特征。
我有两个班级:
MRHexKeyboard 和 BTLECentralViewController
如果我使用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非常新鲜。
答案 0 :(得分:0)
通过查看代码,我可以建议创建一个CBCentralManager和CBPeripheral的单例对象,因此在初始化ViewController时它不会是nil。或者您可以创建一个BLEManager单例类来执行所有活动。