J'ai un périphérique (nommé plus tard "scanner") et d'autres périphériques (nommé plus tard "pierre"). Le scanner peut scanner les pierres et afficher leurs informations sur l'affichage intégré. Scanner peut envoyer des informations sur les pierres via Bluetooth et je veux lire ces données et l'utiliser dans mon application. J'ai commencé l'implémentation de la connexion de code mais j'ai découvert un problème. Voici mon code:Pourquoi je ne reçois pas d'instance de périphérique jumelé via CoreBluetooth?
import UIKit
import CoreBluetooth
class BluetoothViewController: UIViewController {
var manager:CBCentralManager!
var peripheral:CBPeripheral!
override func viewDidLoad() {
super.viewDidLoad()
manager = CBCentralManager(delegate: self, queue: nil)
}
}
extension BluetoothViewController: CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOn {
central.scanForPeripherals(withServices: nil, options: nil)
}
else {
print("Bluetooth not available.")
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print("peripheral \(peripheral)")
print("rssi \(RSSI)")
print("advertisementData: \(advertisementData)")
print("--------")
}
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
print(peripheral)
}
func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
print(peripheral)
}
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
print(peripheral)
}
}
extension BluetoothViewController: CBPeripheralDelegate {
}
Le problème est scanner ne figure pas dans
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
et
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)
jamais appeler.
Notez que mon iPhone est connecté avec un scanner et un scanner, dites-moi que la connexion fonctionne.
Qu'est-ce que je veux réaliser?
Je veux créer viewcontroller qui vérifie si le scanner est connecté.
if connected then
get scan information
else
find device and connect
get scan information
Aidez-moi s'il vous plaît. :)
Modifier
Dans LightBlue Explorer app mon appareil de scanner ne semble pas. Mais avec ce app fonctionne parfaitement. Peut-être que l'utilisation de CoreBluetooth est un mauvais moyen de le faire. Qu'est-ce qui est mieux. Si les créateurs de l'application ci-dessus peuvent vous communiquer est une possibilité de le faire.
Votre appareil de numérisation fait-il la publicité d'un service BLE? Essayez l'application LightBlue depuis l'App Store. – Paulw11
@ Paulw11 Et si non? –
Vous devez vous connecter explicitement au périphérique dans 'didDiscoverPeripheral' pour que la méthode' didConnect' soit appelée. Vous ne savez pas pourquoi votre appareil n'est pas découvert. Quelles sont exactement ces "pierres"? – Mark