Я пытаюсь подключиться к моему проекту Arduino, который использует модуль Spi BlueFruit BLE. У меня возникла проблема при попытке подключения с помощью моего приложения iOS. После того, как я нашел устройство, я пытаюсь подключиться к нему, но состояние застряло в «соединении» состояния = 1. Это мешает мне поиск услуг, и такие, потому что «подключен» состояние не достигнуто Вот это код надрез ...Bluetooth Периферийное устройство застряло в состоянии «Подключение» на iOS
//check state of the bluetooth on phone
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOff{
//TODO: ADD SAVE DATA TO REALM BEFORE DISSMISSING
errorView.isHidden = false
}
if central.state == .poweredOn{
errorView.isHidden = true
//scan for peripherals with the service i created
central.scanForPeripherals(withServices: nil, options: nil)
}
}
//devices found(should only be ours because we will create Unique serviceID)
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
// get advertisement data and check to make sure the name is matching. set it as the peripheral then make connection
if let peripheralName = advertisementData[CBAdvertisementDataLocalNameKey] as? String {
print("NEXT PERIPHERAL NAME: \(peripheralName)")
print("NEXT PERIPHERAL UUID: \(peripheral.identifier.uuidString)")
if peripheralName == nameID{
manager.stopScan()
self.peripheralHalo = peripheral
peripheralHalo!.delegate = self
manager.connect(peripheral, options: nil)
while(peripheralHalo?.state.rawValue == 1)
{
if(manager.retrieveConnectedPeripherals(withServices: [serviceID]).count > 0){
print("\(manager.retrieveConnectedPeripherals(withServices: [serviceID]))")
}
}
}
print("Connected!!")
}
Когда я называю manager.connect (периферические, опции: ноль), то периферийное пытается подключиться. Я добавляю следующий цикл while для тестирования и всегда показываю состояние как «соединение». Я пробовал приложение LightBlue iOS, и я могу правильно подключать и получать уведомления об изменениях значений признаков, поэтому прошивка Arduino должна быть хорошей. ПОЖАЛУЙСТА, ПОМОГИТЕ !!!
Спасибо, Пол. Я пробовал это без цикла while, и ни «didconnect», ни «didfailconnect» каждый вызов вызывали. – StoNeD510
Спасибо, Пол, который сделал это! Я думал, что все испробовал, часами на часах смотрел на него. Единственное, что я переключил из вашего опубликованного кода, это моя твердая ссылка на периферийное устройство, и установление делегата должно было быть сделано в didDiscover. Он продолжал сбрасывать соединение, иначе – StoNeD510
Да, я не был уверен в этом. Я просто написал код для тестирования. – Paulw11