gpt4 book ai didi

swift : How to recover data from a Sensortag 2. 0 设备

转载 作者:行者123 更新时间:2023-11-30 10:50:15 26 4
gpt4 key购买 nike

我需要您的帮助来了解如何从 Sensortag 2.0 设备恢复数据。

我有以下信息:

  • 传输:BLE

  • 服务:f000fff0-0451-4000-b000-000000000000

  • 特征:f000fff1-0451-4000-b000-000000000000

  • 具有以下特征的通知:f000fff2-0451-4000-b000-000000000000

  • 启动命令:0x73或0x53

  • 结束命令:0x65 或 0x45

  • 1包20Byte

  • 第二个字节用作区分码。

我的测试:

为了帮助我理解,我使用这个源代码: https://github.com/degtiarev/DataCollector

1) 在 Device.swift 文件中,我添加了如下 UUID:

static let TestServiceUUID = "f000fff0-0451-4000-b000-000000000000"
static let TestCharacteristicsUUID = "f000fff1-0451-4000-b000-000000000000"
static let TestNotificationUUID = "f000fff1-0451-4000-b000-000000000000"

2)在 CollectingDataVC.swift 上,我更改了sensorTagName,如下所示:

let sensorTagName = "my-device"

3) 我添加了我的服务:

if let services = peripheral.services {
for service in services {
print("Discovered service \(service)")
// If we found movement service, discover the characteristics for those services.
if (service.uuid == CBUUID(string: Device.MovementServiceUUID)) ||
(service.uuid == CBUUID(string: Device.TestServiceUUID)) ||
(service.uuid == CBUUID(string: Device.IOServiceUUID)) || (service.uuid == CBUUID(string: Device.SimpleKeyUUID)) {
peripheral.discoverCharacteristics(nil, for: service)
}
}
}

4)我添加了特征:

for characteristic in characteristics {

// Test
if characteristic.uuid == CBUUID(string: Device.TestCharacteristicsUUID) {
movementCharacteristics[peripheral.identifier.uuidString] = characteristic
sensorTags[peripheral.identifier.uuidString]?.setNotifyValue(true, for: characteristic)
}

if characteristic.uuid == CBUUID(string: Device.TestNotificationUUID) {
movementCharacteristics[peripheral.identifier.uuidString] = characteristic
sensorTags[peripheral.identifier.uuidString]?.setNotifyValue(true, for: characteristic)
}

}

该程序可以正常工作,因为我的设备已连接,并且我的控制台上有以下信息:

SENSOR TAG FOUND! ADDING NOW!!!
**** SUCCESSFULLY CONNECTED TO SENSOR TAG!!!


======= SERVICES ========
▿ Optional([<CBService: 0x1c0677a40, isPrimary = YES, UUID = Device Information>, <CBService: 0x1c0678180, isPrimary = YES, UUID = F000FFF0-0451-4000-B000-000000000000>])
▿ some: 2 elements
- <CBService: 0x1c0677a40, isPrimary = YES, UUID = Device Information> #0
- super: CBAttribute
- super: NSObject
- <CBService: 0x1c0678180, isPrimary = YES, UUID = F000FFF0-0451-4000-B000-000000000000> #1
- super: CBAttribute
- super: NSObject
==========


Discovered service <CBService: 0x1c0677a40, isPrimary = YES, UUID = Device Information>
Discovered service <CBService: 0x1c0678180, isPrimary = YES, UUID = F000FFF0-0451-4000-B000-000000000000>


======= CHARACTERISTICS ========
▿ 2 elements
- <CBCharacteristic: 0x1c42a3c60, UUID = F000FFF1-0451-4000-B000-000000000000, properties = 0xA, value = (null), notifying = NO> #0
- super: CBAttribute
- super: NSObject
- <CBCharacteristic: 0x1c42a4320, UUID = F000FFF2-0451-4000-B000-000000000000, properties = 0x12, value = (null), notifying = NO> #1
- super: CBAttribute
- super: NSObject
==========

4)从这里开始,我不知道该怎么办。

我创建了一个“Hello World”:

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {

print("Hello World!")

}

但是这段代码永远不会被执行。这是我在 swift 上的第一个程序,所以我需要一些帮助来理解并知道我必须做什么。

最佳答案

我已经检查了您正在使用的项目,他们已经给出了有关方法使用以及何时调用的描述:

 Invoked when you retrieve a specified characteristic’s value,
or when the peripheral device notifies your app that the characteristic’s value has changed.

This method is invoked when your app calls the readValueForCharacteristic: method,
or when the peripheral notifies your app that the value of the characteristic for
which notifications and indications are enabled has changed.

If successful, the error parameter is nil.
If unsuccessful, the error parameter returns the cause of the failure.

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {

上面的方法是CBPeripheralDelegate的委托(delegate)方法,它是

optional public func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?)

关于 swift : How to recover data from a Sensortag 2. 0 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com