当前位置: 首页 > article >正文

kvaser pythoncan 调用报错(x86 ubuntu工控机)

报错内容为:Error opening channel 1: Specified device not found (-3)

确定已安装库  canlib可链接到libcanlib.so

 

定位到 驱动内部:ch = canlib.openChannel(channel, openFlags) 没有成功

首先插上kvaser运行 lsusb  打印如下
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 17ef:608d Lenovo
Bus 001 Device 005: ID 17ef:6099 Lenovo
Bus 001 Device 008: ID 05c6:f00e Qualcomm, Inc.
Bus 001 Device 009: ID 0bfd:0106 Kvaser AB
Bus 001 Device 007: ID 04d8:0205 Microchip Technology, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

解决思路:删除原有包重新安装kvaser驱动(运行下述命令时拔掉kvaser )

1 通过“cd linuxcan”命令进入 linuxcan 目录,先后通过“make”,“sudo make install”,“sudo
make load”命令创建驱动程序并安装,加载所有驱动。
Ps:如果为不同的 linux 头文件安装了多个版本的 linuxcan,可以通过调用“sudo make purge”
将它们全部删除. 卸载指令“sudo make uninstall”
2通过“cd linuxcan/canlib”命令进入 canlib 目录,并先后通过“make”,“sudo make install”
命令安装 canlib 驱动。

3 安装完成后拔掉kvaser ,运行canlib/example中的listChannel可执行文件查看当前接口数量。最后运行调用脚本,可正常使用。

附pythoncan调用测试脚本:

import can

import time

def test_kvaser():

try:

# 创建一个 CAN 总线对象,使用 Kvaser 接口

bus = can.interface.Bus(bustype='kvaser', channel=0, bitrate=500000)

print("成功连接到 Kvaser 设备")

# 发送一个 CAN 消息

msg = can.Message(arbitration_id=0x123, data=[0, 1, 2, 3, 4, 5, 6, 7], is_extended_id=False)

try:

bus.send(msg)

print("成功发送 CAN 消息")

except can.CanError:

print("发送 CAN 消息时出错")

# 接收 CAN 消息

start_time = time.time()

while time.time() - start_time < 5: # 等待 5 秒钟接收消息

message = bus.recv(timeout=1)

if message is not None:

print(f"接收到 CAN 消息: {message}")

print("接收超时,未收到新的 CAN 消息")

# 关闭总线连接

bus.shutdown()

print("已关闭 Kvaser 设备连接")

except can.CanError as e:

print(f"连接 Kvaser 设备时出错: {e}")

if __name__ == "__main__":

test_kvaser()


http://www.kler.cn/a/561427.html

相关文章:

  • 数据分析和数据挖掘的工作内容
  • 图书馆系统源码详解
  • Jtti.cc:站群服务器SEO优化建议,如何分配多IP?
  • nginx关于配置SSL后启动失败原因分析
  • 2.25作业
  • 【Linux探索学习】第三十一弹——线程互斥与同步(下):深入理解确保线程安全的机制
  • IDEA撤销commit
  • OpenHarmony全球化子系统
  • C 语言 “神秘武器”:联合体与枚举大揭秘!
  • 深度学习-131-RAG技术之基于Anything LLM搭建本地私人知识库的应用策略问题总结(二)
  • HOMIE:具有同构外骨骼座舱的人形机器人操控
  • 冯诺依曼体系结构 ──── linux第8课
  • vue-signature-pad插件实现移动端签字功能(css,js)+将签名照片旋转90度之后的base64码传给后端
  • npm i 失败权限问题
  • 详解:用Python OpenCV库来处理图像并测量物体的长度
  • 计算机考研之数据结构:斐波那契数列专题(1)
  • Linux设备驱动开发-SPI驱动开发详解(包含设备树处理详细过程)
  • 第4章 Unicode 文本和字节序列
  • 神经网络 - 神经元
  • 【压力测试】要不要做全链路压测?