【发布时间】:2017-04-11 16:03:19
【问题描述】:
我正在尝试将十六进制数据从 IOS 发送到蓝牙外围设备。我有一个自定义的第 3 方键盘,以便一个名为 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];
}
现在当我将此表单称为键盘方法时,我会这样做
MRHex 键盘:
BTLECentralViewController* myScript = [[BTLECentralViewController alloc] init];
[myScript sendDataCMD];
我遇到的问题是:方法运行但没有向其发送数据的特征,因此变量没有被传递。
我相信是因为 MRHexKeyboard 类没有看到 BTLECentralViewController 中声明的子句??
@property (strong, nonatomic) CBCentralManager *centralManager;
@property (strong, nonatomic) CBPeripheral *discoveredPeripheral;
我如何让其他类可以访问它们??
我对 iOS 和 ObjectiveC 非常陌生。
【问题讨论】:
-
BTLECentralViewController* myScript = [[BTLECentralViewController alloc] init]。您正在创建一个全新的对象。 -
稍微扩展一下 Larme 的评论:属性在对象实例上,而不是在类上。新视图控制器的创建(alloc 和 init)将获得一个 nil centralManager 和 foundPeripheral 属性,除非您执行某些操作来配置这些属性。我不清楚你的期望。这是非常基本的面向对象的东西。
-
@CuriousRabit -> 谢谢,我认为我严重缺乏 OO 基础知识 -> 你知道我在哪里可以找到一些好的参考资料吗...?
-
@CuriousRabbit 在我的语言中,我希望将缺少的变量设置为全局变量,以便当我从不同的文件调用此函数时,它可以看到它们。即当我调用 sendDataCMD 时,提供 centralManager 和 foundPeripheral 可见
-
@ErykSokolowski - 一个来源是developer.apple.com/library/content/documentation/Cocoa/…
标签: ios objective-c class core-bluetooth instances