Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SWIFT 3从iOS应用程序中的测量特征UUID:2A9D和BLE WS获取实际测量值?_Ios_Swift3 - Fatal编程技术网

如何使用SWIFT 3从iOS应用程序中的测量特征UUID:2A9D和BLE WS获取实际测量值?

如何使用SWIFT 3从iOS应用程序中的测量特征UUID:2A9D和BLE WS获取实际测量值?,ios,swift3,Ios,Swift3,我正在尝试使用swift在iOS应用程序中同步测量特征UUID的实际测量值和ABLE体重秤型号:A&D_UC-352BLE_011E17。应用程序正在从BLE WS读取测量特征UUID和10字节值,但当它试图从NSData读取实际测量值时,它正在同步并在应用程序中显示错误值,例如,对于实际重量59.2 KG,应用程序获得的值为11860.0 我已经实现了配对和同步来自BLE WS的数据所需的所有相关方法,最有可能的是该应用程序还从BLE WS获得了体重秤测量服务UUID:181D和测量特征UUI

我正在尝试使用swift在iOS应用程序中同步测量特征UUID的实际测量值和ABLE体重秤型号:A&D_UC-352BLE_011E17。应用程序正在从BLE WS读取测量特征UUID和10字节值,但当它试图从NSData读取实际测量值时,它正在同步并在应用程序中显示错误值,例如,对于实际重量59.2 KG,应用程序获得的值为11860.0

我已经实现了配对和同步来自BLE WS的数据所需的所有相关方法,最有可能的是该应用程序还从BLE WS获得了体重秤测量服务UUID:181D和测量特征UUID:2A9D,因为我在Xcode调试控制台中看到了这些值

在这种情况下,我认为主要问题在于读取/转换测量特性UUID值到double类型的实际测量值。我的didUpdateCharacteristicValue方法如下所示,请建议我如何从测量特性UUID获得实际测量值

func didUpdateCharacteristicValue(_ characteristic: CBCharacteristic){
communicating = true

    let charUUID = ANDWeightScaleBTManager.measurementWeightCharacteristicUUID

    print("did update value for characteristic")

    print("charUUID:", charUUID)

    print("charValue is", characteristic.value!)

    print("value is:" + (characteristic.value?.base64EncodedString())!)

    if (charUUID == ANDWeightScaleBTManager.measurementWeightCharacteristicUUID) 

    {
        NSLog("Got Weight Scale Measurement char")

        var weightData: NSData

        weightData = characteristic.value! as NSData

        //var data: NSData

        //weightData = NSData.init(data: characteristic.value!)//if (bpmData.length <= 12) {

        let flag = weightData.subdata(with: NSRange.init(location: 0, length: 1))

        let unit : UInt16 = readInteger(data: weightData, start: 0)

        let weight : UInt16 = readInteger(data: weightData, start: 1)

        print("weight: \(weight)")//print the output

        var message: String

        var image: UIImage

        var data = [MeasurementType: Double]()

        message = "Completed measurement."

        image = UIImage(named: "Success")!

        data = [.weight: Double(weight)]

        shouldEnd = true

        update(data, message, image, shouldEnd)

    } 
}
func didUpdateCharacteristicValue(uCharacteristic:CBCharacteristic){
通信=真
设charUUID=和weightscalebtmanager.measurementWeghtCharacteristicuuid
打印(“已更新特征值”)
打印(“charUUID:,charUUID”)
打印(“charValue is”,characteristic.value!)
打印(“值为:+(characteristic.value?.base64EncodedString())!)
if(charUUID==和weightscalebtmanager.measurementWeghtCharacteristicuuid)
{
NSLog(“获得体重秤测量字符”)
var权重数据:NSData
weightData=characteristic.value!作为NSData
//var数据:NSData
//weightData=NSData.init(数据:characteristic.value!)//if(bpmData.length如果参考,您将看到公制(SI)值的单位为0.005kg

如果将11860乘以0.005,得到59.3kg

let kg = Double(weight) * 0.005

这对我很有用,非常感谢你的建议。