我想在CAPL中集成一个头文件.h或.dll文件(具体是Visa32.dll,visa.h或sicl.h)来控制万用表34461A . 如何在CANoe中包含.h文件或.dll文件?我创建了一个名为万用表的ECU模块 . 谢谢,
在CAPL中包含外部DLL是可能的,但是您需要为将要使用的所有函数创建一个包装器 .
看看 \CANoe\Demo_AddOn\Capldll directorty,其中包含这样的包装器 . 这是一个MSVC项目,将一些简单的函数导出到CAPL,如 int f(int a, int b) {return a+b;} .
\CANoe\Demo_AddOn\Capldll
int f(int a, int b) {return a+b;}
您需要的是将库文件(Visa32.dll,visa.h)添加到此Capldll项目中,并为要从CANoe调用的所有函数定义包装器 . 例如,如果您在Visa32.dll中有 int visa_init(double arg) ,则会创建一个包装器:
int visa_init(double arg)
int CAPLEXPORT far CAPLPASCAL capl_visa_init(double arg) { return visa_init(arg); }
您还需要将函数的原型添加到导出表:
CAPL_DLL_INFO CAPL_DLL_INFO_LIST[] = { {"my_visa_init", (CAPL_FARCALL)capl_visa_init, 'D', 1, "F", "\000"}, .... {0,0} };
一旦成功构建了包装器DLL(如果重用该示例,它将被称为capldll.dll),您需要在CANoe中导入它,并且您将能够通过在导出表中定义的名称来调用该函数 . ,例如 my_visa_init(1.0);
my_visa_init(1.0);
CAPL不是C.您不能包含.h文件 .
最简单的方法是通过GPIB总线控制万用表 . 看一下CAPL GPIB库 .
2 回答
在CAPL中包含外部DLL是可能的,但是您需要为将要使用的所有函数创建一个包装器 .
看看
\CANoe\Demo_AddOn\Capldll
directorty,其中包含这样的包装器 . 这是一个MSVC项目,将一些简单的函数导出到CAPL,如int f(int a, int b) {return a+b;}
.您需要的是将库文件(Visa32.dll,visa.h)添加到此Capldll项目中,并为要从CANoe调用的所有函数定义包装器 . 例如,如果您在Visa32.dll中有
int visa_init(double arg)
,则会创建一个包装器:您还需要将函数的原型添加到导出表:
一旦成功构建了包装器DLL(如果重用该示例,它将被称为capldll.dll),您需要在CANoe中导入它,并且您将能够通过在导出表中定义的名称来调用该函数 . ,例如
my_visa_init(1.0);
CAPL不是C.您不能包含.h文件 .
最简单的方法是通过GPIB总线控制万用表 . 看一下CAPL GPIB库 .