返回下载中心

RELEASE NOTES

BMAPI SDK 变更记录

按版本查看新增功能、体验优化与问题修复,便于升级前确认变化或回溯历史版本。

BMAPI SDK
最新记录
v1.14.2.43
历史版本
24
变更条目
123
01BMAPI SDK v1.14.2.43最新记录6
  1. 优化多设备、多通道 CAN/CAN FD 发送调度,避免繁忙或暂时阻塞的通道影响其他通道。

  2. 完善设备打开、关闭和热插拔恢复事务,失败时完整回滚资源和通道状态,避免产生不可用的半连接句柄。

  3. 提升并发写入、批量发送和周期发送过程中的队列一致性,修复竞争条件可能导致的发送异常。

  4. 修复远程通道启用后发送线程未及时唤醒的问题,缩短远程连接建立后的首次发送等待时间。

  5. 加强设备重连后的能力重新探测及多句柄恢复,避免沿用断线前的过期设备能力。

  6. 完善 Windows XP 与 .NET 4.0 兼容性,并提升 C#、VB.NET 和 Qt 多通道例程在持续高流量下的接收、重开和退出稳定性。

02BMAPI SDK v1.14.1.421
  1. 修复异步 CAN/CAN FD 写入在 USB bulk 部分传输时的静默丢帧:从精确字节偏移继续提交,并仅在整批数据完整提交后释放主机 TX 队列,从而正确支持设备背压。

03BMAPI SDK v1.14.0.426
  1. 重构 C#、VB.NET 和 Qt CAN Analyzer 例程的多通道接收与显示流程:轮询全部通道直至每个通道返回 `BM_ERROR_QRCVEMPTY`、批量刷新界面并将显示历史限制为 5000 条,提升持续高流量下的接收完整性与界面响应性。

  2. 新增面向 GWR/BMAPI 多客户端控制仲裁的公开远程控制会话 API:`BM_QueryRemoteSession`、`BM_ClaimRemoteSession`、`BM_GetRemoteSessionInfo` 和 `BM_ReleaseRemoteSession`,其带版本号的 ABI 支持能力与结果状态查询、受保护控制操作的独占所有权、自动心跳续约和超时清理,同时普通数据收发仍保持共享。

  3. 完成 Windows 平台 `BM_AutosetEx` 运行库导出及导入库对齐,确保公开头文件与发布二进制提供一致的 API。

  4. 修复 BMAPI 默认接收缓冲区初始化失败时清理过程崩溃的问题。

  5. 完善 Windows XP 与 .NET 4.0 兼容路径:BMAPI 运行库在 XP 上采用非阻塞 USB 事件轮询以避免同步 Open/Close 控制 I/O 卡顿,C# 例程在 XP 上跳过不受支持的 PTP 同步并加强通道打开失败后的资源清理。

  6. 修复 `multichannel_rx_cpp` 和 `multichannel_logger` 在起始通道编号不为 0 时清除错误 pending 位的问题,并修正多通道 PTP 同步数量,避免接收循环无法正确结束或遗漏同步通道。

04BMAPI SDK v1.13.10.414
  1. 新增 `BM_AutosetEx`,支持显式选择被动监听和主动探测策略,同时保持现有 `BM_Autoset` 函数签名及行为不变。

  2. 将 `BM_AutosetCallbackHandle` ABI 返回类型更新为 `uint32_t`(返回 0 表示继续,非 0 表示取消),并新增可配置的确认次数、监听/发送超时、探测报文及常见 CAN/CAN FD 波特率组合探索。

  3. 同步更新 C/C++、LabVIEW、C#、VB.NET、python-can 和 python-lin 绑定中的 AutoSet 声明。

  4. 按固件能力调整 `BM_RecoverBusOff` 路径:二代/二代半固件 2.6.0.0+ 与三代固件 3.1.0.0+ 使用固件侧恢复;更早的二代/二代半固件及三代 3.0.x 保留主机侧兼容方案。

05BMAPI SDK v1.13.8.412
  1. 新增 LIN header-only SYNC_BREAK 支持:应用程序可通过 `BM_LIN_MESSAGE_FLAGS_SYNC_BREAK` / `BM_LinMessageCtrlTypeDef.SYNC_BREAK` 主动发送 LIN header only(break + sync + PID,不发送 data/checksum)。TEF/RX 报文通过 `BM_LinMessageCtrlTypeDef.SYNC_BREAK` 标记该 header-only 操作。该字段复用原未使用的 `ID_PARITY` bit。

  2. C# 例程(`can_analyzer_csharp`)兼容性提升:用内置 `ComCheckBoxList` 实现替换第三方 `ComboBoxCustomer.dll`,例程可在 Windows XP 与 .NET 4.0 环境运行。

