У меня есть устройство (названное позже "сканер") и другие устройства (названное позже "камень"). Сканер может сканировать камни и отображать информацию о них на встроенном дисплее. Сканер может отправлять информацию о камнях через Bluetooth, и я хочу прочитать эти данные и использовать их в своем приложении. Я начал реализацию подключения кода, но обнаружил проблему. Вот мой код:
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 {
}
Проблема в том, что сканер не отображается в
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
а также
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)
никогда не звони.
Обратите внимание, что мой iPhone подключен к сканеру, и сканер сообщает мне, что соединение работает.
Чего я хочу добиться?
Я хочу создать контроллер просмотра, который проверяет, подключен ли сканер.
if connected then
get scan information
else
find device and connect
get scan information
Помогите мне, пожалуйста. :)
Редактировать
В приложении LightBlue Explorer мой сканер не не появляются. Но с этим приложение работает отлично.
Возможно, использование CoreBluetooth — неправильный способ сделать это. Что лучше. Если создатели вышеупомянутого приложения могут общаться, у вас есть возможность это сделать.
didDiscoverPeripheral
, чтобы вызвать методdidConnect
. Не знаю, почему ваше устройство не обнаруживается. Что это за камни? - person Mark   schedule 21.02.2017didDiscoverPeripheral
- person Kamil Harasimowicz   schedule 21.02.2017