我正在尝试创建一个iOS应用程序,其结构与最初的iOS示例应用程序相似,不同之处在于我提取的ECG数据据说存储在API中的Meas/ECG中。我可以通过镜像示例应用程序中其他观察函数中的代码(这些函数都可以完全独立工作)和查看似乎实现了类似功能的iOS MQTT应用程序来创建这个处理程序类:
class EcgHandler : BaseSubscriptionHandler {
private var values = Array<Int16>()
private var newValue : (Double) -> () = { (value) in }
init(viewController: SubscriptionDetailViewController, toggle: UISwitch,
serial: String, newValueReceiver: @escaping (Double) -> ()) {
super.init(viewController: viewController, toggle: toggle, serial: serial, title: "ECG", filePrefix: "ecg", path: "/Meas/ECG", infoPath: "/Meas/ECG/Info")
self.newValue = newValueReceiver
}
public func subscribe() {
self.toggle.isOn = true
self.dataFile = SubDataFile(self.filePrefix, serial: self.serial)
self.viewController.movesense?.subscribe(self.serial, path: self.path,
parameters: [:],
onNotify: { response in
self.handleData(response)
},
onError: { (_, path, message) in
self.showError("\(path) \(message)")
self.toggle.isOn = false
self.dataFile?.write("Error \(message)")
})
}
private func handleData(_ response: MovesenseResponse) {
let json = JSON(parseJSON: response.content)
if json["Samples"][0].number != nil {
print("{\"Ecg\":\(json["Samples"])}")
}
}
}
但是当我运行ecgHandler.subcribe()函数时,会得到错误:
Meas/ECG NOT_FOUND
这里出什么事了?我查看了Movesense开发人员文档,没有发现类似的问题,也查看了ios mqtt代码,没有发现任何其他大的差异。在订阅控制器文件之外的项目代码中,似乎没有提到“ecg”。
编辑:在用我的设备运行mqtt之后,这个应用程序似乎遇到了同样的错误。
编辑2:找出问题所在,答案如下。
最佳答案
显然,心电图,像Magn和Acc,但不同于HR,需要在路径中包含采样率才能返回数据。我通过将API路径从Meas/ECG更改为Meas/ECG/125解决了这个问题,125是android应用程序使用的默认采样率。
关于ios - 在Movesense iOS中进行Meas/ECG NOT_FOUND,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51426472/