06BMAPI SDK v1.13.7.402
  1. 修复背景 CAN/CAN FD 流量下 ISO-TP 超时处理问题,提升诊断通信中软件 ISO-TP 的稳定性。

  2. 修复 BMAPI Python 绑定中 TX task 结构体以及 python-can、udsoncan 使用的 ISO-TP 收发路径兼容性问题。

07BMAPI SDK v1.13.6.403
  1. 新增 `BM_RecoverBusOff` 接口,主动恢复 Bus-off 状态,避免周期性轮询对其他通道发送周期的影响;增加 `BM_CAN_DISABLE_AUTO_BUSOFF_RECOVERY` 模式标志,允许用户禁用自动恢复

  2. 新增 `BM_HardwareLastMsgStat` 接口,获取硬件最新发送报文状态

  3. Python LIN 库去除 python-can 依赖,补充 aenum 模块,新增 `store_task=False` 硬件发送任务 demo

08BMAPI SDK v1.13.5.395
  1. 从本版本开始使用 CICD 全自动构建,将在四位版本号(例如 1.13.5.39)基础上追加第五位版本号代表构建号(Build Number)

  2. 修复 CANFD 协议(而不是 CAN2.0)下,`BM_WriteIsotp` 在报文负载长度小于 DLC 可承载长度时,发送的报文不符合 ISOTP 约定的问题

  3. 移除对 libusb 动态库的依赖!今后在编译应用程序的时候不再需要 `-lusb` 这个链接选项了

  4. 整理 SDK 文件夹内容,规范化命名,优化一些启动脚本等,如有困扰欢迎联系技术支持

  5. 修复 Python 环境下使用 32 位时间戳意外翻转的问题,现在时间戳获取完全依赖 BMAPI.DLL

09BMAPI SDK v1.13.3.382
  1. **关键 BUGFIX!** 修复 2025 年 9 月新引入的,由于 BMAPI 基础库中的内存管理错误导致的长时间接收挂机自动停止,需要 Disconnect 再 Connect 才能恢复接收的问题

  2. `BM_CanfdMessageTypeDef` 的 `ctrl.tx` 成员新增 `ECHO` 属性,当置位此属性时,即使阻塞式调用 `BM_Write`,也可以额外收到一条 ACK 报文,用于回显

10BMAPI SDK v1.13.2.377
  1. 恢复对 mingw 编译环境的支持

  2. 修复 x86 以及 arm 以及 aarch64 平台下,提供的 bmapi*.so 文件缺失 libudev 等动态库符号的运行时错误

  3. 修复第二代产品调用 `BM_Close` 会卡死的兼容性问题

  4. 优化 python-can 的平台和版本兼容性

  5. 优化 python-can 的 busoff recovery 逻辑,提升多线程支持能力

  6. 修复 Linux 系统由于变量未初始化导致的在部分环境下 `BM_Close` 崩溃问题

  7. 通过调整 USB 发送使能逻辑,优化第三代设备在频繁 busoff 环境下的发送自恢复能力

11BMAPI SDK v1.13.1.355
  1. 添加 `BM_IsotpConfigTypeDef.flowcontrol.hardwareIsotpDisabled` 选项,用于禁用 ISOTP 流控的硬件加速功能,默认不会禁用(如果硬件支持)

  2. 修复 `BM_WriteIsotp` 函数在需要多帧流控的情况下,CF SEQ 被意外重置的问题

  3. 修复 python-can 在未插入硬件设备时,由于 Virtual Channel 不支持 PTP 而导致抛出异常中止运行的问题

  4. `BM_GetDataPtpTimestamp` 函数返回的时间戳从微秒改为纳秒,从而与 `BM_GetPtpTime` 以及 `BM_GetHostPtpTime` 保持一致,各个例程也做了同样的修改

  5. 提升第三代设备的报文发送效率和收发稳定性

12BMAPI SDK v1.13.0.354
  1. 全面添加 PTP 相关 API,并在 can_analyzer_qt 等多个例程中演示 PTP 功能(第二代和第三代产品均可调用相关 API)

  2. 优化 `BM_WriteIsotp` 的硬件 ISOTP 发送效率

  3. `BM_WriteMultiple` 和 `BM_WriteMultipleCanMessage` 在调用失败时,可以通过函数参数获取到实际成功发送了多少条

  4. 优化对第三代设备的底层收发参数,提高收发效率

