# usb-can-v2 **Repository Path**: jingyuancode/usb-can-v2 ## Basic Information - **Project Name**: usb-can-v2 - **Description**: 适配于BNGU战队2023年款CAN卡的Linux驱动程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 0 - **Created**: 2025-04-28 - **Last Updated**: 2026-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # USB-CAN-V2 ## 简介 1. 本项目适配于BNGU战队2023年款CAN卡,支持波特率1MHz,CAN2.0A传输。 2. 本项目需要严格对应release2.0版本固件,与release1.0版本固件不兼容 ## 发布说明 建议使用release版本,master分支持续更新可能存在问题 - v1.0:首次发布 有严重问题请勿使用 - v1.1:修复v1.0版本的问题 ## 使用说明 本库采用面向对象风格\ 对象实例化: ```cpp usb_can_v2 usb_can = usb_can_v2(); ``` 报文发送: ``` usb_can.transmit(0x1FF, data, 8); ``` 报文接收: ``` usb_can.listen(0x014, my_callback); ``` 发送与接收均采用异步传输,调用发送函数将产生发送请求,USB事件处理线程会自动进行传输。调用监听函数会注册回调函数,当接收到对应ID报文时,会调用回调函数。 回调函数原型: ``` void (*callback)(uint16_t id, uint8_t* data, int length) ``` 中断回调函数应该尽可能简短,如果有耗时操作,可能会导致USB传输丢包等问题 ## 编译 ### 编译为动态链接库 ``` cd build cmake .. make ``` ### 注意事项 1. 3rdparty文件夹下的libusb-1.0.so使用的是AMD64指令集架构,使用其他指令集架构设备需要更换libusb的动态链接文件 ## 使用示例 详见sample文件夹 ## 常见问题 1. Failed to open device. - 未插入设备或者未使用根权限 2. Only one usb_can instance is accept - 多次实例化CAN卡对象