RELEASE NOTES
BMAPI SDK 变更记录
按版本查看新增功能、体验优化与问题修复,便于升级前确认变化或回溯历史版本。
- 最新记录
- v1.13.6.40
- 历史版本
- 18
- 变更条目
- 114
01BMAPI SDK v1.13.6.40最新记录3
新增 BM_RecoverBusOff 接口 主动恢复 Bus-off 状态,避免周期性轮询对其他通道发送周期的影响;增加BM_CAN_DISABLE_AUTO_BUSOFF_RECOVERY 模式标志,允许用户禁用自动恢复
新增 BM_HardwareLastMsgStat 接口 获取硬件最新发送报文状态
Python LIN 库去除 python-can 依赖,补充 aenum 模块,新增 store_task=False 硬件发送任务 demo
02BMAPI SDK v1.13.5.395
从本版本开始使用CICD全自动构建,将在四位版本号(例如1.13.5.39)基础上追加第五位版本号代表构建号(Build Number)
修复CANFD协议(而不是CAN2.0)下,BM_WriteIsotp在报文负载长度小于DLC可承载长度时,发送的报文不符合ISOTP约定的问题
移除对libusb的动态库的依赖!!!今后在编译应用程序的时候不再需要-lusb这个链接选项了
整理SDK文件夹内容,规范化命名,优化一些启动脚本等,如有困扰欢迎联系技术支持
修复Python环境下使用32位时间戳意外翻转的问题,现在时间戳获取完全依赖BMAPI.DLL
03BMAPI SDK v1.13.3.382
关键BUGFIX!!!修复2025年9月新引入的,由于BMAPI基础库中的内存管理错误导致的长时间接收挂机自动停止,需要Disconnect再Connect才能恢复接收的问题
BM_CanfdMessageTypeDef的ctrl.tx成员新增ECHO属性,当置位此属性时,即使阻塞式调用BM_Write,也可以额外收到一条ACK报文,用于回显
04BMAPI SDK v1.13.2.377
恢复对mingw编译环境的支持
修复x86以及arm以及aarch64平台下,提供的bmapi*.so文件缺失libudev等动态库符号的运行时错误
修复第二代产品调用BM_Close会卡死的兼容性问题
优化python-can的平台和版本兼容性
优化python-can的busoff recovery逻辑,提升多线程支持能力
修复linux系统由于变量未初始化导致的在部分环境下BM_Close崩溃问题
通过调整usb发送使能逻辑,优化第三代设备在频繁busoff环境下的发送自恢复能力
05BMAPI SDK v1.13.1.355
添加BM_IsotpConfigTypeDef.flowcontrol.hardwareIsotpDisabled选项,用于禁用ISOTP流控的硬件加速功能,默认是不会禁用的(如果硬件支持)
修复BM_WriteIsotp函数在需要多帧流控的情况下,CF SEQ被意外重置的问题
修复python-can在未插入硬件设备时,由于Virtual Channel不支持PTP而导致抛出异常中止运行的问题
BM_GetDataPtpTimestamp函数返回的时间戳从微秒改为纳秒,从而与BM_GetPtpTime以及BM_GetHostPtpTime保持一致,各个例程也做了同样的修改
提升第三代设备的报文发送效率和收发稳定性
06BMAPI SDK v1.13.0.354
全面添加PTP相关API,并在can_analyzer_qt等多个例程中演示PTP功能(第二代和第三代产品均可调用相关API)
优化BM_WriteIsotp的硬件ISOTP发送效率
BM_WriteMultiple和BM_WriteMultipleCanMessage在调用失败时,可以通过函数参数获取到实际成功发送了多少条
优化对第三代设备的底层收发参数,提高收发效率
07BMAPI SDK v1.12.3.343
python-can增加sync_timestamp demo,并修复时间戳偏移bug
优化BM_Enumerate在枚举设备时的命名,例如将PCIE板卡的多个通道统一命名
更新BM_TxTaskTypeDef的定义并保持与历史版本兼容,添加了发送周期内的frame delay,用于LIN调度表等定时设计
08BMAPI SDK v1.12.2.333
优化各个例程中新增的64位UTC时间戳功能与第三代以前的旧设备的兼容性
修复Virtual Channel两个通道之间无法对发等问题
优化python-can的时间戳同步精度
09BMAPI SDK v1.12.1.335
修复LIN相关API的若干早期问题,现在LIN API已经可以用于量产环境
新特性!!支持第三代硬件设备的64位UTC时间戳(位于BM_DataTailTypeDef),并在多个例程中演示如何获取UTC时间戳,从此以后再也不用担心时间戳翻转问题
python-can增加recoverFromError demo
独家推出python-lin软件包,可用python语言来进行LIN总线的控制和报文收发,编程接口类似python-can
在Linux上添加thread priority tuning API供有需要的客户使用,常规应用下建议保持默认值
10BMAPI SDK v1.12.0.323
此版本开始正式支持LIN功能,与LIN相关的API和例程初步固化
对通道数超出16的GWR设备的支持:BM_DataTypeDef中,在原来的schn和dchn的基础上,引入group的概念,每个设备最多支持8个group,每个group固定为16个channel,进而每个设备最多支持128个通道
添加BM_MapTimestamp新API,用于将BM_DataTypeDef中的32位硬件本地时间戳映射为64位UTC时间戳,方便长时间采集记录
11BMAPI SDK v1.11.0.3119
新增系列API,实现对新款LIN设备的支持
新增系列API,实现对GWR等支持以太网的新款设备的支持,可以通过网络进行设备远程控制和报文收发等,可以将配置信息离线保存到TF卡中
BM_WriteIsotp支持超高效率(接近理论极限)的ISOTP发送操作,需要X2或者X4设备,且需要2.4.12.x或者更高版本的固件,否则无法生效(但仍可以使用默认软件实现正常发送,不存在兼容性问题)
新增BM_CancelWrite API,从而修复python-can环境下使用send_periodic函数时,资源泄露的问题
新增bmapi_lin_txrx例程,演示如何进行LIN报文收发,支持主机和从机
新增lin_analyzer_qt例程,演示如何通过Qt图形界面进行LIN报文收发,支持主机和从机
C++和python-can新增bmapi_remote_connection例程,演示如何通过网络远程控制GWR等支持以太网的新款设备
python-can新增loopback_test例程,演示如何使用硬件进行自发自收
修复BM_WriteIsotp与ISO15765在某些corner case下的CANFD短包分包方式不一致的问题
修复BM_WriteIsotp在收到FC帧之后帧序号被错误重置的问题
新增系列API,支持新款X2R/X4R/GWR设备的授时功能
优化Windows操作系统下的BMAPI极限接收帧率
在python-can中使用BM_SetTxTask硬件发送任务来实现send_periodic这个python API,保证报文的周期精度在1ms以内
优化BM_OpenEx的错误码,当channelinfo为空或者全零时,返回BM_ERROR_ILLPARAMVAL
新增两个虚拟通道,可以实现虚拟通道之间的互相收发,其他功能完善中
修复BM_WriteIsotp函数在编码CF请求id时,在多个FC的场景下,id被错误重置的问题
修复BM_ReadIsotp函数在一个会话中收到另外一个SF请求(例如3E 80)导致当前会话被重置的问题
can_analyzer_qt例程添加自动错误恢复机制,支持USB设备拔出检测以及busoff检测
BMAPI内部新增对BM_NO_ACK模式的实现,从而支持在异步模式下快速发送报文而无需处理发送完成事件,请注意在这种模式下无法得知报文是否发送成功。
12BMAPI SDK v1.10.2.306
新增multichannel_logger例程,额外演示了如何同时将多个通道捕获的报文录制到一个ASC文件中(此ASC可稍后在Busmaster或者CANoe等软件中打开查看分析)
修复BM_ReadMultiple和BM_ReadMultipleCanMessage在某些场景下无法通过nmessages参数获取已经接收到的报文数量的bug
优化BM_ReadMultiple和BM_ReadMultipleCanMessage的返回值定义:当发生异常情况时,返回异常码;当指定时间内未接收到指定的报文数量时,返回BM_ERROR_BUSTIMEOUT;否则返回正常值BM_ERROR_OK。
消除BM_OpenEx在linux的额外调试打印信息
修复BM_Enumerate在linux下反复多次枚举时(例如在python-can环境下)会重复枚举已经打开的设备,导致程序概率性崩溃的问题
修复multichannel_bmapi_demo.py例程收到报文后抛出BM_ERROR_QRCVEMPTY异常的问题
13BMAPI SDK v1.10.1.296
新增bmapi_cyclic_tx_task例程,用于演示如何使用BUSMUST特有的TXTASK API来进行周期性报文发送(例如网络管理报文)
新增multichannel_isotp_txrx_cpp例程,额外演示了如何同时通过多个通道来进行ISOTP(ISO15765)通信,例如通过UDS36服务来实现多通道并行刷写(需要使用不同的命令行参数启动两个实例来执行对发)
新增对python-can-4.0.0的支持(理论上支持更高的4.x.x版本)
新增python-can-xxxx/examples/ecu_uds_simulator例程,用于模拟一个ECU的UDS服务(是模拟ECU而不是模拟诊断仪)
新增若干API,用于支持离线配置/记录/回放相关功能,具体请查看BMAPI.CHM(需要X2R/X4R等新款设备的硬件支持)
小幅优化若干BMAPI的内部实现,提升稳定性,增加调试能力,优化效率
14BMAPI SDK v1.9.0.234
新增对VB.Net语言框架的支持,包括用于库导入的头文件,以及can_analyzer_vb例程,该例程的界面功能与can_analyzer_csharp等工程一致
恢复对Mingw编译器的支持,在Window系统下进行二次开发时,bin/mingw32及lib/mingw32文件夹用于mingw编译器,而bin/win32及lib/win32文件夹用于MSVC编译器
优化C#.Net以及VB.Net的若干库导入声明,包括BM_OpenEx/BM_SetRxFilters/BM_SetTxTasks,使这些API支持多个rxfilter/txtask对象实例,
(请注意这几个API在升级后与1.8版本稍有不兼容,仅影响C#.Net和VB.Net,且所需改动不大,具体请参考对应的example)
修复C#.Net的example点击Close无法真正关闭对应的硬件设备的问题
15BMAPI SDK v1.8.1.223
新增BM_ResetDevice API,用于重启整个USB设备,相当于重新插拔USB,请在阅读API文档后按需慎用
修复can_analyzer_csharp例程在未选中任何通道时点击Open按钮时报错的问题
封装新的GetName()函数,修复can_analyzer_csharp例程(以及其他调用BMAPI.cs的客户C#程序)通过BM_Enumerate获取到的通道名称尾部有乱码的问题
16BMAPI SDK v1.8.0.216
支持最新的八通道硬件设备X8PI
增加若干新的API,支持最新的支持离线报文录制播放的设备X4R,X2R
新增C++多通道并行接收例程multichannel_rx_cpp,演示如何进行高效率的报文接收
新增x8pi_spi_test例程,演示如何通过树莓派的40Pin接口来控制X8PI设备
BMAPI在linux上部分重构,CPU占用率大幅降低,对外接口保持不变
若干小问题修复
17BMAPI SDK v1.7.1.2022
支持Python2.7.18
Python-can新增send_multiple API以及对应的example,可以达到与C API一致的超高发送帧率,但是请注意这个API在python-can标准版本中并不存在
更新raspbian64平台的各个二进制文件
在python-can中自带了aenum package,避免新手第一次运行时出现找不到aenum的情况
更新udsoncan的download_hex_file例程,现已支持加载CANoe格式的security DLL来自动进行27解锁
7.0.19
Qt/C#/pyqt示例程序从此版本起支持多通道操作了,可在通道下拉列表中勾选需要的通道,同时可以通过独立的下拉框选择发送通道
新增演示基础接收操作的C/C++例程: bmapi_receive_only
新增演示基础发送操作的C/C++例程: bmapi_transmit_only
修复Unix系统下,同时打开多通道时,使用非首个通道发送数据时的卡死问题
修复udsoncan例程的UDS36服务实现中,首个请求的序号未从01开始的错误
优化python-can对多平台兼容性的自适应能力
增加在udsoncan中使用CANoe DLL进行UDS 27解锁的演示操作
6.0.18
修复1.5.4版本引入的远程帧无法实时发送的问题
Python-can创建bus对象时允许指定采样点位置(未指定则默认最常见的75%)
BM_ReadIsotp支持同时侦听指定的UDS Request ID和功能寻址地址
BM_ReadIsotp在上一次ISOTP会话意外中断时,尽量不影响下一次ISOTP的发起
修复BM_Reset在多线程环境频繁创建销毁的情况下句柄资源没有正确释放的问题
(仍然建议您在BM_OpenEx/BM_Close/BM_Reset时确保没有其他后台线程正在读写报文)
6.0.17 [Alpha]
新增BM_GetVersion接口,用于获取动态库(*.dll|*.so)的实际编译版本
新增BM_GetLogLevel和BM_SetLogLevel接口,用于配置动态库在Linux下的命令行调试信息输出等级,默认仅打印BM_LOG_ERR及更高,可通过配置为BM_LOG_NONE禁用全部调试信息输出用于量产环境
18BMAPI SDK v1.5.4.168
针对X1PRO和X1设备修正了BM_OpenEx时正在接收报文导致设备无法正确配置的bug
修正Debian下BM_ClearBuffer递归锁导致程序阻塞的问题
udsoncan增加example.run.sh作为启动器,客户朋友如需发布自己的程序也可基于此启动器简单修改
暂时移除问题较多的python-can的asyncio demo,待优化后重新发布
修正BM_WriteIsotp和BM_ReadIsotp的首个CF帧的序列号不对的问题
--------------------------------------
5.4.16以前的历史版本,变更记录位于Busmaster上位机安装包的changelist中。
--------------------------------------