13BMAPI SDK v1.12.3.343
  1. python-can 增加 `sync_timestamp` demo,并修复时间戳偏移 bug

  2. 优化 `BM_Enumerate` 在枚举设备时的命名,例如将 PCIE 板卡的多个通道统一命名

  3. 更新 `BM_TxTaskTypeDef` 的定义并保持与历史版本兼容,添加了发送周期内的 frame delay,用于 LIN 调度表等定时设计

14BMAPI SDK v1.12.2.333
  1. 优化各个例程中新增的 64 位 UTC 时间戳功能与第三代以前的旧设备的兼容性

  2. 修复 Virtual Channel 两个通道之间无法对发等问题

  3. 优化 python-can 的时间戳同步精度

15BMAPI SDK v1.12.1.335
  1. 修复 LIN 相关 API 的若干早期问题,现在 LIN API 已经可以用于量产环境

  2. **新特性!** 支持第三代硬件设备的 64 位 UTC 时间戳(位于 `BM_DataTailTypeDef`),并在多个例程中演示如何获取 UTC 时间戳,从此以后再也不用担心时间戳翻转问题

  3. python-can 增加 `recoverFromError` demo

  4. 独家推出 python-lin 软件包,可用 Python 语言来进行 LIN 总线的控制和报文收发,编程接口类似 python-can

  5. 在 Linux 上添加 thread priority tuning API 供有需要的客户使用,常规应用下建议保持默认值

16BMAPI SDK v1.12.0.323
  1. 此版本开始正式支持 LIN 功能,与 LIN 相关的 API 和例程初步固化

  2. 对通道数超出 16 的 GWR 设备的支持:`BM_DataTypeDef` 中,在原来的 `schn` 和 `dchn` 的基础上,引入 group 的概念,每个设备最多支持 8 个 group,每个 group 固定为 16 个 channel,进而每个设备最多支持 128 个通道

  3. 添加 `BM_MapTimestamp` 新 API,用于将 `BM_DataTypeDef` 中的 32 位硬件本地时间戳映射为 64 位 UTC 时间戳,方便长时间采集记录

17BMAPI SDK v1.11.0.3119
  1. 新增系列 API,实现对新款 LIN 设备的支持

  2. 新增系列 API,实现对 GWR 等支持以太网的新款设备的支持,可以通过网络进行设备远程控制和报文收发等,可以将配置信息离线保存到 TF 卡中

  3. `BM_WriteIsotp` 支持超高效率(接近理论极限)的 ISOTP 发送操作,需要 X2 或者 X4 设备,且需要 2.4.12.x 或者更高版本的固件,否则无法生效(但仍可以使用默认软件实现正常发送,不存在兼容性问题)

  4. 新增 `BM_CancelWrite` API,从而修复 python-can 环境下使用 `send_periodic` 函数时,资源泄露的问题

  5. 新增 `bmapi_lin_txrx` 例程,演示如何进行 LIN 报文收发,支持主机和从机

  6. 新增 `lin_analyzer_qt` 例程,演示如何通过 Qt 图形界面进行 LIN 报文收发,支持主机和从机

  7. C++ 和 python-can 新增 `bmapi_remote_connection` 例程,演示如何通过网络远程控制 GWR 等支持以太网的新款设备

  8. python-can 新增 `loopback_test` 例程,演示如何使用硬件进行自发自收

  9. 修复 `BM_WriteIsotp` 与 ISO15765 在某些 corner case 下的 CANFD 短包分包方式不一致的问题

  10. 修复 `BM_WriteIsotp` 在收到 FC 帧之后帧序号被错误重置的问题

  11. 新增系列 API,支持新款 X2R/X4R/GWR 设备的授时功能

  12. 优化 Windows 操作系统下的 BMAPI 极限接收帧率

  13. 在 python-can 中使用 `BM_SetTxTask` 硬件发送任务来实现 `send_periodic` 这个 Python API,保证报文的周期精度在 1ms 以内

  14. 优化 `BM_OpenEx` 的错误码,当 channelinfo 为空或者全零时,返回 `BM_ERROR_ILLPARAMVAL`

  15. 新增两个虚拟通道,可以实现虚拟通道之间的互相收发,其他功能完善中

  16. 修复 `BM_WriteIsotp` 函数在编码 CF 请求 id 时,在多个 FC 的场景下,id 被错误重置的问题

  17. 修复 `BM_ReadIsotp` 函数在一个会话中收到另外一个 SF 请求(例如 3E 80)导致当前会话被重置的问题

  18. `can_analyzer_qt` 例程添加自动错误恢复机制,支持 USB 设备拔出检测以及 busoff 检测

  19. BMAPI 内部新增对 `BM_NO_ACK` 模式的实现,从而支持在异步模式下快速发送报文而无需处理发送完成事件,请注意在这种模式下无法得知报文是否发送成功

