Swift-BLE-UART如何从各种视图控制器场景读/写?

时间:2017-12-08 06:03:34

标签: ios swift bluetooth-lowenergy uart

我一直在使用Adafruit Basic-Chat作为参考。

https://github.com/adafruit/Basic-Chat/tree/master/Basic%20Chat

我已经定制了代码,以便与我定制的北欧BLE模块进行通信,以进行基本的UART通信。 写入10个字节,读取10个字节。 我可以在UartModuleViewController中读写,但是当我创建一个新的View Controller并尝试使用相同的peripheral.writeValue时,app似乎在我的第二个ViewController中的peripheral.writeValue行引发错误。 有人可以请帮助我如何传递连接到各种视图控制器场景的相同外围设备,以便我可以类似地使用写/读功能?

//This is my write code
let bytes : [UInt8] = [ 0x1A, 0x2B, 0x3C, 0x4D ]
        let Transmitdata = NSData(bytes: bytes, length: bytes.count)
        peripheral.writeValue(Transmitdata as Data, for: txCharacteristic!, type: CBCharacteristicWriteType.withoutResponse)
        print("Data Sent",Transmitdata)

//这是我的阅读代码

let ReceiveData = rxCharacteristic?.value
        if let ReceiveData = ReceiveData {
            let ReceivedNoOfBytes = ReceiveData.count
            var ReceivedByteArray = [UInt8](repeating: 0, count: ReceivedNoOfBytes)
            (ReceiveData as NSData).getBytes(&ReceivedByteArray, length: ReceivedNoOfBytes)
            print("Data Received ",ReceivedByteArray)

我想在我的所有视图控制器上使用相同的两个块进行读写操作? (我有10个视图控制器,我想在所有类中使用相同的块) 我是swift / iOS的新手,只有有限的信息可供参考,所以我希望这会有助于像我这样的更多初学者。 请帮忙。 谢谢 NAR

0x1000d9b78 <+2408>:  uxtb   w2, w9
    0x1000d9b7c <+2412>:  uxtb   w5, w9
    0x1000d9b80 <+2416>:  mov    x6, x10
    0x1000d9b84 <+2420>:  bl     0x1000e0174               ; symbol stub for: function signature specialization <preserving fragile attribute, Arg[2] = Dead, Arg[3] = Dead> of Swift._fatalErrorMessage(Swift.StaticString, Swift.StaticString, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never
    0x1000d9b88 <+2424>:  ldr    x8, [x19, #0xab8].  <- This is where it throws an error/exception/fatal error.

主题1:EXC_BREAKPOINT(代码= 1,子代码= 0x10042b200)

1 个答案:

答案 0 :(得分:0)

我明白了。 当我们想要从中央类访问它并使用segue将它传递给我们想要的任何视图控制器场景并将其引用到中央/主类时,将连接的外围设备从扫描的外围设备阵列传递并将服务uuid​​引用到外围设备因此,当我们返回到主视图控制器场景时,它不会断开连接。 谢谢大家参考