我正在尝试创建一个结构类似于初始ios-sample应用程序的iOS应用程序,不同之处在于,我使用了据说存储在API的Meas / ECG中的ECG数据。通过镜像示例应用程序中的其他观察函数中的代码(所有这些函数本身都能正常工作)并查看似乎实现了类似功能的iOS MQTT应用程序,我能够创建此处理程序类。 / p>
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后,似乎该应用程序遇到了相同的错误。
edit 2:找出问题所在,答案如下。
答案 0 :(得分:1)
显然,像Magn和Acc一样,心电图与HR不同,需要在路径中包含采样率才能返回数据。我通过将API路径从Meas / ECG更改为Meas / ECG / 125来解决了此问题,其中125为Android应用程序使用的默认采样率。