【发布时间】:2018-09-19 12:12:01
【问题描述】:
我在 RaspberryPi3 上使用了 python-can-isotp,并使用示例代码对其进行了测试,但出现错误。
我的简单代码:
import isotp
s = isotp.socket()
s2 = isotp.socket()
# Configuring the sockets.
s.set_fc_opts(stmin=5, bs=10)
#s.set_general_opts(...)
#s.set_ll_opts(...)
s.bind("vcan0" rxid=0x123 txid=0x456) # We love named parameters!
s2.bind("vcan0", rxid=0x456, txid=0x123)
s2.send(b"Hello, this is a long payload sent in small chunks of 8 bytes.")
print(s.recv())
错误:
File "/usr/local/opt/python-3.7.0/lib/python3.7/socket.py", line 151, in __init__
_socket.socket.__init__(self, family, type, proto, fileno)
OSError: [Errno 93] Protocol not supported
有人可以帮我找到问题的解决方案吗?
【问题讨论】:
-
您是否阅读了该模块的安装/故障排除说明?必须安装一个内核模块才能使其工作。
-
谢谢,我确实忽略了故障排除。
-
当我'sudo insmod ./net/can/can-isotp.ko'时,发生另一个错误'insmod: ERROR: could not insert module ./net/can/can-isotp.ko:模块中的未知符号',但不知道哪个符号是未知的,如何解决这个问题,非常感谢。
-
必须为您尝试插入它的内核版本显式构建模块(可能的失败原因#1)。此外,通常应该使用
modprobe来插入内核模块,因为与insmod不同,它还处理模块依赖关系(可能的原因#2)。我相信dmesg命令(转储内核消息缓冲区)会显示导致insmod失败的符号。 -
非常感谢您的建议,我解决了这个问题。