如何从 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 总线读取数据的主要内容,如果未能解决你的问题,请参考以下文章

重型柴油车SAE J1939总线数据结构分析及应用

为 SAE J1939 标准编程

SAE J1939协议

计算机内存读取写入原理

如何同步 2 个异步线程/任务

HMI-67-数据汽车CAN总线数据读取