我对 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];
谢谢!