如何从 SAE j1939 总线读取数据
Posted
技术标签:
【中文标题】如何从 SAE j1939 总线读取数据【英文标题】:How to read data from SAE j1939 bus 【发布时间】:2019-05-01 14:17:53 【问题描述】:在这里,我们正在尝试从 J1939 SAE 总线设备读取数据,但似乎无法通过 ios 读取我们正在使用Core bluetooth
连接,我们在 android 和 android 中都可以正常工作,但同一设备无法通过 iOS 读取任何人都可以请帮助我。
我在这里附上我的代码 sn-ps
将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")
【问题讨论】:
嗨,凯坦。请提供一些有关您迄今为止尝试过的实施的更具体的细节,以及您所面临的确切问题。这将需要有人在这里为您提供帮助。 @TheNeil 我在我的问题中添加了代码,请检查。 【参考方案1】:iOS 设备上的普通操作系统会阻止应用程序访问 USB 和蓝牙服务,除非那些明确记录为 Apple 列入白名单的设备,或者那些注册了 Apple 的 MFI 计划(根据 NDA)的设备。
我使用它通过 Raspberry Pi 连接到非 Apple 许可的 USB 和蓝牙配置文件设备,然后通过网络套接字(通过 WiFi 或有线以太网)将数据从 Pi 提供给 iOS 设备Apple 通过各种加密狗支持 iOS),或使用 Core Bluetooth BLE(已列入白名单,但速度较慢)。
【讨论】:
以上是关于如何从 SAE j1939 总线读取数据的主要内容,如果未能解决你的问题,请参考以下文章