Ich habe BLE berührt, daher werde ich es als Memorandum zusammenfassen.
Das ist anders für diejenigen, die es gesehen haben, oder? Wenn es so etwas gibt, weisen Sie bitte darauf hin.
iOS 13.3 xcode 11.5 swift 5.2.4
Der offizielle Name lautet ** Bluetooth Low Energy **, ein Standard, der sich auf geringen Stromverbrauch und niedrige Kosten spezialisiert hat. Es gibt viele Änderungen gegenüber dem vorherigen Standard (Bluetooth Classic) und es ist nicht kompatibel. (Aber es scheint eine Dual-Mode-Technologie von BLE und Bluetooth classic zu geben?)
BLE verfügt über die folgenden Funktionen.
--Energieeffizient
Spielt eine Rolle bei der Steuerung der Kommunikation Beispiel) iPhone, PC usw.
Es verfügt nicht über eine Kommunikationssteuerungsfunktion, da es als Antwort auf die Anforderung von Central kommuniziert.
Beispiel) Leuchtfeuer
--Service: Existiert immer im Peripheriegerät und repräsentiert eine Funktionseinheit --Characteristic: Enthält Daten, die tatsächlich ausgetauscht werden
Peripheral sendet regelmäßig Informationen über sich selbst durch unidirektionale Kommunikation (Broadcast-Kommunikation), damit Central sich selbst erkennen kann.
RSSI(Received signal strength indication) Numerischer Wert (relativer Wert), der die Stärke des empfangenen Signals angibt, das in den Empfängereingang eintritt
Es wird in ca. 3 Schritten angeschlossen.
** 1. Peripheriegerät sendet Werbung ** ** 2. Central empfängt die Werbung und sendet eine Verbindungsanfrage ** ** 3. Verbindung hergestellt **
Als Verfahren können Sie einfach eine Verbindung herstellen.
Importieren Sie das Framework "Core Bluetooth".
import CoreBluetooth
Definieren Sie dann die diesmal erforderlichen Instanzvariablen (Mitgliedsvariablen).
var centralManager: CBCentralManager!
var peripheral: CBPeripheral!
Erstellen Sie eine Instanz, die dieses Mal hauptsächlich verwendet werden soll.
self.centralManager = CBCentralManager(delegate: self, queue: nil, options: nil)
Verwenden Sie die soeben erstellte Instanz, um nach Peripheriegeräten zu suchen.
self.centralManager.scanForPeripherals(withServices: nil, options: nil)
Sie können auch eine UUID angeben, um nur bestimmte Peripheriegeräte zu scannen.
let services = [CBUUID(string: "○○○")]
self.centralManager.scanForPeripherals(withServices: services, options: nil)
Wenn ein Peripheriegerät durch Scannen von 4 Peripheriegeräten gefunden wird, wird auch die folgende Delegatenmethode aufgerufen. Die erste Zeile in dieser Funktion stellt eine Verbindung zum gefundenen Peripheriegerät her. Da wir einen Delegaten für dieses Peripheriegerät angeben möchten, weisen Sie ihn der zuvor definierten Instanzvariablen zu.
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any], rssi RSSI: NSNumber) {
self.centralManager.connect(peripheral, options: nil)
self.peripheral = peripheral
}
Wenn Sie in 5 eine Verbindung zum Peripheriegerät herstellen, wird die folgende Delegatenmethode aufgerufen. Die erste Zeile in dieser Funktion gibt den Delegaten an. Holen Sie sich dann den Dienst in die zweite Zeile der Funktion.
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
self.peripheral.delegate = self
self.peripheral.discoverServices(nil)
}
Wenn der Dienst in 6 erworben wird, wird die folgende Delegatenmethode aufgerufen. Die erste Zeile in der Funktion erhält die Charakteristik.
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
self.peripheral.discoverCharacteristics(nil, for: (peripheral.services?.first)!)
}
Dieses Mal habe ich "Wie man mit BLE mit Swift umgeht" als Memorandum zusammengefasst. Ich denke, es gibt noch einige Teile, die fehlen, falsch und unzureichend im Verständnis sind, deshalb möchte ich entsprechende Korrekturen vornehmen.
import UIKit
import CoreBluetooth
class ViewController: UIViewController{
var centralManager: CBCentralManager!
var peripheral: CBPeripheral!
override func viewDidLoad() {
super.viewDidLoad()
self.centralManager = CBCentralManager(delegate: self, queue: nil, options: nil)
}
//Starten Sie den Scanvorgang per Knopfdruck
@IBAction func scanButton(_ sender: Any) {
self.centralManager.scanForPeripherals(withServices: nil, options: nil)
}
}
extension ViewController: CBCentralManagerDelegate {
//Gibt den BLE-Status zurück
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state {
case CBManagerState.poweredOn:
print("Die Stromversorgung ist eingeschaltet.")
case CBManagerState.poweredOff {
print("Die Stromversorgung ist ausgeschaltet.")
default:
break
}
}
//Wird nach dem Scannen aufgerufen
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any], rssi RSSI: NSNumber) {
self.centralManager.connect(peripheral, options: nil)
self.peripheral = peripheral
self.centralManager.stopScan() //Stoppen Sie den Scanvorgang
}
//Wird beim Verbinden aufgerufen
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
self.peripheral.delegate = self
self.peripheral.discoverServices(nil)
}
}
extension ViewController: CBPeripheralDelegate {
//Wird beim Service angerufen
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
self.peripheral.discoverCharacteristics(nil, for: (peripheral.services?.first)!)
}
//Wird beim Erwerb von Merkmalen aufgerufen
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
}
}
・ Erste BLE / Marubun Co., Ltd. ・ Versuchen Sie, ein BLE-Beispiel unter iOS Swift auszuführen