0

我对 iOS 编码并不陌生,但对 iOS 中的 BLE 非常陌生。

我已在主视图控制器中成功编写代码以访问和写入 BLE 设备。所以所有外围设备和管理器的东西都经过测试。

我的应用程序将获取 BLE 设备列表,连接到它们以获取序列号,断开与它们的连接,然后将它们放入 tableView 中。当用户选择一个时,我需要转到另一个视图并重新连接。我想编写另一个类作为连接到外围设备的实用程序,我成功地将其传递给实用程序并在实用程序中对其进行读写。外围设备状态已连接。

每次我尝试写入外围设备时,我的代码都会崩溃。然而,外设报告数据已写入。

因此,为了找出问题所在,我开始尝试读取具有相同结果的外围设备,崩溃。

我在实用程序中启动了一个新的管理器,并且没有在那里调用 centralManagerDidUpdateState。我也试过了,没有经理认为如果我知道外围设备,它就可以工作。

那么,如何让 centralManager 在新课程中工作?你必须以某种方式阻止主班的经理吗?

- (void)getPeripheralStatus:(CBPeripheral *)peripheral{

device_Info_UUID = [CBUUID UUIDWithString:kDevice_Info_SID];
security_UUID = [CBUUID UUIDWithString:kSecurity_SID];
status_UUID = [CBUUID UUIDWithString:kStatus_SID];
device_ID_char_UUID =[CBUUID UUIDWithString:kSecurity_char_DeviceID];

SHA256in = [[NSMutableString alloc]initWithString:lockMasterKey];

mgr = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

peripheral.delegate = self;
[self.mgr connectPeripheral:peripheral options:nil];

这是在主控制器中有效的线路,但在我的实用程序中无效。

 [self.lock writeValue:myID forCharacteristic:charac type:CBCharacteristicWriteWithResponse];

谢谢!

4

1 回答 1

-1

我不确定将外围设备传递给其他视图控制器是一个“好主意”,除非您不需要对外围设备进行进一步更新。如果您想在多视图控制器中使用“新鲜”外围设备,我建议使用单例设计,这样您就可以一次处理所有代表并减少冗余代码。

我找到的示例代码。 https://github.com/kickingvegas/YmsCoreBluetooth

于 2016-05-16T03:10:48.547 回答