Back to Downloads

RELEASE NOTES

BMAPI SDK Release Notes

Review new features, refinements, and fixes before upgrading, or trace changes in an earlier release.

BMAPI SDK
Latest entry
v1.13.6.40
Releases
18
Change items
114

Release details are currently published in Chinese.

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

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

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

02BMAPI 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

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

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

04BMAPI 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环境下的发送自恢复能力

05BMAPI 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. 提升第三代设备的报文发送效率和收发稳定性

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

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

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

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

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

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

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

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

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

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

09BMAPI 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供有需要的客户使用,常规应用下建议保持默认值

10BMAPI 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时间戳,方便长时间采集记录

11BMAPI 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模式的实现,从而支持在异步模式下快速发送报文而无需处理发送完成事件,请注意在这种模式下无法得知报文是否发送成功。

12BMAPI SDK v1.10.2.306
  1. 新增multichannel_logger例程,额外演示了如何同时将多个通道捕获的报文录制到一个ASC文件中(此ASC可稍后在Busmaster或者CANoe等软件中打开查看分析)

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

  3. 优化BM_ReadMultiple和BM_ReadMultipleCanMessage的返回值定义:当发生异常情况时,返回异常码;当指定时间内未接收到指定的报文数量时,返回BM_ERROR_BUSTIMEOUT;否则返回正常值BM_ERROR_OK。

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

  5. 修复BM_Enumerate在linux下反复多次枚举时(例如在python-can环境下)会重复枚举已经打开的设备,导致程序概率性崩溃的问题

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

13BMAPI SDK v1.10.1.296
  1. 新增bmapi_cyclic_tx_task例程,用于演示如何使用BUSMUST特有的TXTASK API来进行周期性报文发送(例如网络管理报文)

  2. 新增multichannel_isotp_txrx_cpp例程,额外演示了如何同时通过多个通道来进行ISOTP(ISO15765)通信,例如通过UDS36服务来实现多通道并行刷写(需要使用不同的命令行参数启动两个实例来执行对发)

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

  4. 新增python-can-xxxx/examples/ecu_uds_simulator例程,用于模拟一个ECU的UDS服务(是模拟ECU而不是模拟诊断仪)

  5. 新增若干API,用于支持离线配置/记录/回放相关功能,具体请查看BMAPI.CHM(需要X2R/X4R等新款设备的硬件支持)

  6. 小幅优化若干BMAPI的内部实现,提升稳定性,增加调试能力,优化效率

14BMAPI SDK v1.9.0.234
  1. 新增对VB.Net语言框架的支持,包括用于库导入的头文件,以及can_analyzer_vb例程,该例程的界面功能与can_analyzer_csharp等工程一致

  2. 恢复对Mingw编译器的支持,在Window系统下进行二次开发时,bin/mingw32及lib/mingw32文件夹用于mingw编译器,而bin/win32及lib/win32文件夹用于MSVC编译器

  3. 优化C#.Net以及VB.Net的若干库导入声明,包括BM_OpenEx/BM_SetRxFilters/BM_SetTxTasks,使这些API支持多个rxfilter/txtask对象实例,

    (请注意这几个API在升级后与1.8版本稍有不兼容,仅影响C#.Net和VB.Net,且所需改动不大,具体请参考对应的example)

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

15BMAPI SDK v1.8.1.223
  1. 新增BM_ResetDevice API,用于重启整个USB设备,相当于重新插拔USB,请在阅读API文档后按需慎用

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

  3. 封装新的GetName()函数,修复can_analyzer_csharp例程(以及其他调用BMAPI.cs的客户C#程序)通过BM_Enumerate获取到的通道名称尾部有乱码的问题

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

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

  3. 新增C++多通道并行接收例程multichannel_rx_cpp,演示如何进行高效率的报文接收

  4. 新增x8pi_spi_test例程,演示如何通过树莓派的40Pin接口来控制X8PI设备

  5. BMAPI在linux上部分重构,CPU占用率大幅降低,对外接口保持不变

  6. 若干小问题修复

17BMAPI SDK v1.7.1.2022
  1. 支持Python2.7.18

  2. Python-can新增send_multiple API以及对应的example,可以达到与C API一致的超高发送帧率,但是请注意这个API在python-can标准版本中并不存在

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

  4. 在python-can中自带了aenum package,避免新手第一次运行时出现找不到aenum的情况

  5. 更新udsoncan的download_hex_file例程,现已支持加载CANoe格式的security DLL来自动进行27解锁

  6. 7.0.19

  7. Qt/C#/pyqt示例程序从此版本起支持多通道操作了,可在通道下拉列表中勾选需要的通道,同时可以通过独立的下拉框选择发送通道

  8. 新增演示基础接收操作的C/C++例程: bmapi_receive_only

  9. 新增演示基础发送操作的C/C++例程: bmapi_transmit_only

  10. 修复Unix系统下,同时打开多通道时,使用非首个通道发送数据时的卡死问题

  11. 修复udsoncan例程的UDS36服务实现中,首个请求的序号未从01开始的错误

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

  13. 增加在udsoncan中使用CANoe DLL进行UDS 27解锁的演示操作

  14. 6.0.18

  15. 修复1.5.4版本引入的远程帧无法实时发送的问题

  16. Python-can创建bus对象时允许指定采样点位置(未指定则默认最常见的75%)

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

  18. BM_ReadIsotp在上一次ISOTP会话意外中断时,尽量不影响下一次ISOTP的发起

  19. 修复BM_Reset在多线程环境频繁创建销毁的情况下句柄资源没有正确释放的问题

    (仍然建议您在BM_OpenEx/BM_Close/BM_Reset时确保没有其他后台线程正在读写报文)

  20. 6.0.17 [Alpha]

  21. 新增BM_GetVersion接口,用于获取动态库(*.dll|*.so)的实际编译版本

  22. 新增BM_GetLogLevel和BM_SetLogLevel接口,用于配置动态库在Linux下的命令行调试信息输出等级,默认仅打印BM_LOG_ERR及更高,可通过配置为BM_LOG_NONE禁用全部调试信息输出用于量产环境

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

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

  3. udsoncan增加example.run.sh作为启动器,客户朋友如需发布自己的程序也可基于此启动器简单修改

  4. 暂时移除问题较多的python-can的asyncio demo,待优化后重新发布

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

  6. --------------------------------------

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

  8. --------------------------------------

WECHAT SERVICE

BUSMUST Sales

Scan with WeChat, or click the QR code to open the service conversation on this device.

BUSMUST Sales WeChat service QR codeOpen WeChat service ↗