-5

在这里,我们正在尝试从 J1939 SAE 总线设备读取数据,但似乎无法通过 iOS 读取我们正在使用Core bluetooth我们在 android 中完成的连接,并且在 android 中工作正常,但同一设备无法使用 iOS 读取,任何人都可以帮助我。

在这里我附上我的代码片段

连接Bluetooth设备为 SEA J1939

var manager:CBCentralManager! 
manager.connect(connectPeripheral, options: nil) 
connectPeripheral.delegate = self

蓝牙连接成功

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
         print("Connected!")
         self.showAlertOneButton(withTitle: "", with: key.KBluetoothConnect, firstButton: key.KOk) { (UIAlertAction) in
             self.navigationItem.rightBarButtonItem?.tintColor = UIColor.blue
             self.vwBLTSub.removeFromSuperview()
             //all services
             self.connectPeripheral.discoverServices(nil)
         }
     }

从设备读取数据

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService,
                    error: Error?) {
        guard let characteristics = service.characteristics else { return }

        for characteristic in characteristics {
            print(characteristic)
            if characteristic.properties.contains(.read) {
                print("\(characteristic.uuid): properties contains .read")

                peripheral.readValue(for: characteristic)
            }
            if characteristic.properties.contains(.notify) {
                print("\(characteristic.uuid): properties contains .notify")

            }
        }
    }
4

1 回答 1

0

iOS 设备上的普通操作系统会阻止应用程序访问 USB 和蓝牙服务,除非那些明确记录为 Apple 列入白名单的设备,或者那些注册了 Apple 的 MFI 计划(根据 NDA)的设备。

解决方案我使用它通过 Raspberry Pi 连接到非 Apple 许可的 USB 和蓝牙配置文件设备,然后通过网络套接字(通过 Apple 支持的 WiFi 或有线以太网)将来自 Pi 的数据提供给 iOS 设备iOS 通过各种加密狗),或使用核心蓝牙 BLE(被列入白名单,但速度慢得多)。

于 2019-05-01T15:01:02.713 回答