是否可以从命令提示符和/或使用任何其他外部脚本启动和运行 Vector CANoe?
我在 Vector CANoe 中开发了 CAPL 脚本,我需要定义几个返回文本字符串的函数。在 C 中,我会这样写:
char * ErrorCodeToMsg(int code)
Run Code Online (Sandbox Code Playgroud)
或者
char [] ErrorCodeToMsg(int code)
Run Code Online (Sandbox Code Playgroud)
在 CAPL 中,两个定义都失败并带有parse error
. 到目前为止,我想出的唯一可行的解决方案是:
variables {
char retval[256];
}
void ErrorCodeToMsg(int code) {
char [] msg = "Hello word";
strncpy(retval, msg, 256);
}
Run Code Online (Sandbox Code Playgroud)
当然这很丑陋,因为每次调用都ErrorCodeToMsg
需要两条语句而不是一条语句。有没有更好的办法?
我是Can Access编程语言的新手.在某些文档中,CAPL被描述为脚本.任何人都可以解释,为什么它被称为脚本?是编程还是脚本?
我想在 CAPL(具体来说是 Visa32.dll、visa.h 或 sicl.h)中集成一个头文件 .h 或 .dll 文件来控制万用表 34461A。如何在 CANoe 中包含 .h 文件或 .dll 文件?我创建了一个名为万用表的 ECU 模块。谢谢,
使用 CAPL 和 CANoe 通过 CAN 上的 ISO-TP 传输大量数据。是否有例程可以处理嵌入在 CAPL 中的数据分段,还是我需要编写自己的解释?
我对 CAPL 语言还很陌生。因此,我在将数据写入 .txt 文件时遇到问题。这是我写的代码:
\n\n includes\n{\n\n}\n\nvariables\n{\n message Generate_Num Gen;\n message Logger Logs;\n msTimer tim_100ms;\n msTimer tim_500ms;\n int time_over; // 500 ms flag.\n dword handle=0;\n float val=0;\n long index=0;\n int val_arr[512];\n}\n\non start \n{\n time_over=0; \n setWritePath("C:\\\\Users\\\\T\xc3\xbcrker\\\\Desktop\\\\soft_pro");\n handle= openFileWrite("Log.txt",1);\n Gen.Num_Data=1;\n}\n\non envVar Logger_Sw\n{ \n\n if(@this)\n {\n setTimer(tim_500ms,500);\n setTimer(tim_100ms,100);\n }\n else\n {\n cancelTimer(tim_500ms);\n cancelTimer(tim_100ms);\n }\n\n}\n\non envVar Save_txt\n{ \n if(@Save_txt==1)\n {\n int i;\n float val_n;\n for(i=0;i<elcount(val_arr);i++)\n {\n val_n=val_arr[i];\n writeProfileFloat("1","1",val_n,"Log.txt");\n }\n } \n}\n\non timer tim_100ms\n{\n output(Gen);\n Gen.Num_Data++; \n setTimer(tim_100ms,100);\n}\n\non message Generate_Num\n{\n if(time_over==1)\n {\n val=this.Num_Data;\n val_arr[index]=val; …
Run Code Online (Sandbox Code Playgroud) 我是 CANoe 和 CAPL 语言的新手。但是我想问你:我怎样才能在ECU的网络上用CAPL发送消息。例如:我想发送一个十六进制数(这是一个 ECU 的问题),然后我想看到这个问题的回答。
我不知道我是否很清楚,但如果您有任何答案,我将不胜感激。
我正在使用CANalyzer,但找不到包含参数的CAPL函数的调用方法。如果我放不num
进去functions_call.Call(num)
。
def call(num):
print 'calling from CAN'
x=int(num)
functions_call.Call()
return 1
Run Code Online (Sandbox Code Playgroud) 我正在用CAPL编写一个程序(基于C并减去一些概念)来将包含以科学记数法显示的数字的字符串转换为浮点数(不一定要是浮点数,但我认为它是一个合适的类型为了这).例如:
-7.68000000E-06应转换为-0.00000768
我已经做了一些寻找这个并且atof()
出现了很多,但CAPL不支持这个,所以我不能使用它.
CAPL中不支持的其他C概念的列表:
更新:感谢大家的帮助.M. Spiller的答案被证明是最简单的解决方案.我接受了这个答案.