18BMAPI SDK v1.10.2.306
  1. 新增 `multichannel_logger` 例程,额外演示了如何同时将多个通道捕获的报文录制到一个 ASC 文件中

  2. 修复 `BM_ReadMultiple` 和 `BM_ReadMultipleCanMessage` 在某些场景下无法通过 nmessages 参数获取已经接收到的报文数量的 bug

  3. 优化 `BM_ReadMultiple` 和 `BM_ReadMultipleCanMessage` 的返回值定义

  4. 消除 `BM_OpenEx` 在 Linux 的额外调试打印信息

  5. 修复 `BM_Enumerate` 在 Linux 下反复多次枚举时会重复枚举已经打开的设备,导致程序概率性崩溃的问题

  6. 修复 `multichannel_bmapi_demo.py` 例程收到报文后抛出 `BM_ERROR_QRCVEMPTY` 异常的问题

19BMAPI SDK v1.10.1.295
  1. 新增 `bmapi_cyclic_tx_task` 例程,演示如何使用 BUSMUST 特有的 TXTASK API 来进行周期性报文发送

  2. 新增 `multichannel_isotp_txrx_cpp` 例程,演示多通道 ISOTP(ISO15765)通信

  3. 新增对 python-can-4.0.0 的支持(理论上支持更高的 4.x.x 版本)

  4. 新增 python-can ECU UDS 模拟器例程

  5. 新增若干 API,用于支持离线配置/记录/回放相关功能

20BMAPI SDK v1.9.0.234
  1. 新增对 VB.Net 语言框架的支持

  2. 恢复对 Mingw 编译器的支持

  3. 优化 C#.Net 以及 VB.Net 的若干库导入声明

  4. 修复 C#.Net 的 example 点击 Close 无法真正关闭对应的硬件设备的问题

21BMAPI SDK v1.8.1.223
  1. 新增 `BM_ResetDevice` API,用于重启整个 USB 设备

  2. 修复 `can_analyzer_csharp` 例程在未选中任何通道时点击 Open 按钮时报错的问题

  3. 修复 C# 程序通过 `BM_Enumerate` 获取到的通道名称尾部有乱码的问题

22BMAPI SDK v1.8.0.214
  1. 支持最新的八通道硬件设备 X8PI

  2. 增加若干新的 API,支持最新的支持离线报文录制播放的设备 X4R、X2R

  3. 新增 C++ 多通道并行接收例程 `multichannel_rx_cpp`

  4. BMAPI 在 Linux 上部分重构,CPU 占用率大幅降低

23BMAPI SDK v1.7.1.2015
  1. 支持 Python 2.7.18

  2. Python-can 新增 `send_multiple` API 以及对应的 example

  3. 更新 raspbian64 平台的各个二进制文件

  4. 在 python-can 中自带了 aenum package

  5. 更新 udsoncan 的 `download_hex_file` 例程,现已支持加载 CANoe 格式的 security DLL

    ## 1.7.0.19

  6. Qt/C#/pyqt 示例程序从此版本起支持多通道操作

  7. 新增 `bmapi_receive_only` 和 `bmapi_transmit_only` 例程

  8. 修复 Unix 系统下同时打开多通道时的卡死问题

  9. 优化 python-can 对多平台兼容性的自适应能力

    ## 1.6.0.18

  10. 修复远程帧无法实时发送的问题

  11. Python-can 创建 bus 对象时允许指定采样点位置

  12. `BM_ReadIsotp` 支持同时侦听指定的 UDS Request ID 和功能寻址地址

  13. 修复 `BM_Reset` 在多线程环境的句柄资源释放问题

    ## 1.6.0.17 [Alpha]

  14. 新增 `BM_GetVersion` 接口

  15. 新增 `BM_GetLogLevel` 和 `BM_SetLogLevel` 接口

24BMAPI SDK v1.5.4.166
  1. 针对 X1PRO 和 X1 设备修正了 `BM_OpenEx` 时正在接收报文导致设备无法正确配置的 bug

  2. 修正 Debian 下 `BM_ClearBuffer` 递归锁导致程序阻塞的问题

  3. udsoncan 增加 `example.run.sh` 启动器

  4. 修正 `BM_WriteIsotp` 和 `BM_ReadIsotp` 的首个 CF 帧的序列号不对的问题

  5. --

  6. 5.4.16 以前的历史版本,变更记录位于 BUSMASTER 上位机安装包的 changelist 中。

WECHAT SERVICE

BUSMUST Sales

使用微信扫描二维码,或点击二维码在当前设备打开客服会话。

BUSMUST Sales 微信客服二维码打开微信客服 ↗