मैं बीएलई संचार के लिए कोरब्लूटूथ का उपयोग करके तेजी से आईओएस एप्लिकेशन बना रहा हूं। मैं एक Arduino डिवाइस की विशेषताओं को जोड़ने और सदस्यता लेने में सक्षम हूं। मैं उस Arduino डिवाइस से डेटा को सफलतापूर्वक पढ़ने में सक्षम हूं, लेकिन यह एक एकल फ्लोट मान है जिसे मैं अभी Arduino के साथ लिख रहा हूं। मुझे पता है कि didUpdateValueFor इसे डेटा ऑब्जेक्ट के रूप में पढ़ता है और आपको डेटा को उन मानों में परिवर्तित करना होगा जिन्हें आप ढूंढ रहे हैं। जैसा कि नीचे दिखाया गया है, मैं इसे एक फ्लोट वैल्यू में बदलने में सक्षम था। मैं कई फ्लोट मान भेजना चाहता हूं, विशेष रूप से वे एक्सेलेरोमीटर से रीडिंग कर रहे हैं, फ्लोट वैल्यू एक्स वाई जेड। मैं उन्हें फ्लोट एरे के रूप में भेज रहा हूं लेकिन मुझे एप्लिकेशन साइड पर फ्लोट वैल्यू को बदलने और प्रदर्शित करने में परेशानी हो रही है। किसी भी मदद की सराहना की जाती है। जी शुक्रिया।

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
    guard characteristic == rxCharacteristic,
        let data:Data = characteristic.value
        else { return }

    let number: Float = data.withUnsafeBytes {
        (pointer: UnsafePointer<Float>) -> Float in

        return pointer.pointee
    }
    print("\nValue Received : ", number)
0
visback 18 जून 2020, 07:44

1 उत्तर

सबसे बढ़िया उत्तर

संपादित करें: यह वह कोड है जिसका उपयोग मैंने डेटा प्रतिनिधित्व से फ़्लोट की एक सरणी प्राप्त करने के परीक्षण के लिए किया था:

    let arr: [Float] = [32.0, 4.0, 1.2]
    let data = Data(buffer: UnsafeBufferPointer(start: arr, count: arr.count))
    print("---> data: \(data)")

    var myFloatArray = Array<Float>(repeating: 0, count: data.count/MemoryLayout<Float>.stride)
    myFloatArray.withUnsafeMutableBytes { data.copyBytes(to: $0) }

    print("---> myFloatArray: \(myFloatArray)")
0
workingdog 18 जून 2020, 10:32