博客
本文目录
二次开发教程
本站所有技术文档均为虹科技术工程师所编写和更新,如果您发现任何错误,欢迎扫码下方二维码联系我们进行更正,万分感谢。
如果您需要定制的项目服务或教程培训,请联系虹科获取报价
1. 适用硬件
- PCAN-USB(IPEH-002021/IPEH-002022)
- PCAN-USB FD(IPEH-004022)
- PCAN-USB Pro FD(IPEH-004061)
- PCAN-USB X6(IPEH-004062/IPEH-004063/IPEH-004064)
- PCAN-PCI(IPEH-002064/IPEH-002065/IPEH-002066/IPEH-002067)
- PCAN-PCIe(IPEH-003026/IPEH-003027)
- PCAN-PCIe FD(IPEH-004026/IPEH-004027/IPEH-004040)
- PCAN-miniPCIe FD(IPEH-004045/IPEH-004046/IPEH-004047)
- PCAN-miniPCI(IPEH-003045/IPEH-003046/IPEH-003047)
- PCAN-miniPCIe(IPEH-003048/IPEH-003049)
- PCAN-M.2(PCIe)(IPEH-004083/IPEH-004084/IPEH-004085)
虹科PEAK系列所有型号的PCAN卡
2. 适用环境与下载地址
- Windows®11(x64/ARM64)、10(x64):https://peak-system.com.cn/development/
- Linux:peak-system.com/linux(仅支持PCAN-Basic API)
3. 使用前提
驱动
链接:https://peak-system.com.cn/driver/
(全选)
API关系
DLL文件位置
- 使用dll文件的时候,可以选择(非必须这样做)把dll文件拷贝到如下位置,方便调用。
- 32位系统:
- 32BitDLLs>Windows\system32
- 64位系统:
- 32bitDLLs>Windows\syswow64
- 64bitDLLs>Windows\system32
- 参考来源:http://en.wikipedia.org/wiki/WoW64
任何通信相关问题建议在PCAN-View或PCAN-Explorer6测试无误后再转移至PCAN-API进行开发
任何程序相关的不确定性可以通过官方例程进行验证:
4. 例程问题
所有的API开发包中均包含例程讲解,不同开发包包含的例程不同(C#、Python、Java、C/C++等,实际以开发包内容为准)
特别说明:PCAN-BasicAPI的Labview例程需要额外收费,包含PCAN-BasicAPI中所有函数接口,请联系虹科获取!
5. API开发流程
本说明以PCAN-BasicAPI进行说明
请结合API开发包中的API帮助文档(PCANBasic_enu.chm)
连接设备
PCAN通道:PCAN-BasicAPI中对于USB接口和PCI/PCIe接口的设备分别开辟了16个PCAN通道,也就是说一台上位机最多可连接16个USB接口的PCAN和16个PCI/PCIe接口的PCAN板卡。详情请参考API帮助文档中PCANHandleDefinitions
PCAN波特率:
- CAN的波特率为API中的枚举值,可以直接调用。详情请参考API帮助文档中TPCANBaudrate
- CANFD的波特率为一个字符串,该字符串指明对应CANFD的仲裁域和数据域的波特率。详情请参考API帮助文档中TPCANBitrateFD。可以先在PCAN-View中设置好波特率,然后想内容复制出来,直接作为API中的CANFD波特率参数,如下图:
- 连接设备即为设备初始化,对应API中的函数为CAN_Initialize和CAN_InitializeFD,单次初始化为初始化一个PCAN通道,与具体型号的设备无关。其中,除了区分硬件类型外,相同类型的硬件通过插入PC的顺序判断初始化通道的顺序,多通道的硬件通过通道编号顺序来判断初始化通道的顺序。
发送报文
对应API中函数CAN_Write和CAN_WriteFD,每次调用发送一帧报文,周期发送需要结合Timer等处理方式,以下几点需要注意:
参数TPCANMsgFD中的报文长度为DLC而不是Length,详情请参考API帮助文档中TPCANMsgFD
参数TPCANMessageType为报文类型,其中CANFD的BRS开关需要单独设置,详情请参考API帮助文档中TPCANMessageType
接收报文
对应API中函数CAN_Read和CAN_ReadFD,每次调用函数会从硬件的缓存中读取最早的一帧,也就是缓存队列的队头,缓存容量为32767帧。
建议:接收报文可以通过检查TPCANStatus是否为PCAN_ERROR_QRCVEMPTY来判定缓存队列是否为空,详情请参考API帮助文档中CAN_Read和CAN_ReadFD
记录报文
对应API中函数的CAN_SetValue,详情请参考API帮助文档的TPCANParameter
断开连接
断开连接即为设备去初始化,详情请参考API帮助文档中CAN_Uninitialize
总线状态处理
总线状态监控:对应API中函数CAN_GetStatus,主要检测总线状态是否正常、高负载、宕机等
总线状态复位:通过CAN_SetValue函数中传参PCAN_BUSOFF_AUTORESET设置,而CAN_Reset只是清除对应通道的收发缓存队列。当然,也可以通过CAN_Reset+断开重连完成总线复位
错误帧处理
通过传参PCAN_ALLOW_ERROR_FRAMES打开错误帧接收,错误帧对应具体情况见API帮助文档中ErrorFrames
报文过滤
对应API中函数CAN_FilterMessages,其中参数TPCANMode可选择标准帧或扩展帧, 该函数可以多次调用,详情请参考API帮助文档中CAN_FilterMessages
数据库加载
开发包中暂无现成DBC数据库加载接口