PEAK System公司的APIs PCNA _UDS中的C#实例无法打开问题解决办法


1. 问题描述


官网下载要使用的API后,直接打开Samples文件夹中的C#例程,然后运行,发现报如下错误:
在这里插入图片描述

按照提示,将Win32文件夹中的PCAN-UDS.dll文件拷入例程的bin->Debug文件夹,运行,发现又报如下错误:
在这里插入图片描述 检查函数调用,参数使用的没有错:
在这里插入图片描述

运行环境配置也没错:
在这里插入图片描述

至此,问题描述完了,要解决这个问题,还是得详细看看文档了。


2. 真因查找


在API包里有一份API使用说明文档 PCAN-UDS-API_UserMan_eng,参看其2.1节 “Understanding PCAN-UDS”中的描述:

UDS代表统一的诊断服务,是汽车行业的通信协议。这个规范在ISO 14229-1:2006中进行了描述。
UDS协议是其他3种标准化诊断通信协议的结果:

  • ISO 14230-3,即关键字2000协议(KWP2000)
  • ISO 14229-1:2006,CAN诊断
  • ISO 15765-2,即ISO-TP

该协议的想法是联系安装的所有电子数据单元并在汽车中相互连接,以提供维护,检查错误,实现固件等UDS是面向客户端/服务器的协议。
在UDS会话(诊断会话)中,计算机上的程序应用程序构成客户端(在UDS内称为客户端)测试人员),服务器已经过测试,并且有从客户端到诊断请求服务器称为服务。客户端始终以一个请求开始,而此终止以一个来自服务器(ECU)的肯定或否定响应。
由于使用国际标准ISO-TP完成了UDS的运输协议用于通过CAN总线发送数据包的最大数据长度可以是在单个数据块中传输的是4095字节。
PCAN‐UDS API是基于CAN标准的UDS的实现。 物理通信是通过PCAN-ISO-TP和PCAN-Basic API(来自PEAK-System的免费CAN API)通过PCAN硬件(PCAN-USB,PCAN-PCI等)进行的。 因为这是必要的,所以还需要在打算使用UDS的工作计算机上提供PCAN-ISO-TP和PCAN-Basic API(PCAN-ISO-TP.dll和PCANBasic.dll)。 PCAN-UDS,PCAN-ISO-TP和PCAN-Basic API免费提供给所有购买PCAN硬件的人员。

描述中很关键的一句:
“物理通信是通过PCAN-ISO-TP和PCAN-Basic API(来自PEAK-System的免费CAN API)通过PCAN硬件(PCAN-USB,PCAN-PCI等)进行的。 因为这是必要的,所以还需要在打算使用UDS的工作计算机上提供PCAN-ISO-TP和PCAN-Basic API(PCAN-ISO-TP.dll和PCANBasic.dll)。”

通过下面这张图也可以理解:
在这里插入图片描述

所以,问题的真因就很显而易见了,因为UDS属于上层协议,UDS报文的传输层依赖TP的dll文件,物理层依赖Basic的dll文件,所以只要将这两个dll文件添加上,问题就可以解决了。


3. 解决方案


在官网下载PCAN-Basic APIPCAN-ISO-TP API,将加压后的PCANBasic.dllPCAN-ISO-TP.dll文件拷入例程的bin->Debug文件夹,然后再运行。

成功运行,界面如下:
在这里插入图片描述




参考资料
【1】PCAN-UDS-API_UserMan_eng.pdf
【2】PEAK System公司Software&APIs下载地址

猜你喜欢

转载自blog.csdn.net/Allen_Spring/article/details/107219795