使用 python-uds 从 ECU 获取诊断数据

问题描述 投票:0回答:1

我正在尝试从 ECU 获取诊断数据。 我尝试过一个例子,但没有任何结果,它总是抛出一些异常。 我使用 VN5620 作为 CAN 接口。 我尝试使用原始发送命令示例代码

import uds
from uds import Uds
PCM = Uds(transportProtocol="CAN", interface="vector", reqId=0x1C440019, resId=0x1C460019, appName="pythonUds", channel=1)
a = PCM.send([0x22, 0x02, 0x00])


Traceback (most recent call last):
  File "C:\workspace\companion_chip_automation\Tests\UdsOnCanTest\python_uds.py", line 4, in <module>
    PCM = Uds(transportProtocol="CAN", interface="vector", reqId=0x1C440019, resId=0x1C460019, appName="pythonUds", channel=1)
  File "C:\workspace\venv_3.8\lib\site-packages\uds\uds_communications\Uds\Uds.py", line 43, in __init__
    self.tp = tpFactory(self.__transportProtocol, configPath=configPath, **kwargs)
  File "C:\workspace\venv_3.8\lib\site-packages\uds\uds_communications\TransportProtocols\TpFactory.py", line 37, in __call__
    return CanTp(configPath=configPath, **kwargs)
  File "C:\workspace\venv_3.8\lib\site-packages\uds\uds_communications\TransportProtocols\Can\CanTp.py", line 96, in __init__
    self.__connection = canConnectionFactory(self.callback_onReceive,
  File "C:\workspace\venv_3.8\lib\site-packages\uds\uds_communications\TransportProtocols\Can\CanConnectionFactory.py", line 17, in __call__
    CanConnectionFactory.checkKwargs(**kwargs)
  File "C:\workspace\venv_3.8\lib\site-packages\uds\uds_communications\TransportProtocols\Can\CanConnectionFactory.py", line 91, in checkKwargs
    CanConnectionFactory.config['vector']['channel'] = kwargs['channel']
  File "C:\Program Files\Python38\lib\configparser.py", line 1258, in __setitem__
    self._parser._validate_value_types(option=key, value=value)
  File "C:\Program Files\Python38\lib\configparser.py", line 1185, in _validate_value_types
    raise TypeError("option values must be strings")
TypeError: option values must be strings

您能帮助我获得第一回复并解决这个问题吗?

谢谢

python vector can-bus uds
1个回答
0
投票

首先,实际的错误感觉像是 python-uds 中的错误。您传递给 Uds 的内容将存储在 ConfigParser 中,这就是抛出异常的地方。

其次,错误显示“选项值必须是字符串”,上面的几行暗示问题出在 kwargs['channel'] 上。您正在通过

channel=1
。因此,考虑到这一点;也许通过
channel="1"
可以解决问题?

© www.soinside.com 2019 - 2024. All rights reserved.