Модуль Bluetooth HM-10 не может взаимодействовать с моим приложением iOS - PullRequest
0 голосов
/ 20 февраля 2019

Я использую HM-10 с Arduino для отправки данных из приложения iOS в Arduino, проблема в том, что я могу подключиться из своего приложения к модулю Bluetooth, но не могу найти характеристики устройства.

Вопрос в том,что-то упущено, что настроить модуль Bluetooth, чтобы сделать эту услугу доступной или что я должен делать.

let BLEService = "DFB0"
let BLECharacteristic = "DFB1"
var mainCharacteristic:CBCharacteristic? = nil


func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {

    for service in peripheral.services! {

        print("Service found with UUID: " + service.uuid.uuidString)

        //device information service
        if (service.uuid.uuidString == "180A") {
            peripheral.discoverCharacteristics(nil, for: service)
        }

        //GAP (Generic Access Profile) for Device Name
        // This replaces the deprecated CBUUIDGenericAccessProfileString
        if (service.uuid.uuidString == "1800") {
            peripheral.discoverCharacteristics(nil, for: service)
        }

        //Bluno Service
        if (service.uuid.uuidString == BLEService) {
            peripheral.discoverCharacteristics(nil, for: service)
        }

    }
}

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {

    //get device name
    if (service.uuid.uuidString == "1800") {

        for characteristic in service.characteristics! {

            if (characteristic.uuid.uuidString == "2A00") {
                peripheral.readValue(for: characteristic)
                print("Found Device Name Characteristic")
            }

        }

    }

    if (service.uuid.uuidString == "180A") {

        for characteristic in service.characteristics! {

            if (characteristic.uuid.uuidString == "2A29") {
                peripheral.readValue(for: characteristic)
                print("Found a Device Manufacturer Name Characteristic")
            } else if (characteristic.uuid.uuidString == "2A23") {
                peripheral.readValue(for: characteristic)
                print("Found System ID")
            }

        }

    }

    if (service.uuid.uuidString == BLEService) {

        for characteristic in service.characteristics! {

            if (characteristic.uuid.uuidString == BLECharacteristic) {
                //we'll save the reference, we need it to write data
                mainCharacteristic = characteristic

                //Set Notify is useful to read incoming data async
                peripheral.setNotifyValue(true, for: characteristic)
                print("Found Bluno Data Characteristic")
            }

        }

    }

}

Примечание: я попробовал его с приложением общего назначения для Android из магазина приложений, и он работает правильно

...