【发布时间】:2019-02-18 09:29:25
【问题描述】:
我需要您的帮助来了解如何从 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 上的第一个程序,所以我需要一些帮助来理解和知道我必须做什么。
【问题讨论】:
标签: swift