udsoncan中打印python-can原始的CAN数据收发

在使用udsoncan的时候, udsoncan 屏蔽了底层的CAN数据收发接口,只需调用 client相关的发送和response接口,来判断UDS数据;

            case 0x10:
                # 发送0x10切换会话服务; 根据 client.py 查看使用方法
                response = client.change_session(DiagnosticSessionControl.Session.programmingSession)
                g_sid_name = 0x11
                # 注意0x50应答会设置 p2_server_max 值,影响后续指令的超时时间判断
            case 0x11:
                # 发送0x11复位ECU服务
                response = client.ecu_reset(ECUReset.ResetType.softReset)
                g_sid_name = 0x31

实际测试时候,我们需要关注底层CAN数据收发进行调试; 此时我们需要打开CAN模块
在这里插入图片描述
找到自己使用CAN盒对应的文件,可以通过初始化时候来查找

bus1 = can.interface.Bus(interface='canalystii', channel=0, bitrate=250000)

如下图所示
在这里插入图片描述

搜索 “def send” 和 "def _recv_internal " 收发函数,根据 class中元组的定义,添加对应打印信息

    def send(self, msg, timeout=None):
...
        # 获取当前系统 tick
        tick = time.perf_counter()
        print(f"[TX] tick={tick:.6f} id={raw_message.ID:08x}, len={raw_message.DataLen} data=[{', '.join(f'0x{byte:02X}' for byte in raw_message.Data)}]")
...

    def _recv_internal(self, timeout=None):
    ...
            # 获取当前系统 tick
            tick = time.perf_counter()
            print(f"[RX] tick={tick:.6f} id={raw_message.ID:08x}, len={raw_message.DataLen} data=[{', '.join(f'0x{byte:02X}' for byte in raw_message.Data)}]")
...

最终可在python执行界面,查看到如下日志;进行对应数据分析

PS D:\2_gitlab\python\udsoncan\src> python3 .\main.py
Message sent on CANalyst-II: channels [0] with SID: 0x10
[TX] tick=31360.458119 id=00000123, len=8 data=[0x02, 0x10, 0x02, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA]
[RX] tick=31360.466454 id=00000456, len=8 data=[0x06, 0x50, 0x02, 0x0B, 0xB8, 0x01, 0x90, 0xAA]
Positive Response:
  Service: DiagnosticSessionControl
  Data: 0x020bb80190
Message sent on CANalyst-II: channels [0] with SID: 0x11
[TX] tick=31361.468296 id=00000123, len=8 data=[0x02, 0x11, 0x03, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA]
[RX] tick=31361.474352 id=00000456, len=8 data=[0x02, 0x51, 0x03, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA]
Positive Response:
  Service: ECUReset
  Data: 0x03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值