我正在尝试从 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-uds 中的错误。您传递给 Uds 的内容将存储在 ConfigParser 中,这就是抛出异常的地方。
其次,错误显示“选项值必须是字符串”,上面的几行暗示问题出在 kwargs['channel'] 上。您正在通过
channel=1
。因此,考虑到这一点;也许通过 channel="1"
可以解决问题?