#ios #swift #bluetooth-lowenergy #core-bluetooth
#iOS #swift #bluetooth-низкое энергопотребление #ядро-bluetooth
Вопрос:
Я пытаюсь понять, есть ли какой-либо порядок в том, как пакеты BLE отправляются с устройства iOS с использованием CoreBluetooth на подключенные периферийные устройства.
У меня есть два периферийных устройства, подключенных к устройству iOS, и они могут успешно выполнять запись в характеристику на обоих периферийных устройствах. Эта характеристика приводит к тому, что сигнал на периферийных устройствах становится высоким или низким.
Я включаю характеристики упорядоченным образом (A, затем B), а затем отключаю их в том же порядке.
toggleState(peripheral: primary, stateChar: g1StateChar, state: true)
toggleState(peripheral: secondary, stateChar: g2StateChar, state: true)
sleep(1)
toggleState(peripheral: primary, stateChar: g1StateChar, state: false)
toggleState(peripheral: secondary, stateChar: g2StateChar, state: false)
func toggleState(peripheral: CBPeripheral, stateChar: CBCharacteristic, state: Bool) {
var devState = "S"
//S for Stop, A for Active
if(state){
devState = "S"
} else {
devState = "A"
}
let newState = Data(devState.utf8)
//Transmit new State of System
peripheral.writeValue(newState, for: stateChar, type: CBCharacteristicWriteType.withResponse)
}
Что я ожидаю увидеть, так это сигнал, связанный с максимумом A, за которым следует сигнал, связанный с B, разделенный примерно 7,5 мс, поскольку периферийные устройства запрограммированы на использование интервала подключения в 7,5 мс.
На самом деле наблюдается то, что во многих случаях имеет место описанное выше, но в других случаях сигнал B сначала становится высоким, а через 22 мс — повышенным.