CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货

发布于 2023-5-8 12:06
浏览
0收藏

生得再平凡,也是限量版。


大家好,我是小七

  • 最近发现很多朋友还是不会用DLL,今天再细分下,也给自己温习下。


以USB串口通信为例,生成DLL并被CAPL调用


  • #pragma library("File path"),CAPL调用(推荐,参数接口自建,灵活运用)

CAPL调用的DLL DEMO路径

2.1.1 此方法灵活性高,自己建立函数

打开
Vector安装地址的CAPLdll文件夹,选择合适的VS工程

  • VS 2017 Project 生成的平台是 64版本
  • VS 2013 Project 生成的平台是 32版本

CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区

2.1.2 这里有一个快速查找的方法,点击Open Folder打开CAPLdll文件夹

CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区

2.1.3 找到CAPL_DLL_INFO4,了解参数作用

typedef struct CAPL_DLL_INFO4{  
char              cdlName[MAX_CDL_NAME2];        // 在CAPL中调用时显示的函数名  
CAPL_FARCALL      adr;                           // 函数地址,即vs工程中函数定义时的函数名  
const char*       categoryName;                  // 函数在CAPL中的所属目录,可以用于对函数的分类  
const char*       hintText;                      // 对该函数功能的描述介绍(在CAPL中显示)  
char              resultType;                    // 函数的返回值类型,用CAPL中的类型的首字母大写去表示 
int               parCount;                      // 函数的参数个数  
char              parTypes[MAXCAPLFUNCPARS_8_1]; // 函数的参数类型,用CAPL中的类型的首字母大写去表示  
unsigned char     array[MAXCAPLFUNCPARS_8_1];    // 函数的参数是否是数组:\001表示是数组;\000表示不是数组。默认则为\000  
const char*       parNames[MAXCAPLFUNCPARS_8_1]; // 函数显示的参数名(在CAPL中的声明介绍时)} 
CAPL_DLL_INFO4;


CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区

CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区

2.1.4 如下代码例子:

1. 首先用串口助手把USB控制器调试OK(发命令使其动作)


2. 在USB代码(网上搜的免费代码)里找到串口初始化,关闭串口,发命令函数,如下图:


CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区

3. 把USB的源函数包装成CAPL能识别的函数类型

CSerialPort mySerialPort;//首先将之前定义的类实例化
int CAPLEXPORT far CAPLPASCAL OpenSerialPort(int Port)
{
int result;
if(mySerialPort.InitPort(Port, CBR_57600, 'N', 8, 1, 0x0001) == 1)
 {
 result = 1;
  }
   else
   {
   result = 0;
   }
   return result;
  }
  void CAPLEXPORT far CAPLPASCAL CloseSerialPort()
  {
  mySerialPort.ClosePort();
  }
  void CAPLEXPORT far CAPLPASCAL OutputOrder(char pData[],  int length)
  {
  mySerialPort.WriteData(pData, length);
  }

6. 最后把函数放进CAPL要调用的结构体里

CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区

2.1.5 生成解决方案->Debug中capldll.dll->capldll_voltage.dll

CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区

CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区

2.1.6 最后在CAPL调用:#pragma library("File path"),创建函数CloseSerialPort(),OpenTheOutput()。就可以用于自动化测试中了

CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区


CANoe-如何用CAPL调DLL方式控制USB串口上下电/调电压,免费干货 -汽车开发者社区

总结

  • 除了控制USB串口,还可以用于其他通信串口
  • 可以自行封装函数,解锁等


文章转载自公众号:总线网络

分类
1
收藏
回复
举报
回复
相关推荐