如何在不使用VB脚本的情况下,通过命令提示符打开一个特定的CANoe配置?
是否有可能通过命令提示符打开特定的CANoe配置? 我尝试通过使用命令: 通过命令提示符打开sample.cfg之类的配置. C:\Users\Downloads\Sample>CANoe64 sample.cfg 使用此命令,我可以启动CANoe应用程序,但不能使用指定的配置. CANoe应用程序从默认配置开始. 解决方案 您可以简单地提及 C:\Users\Downloads\Sample>sample.cfg 这将打开独木舟注册版本中的配置.
12 2023-03-28
编程技术问答社区
带有字符串类型的CAPL关联数组
遵循这个 paper variables { char[30] translate[ char[] ]; } 它在纸张中完全相同.当我尝试将值投入此关联阵列时,问题来自.例如: on preStart { translate["hello"] = "hola"; } 给我一​​个编译错误:"错误1112在(89,23):操作数类型不兼容" 我做错了什么? 版本:我正在使用 vector capl浏览器 canalyzer版本11.0 sp2 解决方案 与关联字段(所谓的映射),您可以在不使用过多内存的情况下执行1:1将值分配给其他值.关联字段的元素是键值对,从而通过键快速访问值. 关联字段以与正常字段类似的方式声明,但键的数据类型以方形括号写入: int m[float]; // maps floats to ints float x[int64]; // maps int64s to floats c
22 2023-01-18
编程技术问答社区
如何在CANoe/CAPL中包含一个.h或.dll文件
我希望将标题.h或.dll文件集成在CAPL(concretly visa32.dll,visa.h或sicl.h)中以控制万用表34461a.如何将.h文件或.dll文件包含在独木舟中? 我创建了一个称为万用表的ECU模块.谢谢, 解决方案 包括CAPL中的外部DLL是可能的,但是您需要为要使用的所有功能创建一个包装器. 看一下具有此类包装器的Directorty.这是一个MSVC项目,导出了一些简单的功能,例如int f(int a, int b) {return a+b;}. 您需要要做的是将库文件(visa32.dll,visa.h)添加到此capldll项目中,并为您要从独木舟调用的所有功能定义包装器.例如,如果您在Visa32.dll中具有int visa_init(double arg),则将创建一个包装器: int CAPLEXPORT far CAPLPASCAL capl_visa_init(double arg) { return
28 2022-10-30
编程技术问答社区
使用CAPL在不断循环中运行Blf文件进行仿真
我想使用 CANalyzer 中的重播块运行 .blf 文件.我想在一个恒定循环中运行这个文件以进行仿真.是否可以使用 CAPL,或者即使没有 CAPL,也可以有人指导我如何做到这一点. 解决方案 循环回放日志文件不需要 CAPL. 右键单击重播块 在“常规"选项卡中,启用“重复输出发送模式"
402 2022-08-15
编程技术问答社区
如何通过CAPL访问.dll文件?
我已经尝试了以下代码. 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} }; 对于此代码,我收到“解析错误".我该如何解决?我需要包含一个头文件吗? 解决方案 为了让 CAPL 编译器和 CAPL 浏览器能够识别 DLL,您必须将其链接到 CAPL 程序.为此,您可以在 CANoe 的选项对话框中输入 DLL.在这种情况下,您拥有的所有 CAPL 程序都可以使用 DLL.另一方面,您可以使用 #pragma library 命令在 CAPL 程序的包含部分中输入 DLL.在这种情
896 2022-08-09
编程技术问答社区
CAPL-将4个原始字节转换为浮点数
CAPL - 向量. 我收到包含当前信息的消息 ID 0x110: 0x3E6978D5 -> 0.228 目前我可以使用以下方法读取数据并保存到环境变量中以显示在面板中: putValue(slow_current, this.long(4)); 但我不知道如何将 HEX 4 字节转换为浮点变量,因为我不能使用地址或强制转换 (float* x = (float *)&vBuffer;) 如何在 CAPL 脚本中进行这种转换?谢谢. 解决方案 通常,您的 dbc 文件应包含从原始值(在您的情况下为 4B 长)到因子和偏移定义形式的物理值的转换信息: 因此,您的电流物理值应计算如下:phys_val = (raw_value * factor) + offset 注意:如果您定义负偏移量,那么您实际上是在上面的等式中减去它. 但您似乎没有 dbc 文件,因此您需要自己计算因子和偏移量(如果您有 2 个示例原始值并知道它们的物理
464 2022-08-09
编程技术问答社区
linUpdateResponse与Output-How are they different for LIN simulated nodes?
在LIN模拟从节点中,output和linUpdateResponse有什么区别? 来自 output 文档: To reconfigure response data of LIN frame. In that case RTR selector has to be set to 0. The LIN hardware responds to the next request of the specified frame with the newly configured data. 所以,我可以重新配置输出,下次(真的?)硬件应该会说我已经成功覆盖了它,对吧? 来自 linUpdateResponse 文档: Updates the response data of a specific LIN frame. 让我设置特定帧 ID 的数据长度 (dlc) 和数据内容. 它们有何不同?是否有可用示例?我不太明白如何在提供的示例中使用后者. 解决方案
262 2022-08-09
编程技术问答社区
CAPL中的日志写输出到文件
有没有一种简单的方法可以将我写入的内容写入写入窗口并将其记录到文件中?或者我是否需要手动单独创建一个字符数组并打开一个文件以将 char[] 写入?我希望至少能够使用正则表达式写入文件,但我没有从文档中找到太多有用的信息. 解决方案 看起来 writeToLogEx(char format[], ...) 可以做我想做的事,但它会输出到测量设置中的 Logging Block.因此,如果我不设置通道块,我将拥有一些我不想要的页眉和页脚数据以及 CAN 流量. 向量的例子: char timeBuffer[64]; getLocalTimeString(timeBuffer); writeToLogEx("===> %s",timeBuffer); 正则表达式选项: "%ld","%d" decimal display "%lx","%x" hexadecimal display "%lX","%X" hexadecimal display (upper case)
702 2022-08-09
编程技术问答社区
如何用CAPL读取csv中的浮点?
我有一个.csv文件,我想以其格式读取数据,而不是字符串. 如果可以,这是将文件保存在读取器中的函数. fileGetString(readbuffer,elcount(readbuffer),readHandle)!=0) 我的数据以这种格式: Temperature;12.25;15.65;-25.12;80; Time;1;2;4;7; 我想在缓冲区" Temperature[i]"中节省温度 并在时间" Time[i]"的时间上做同样的事情 我该如何在CAPL中执行此操作? 我知道我可以读取每个数据,例如字符串并铸造到整数或float执行某些操作,但是我想优化代码并以其格式读取每个数据. 解决方案 您可以使用strtod()将字符串转换为浮点数. 只是为了娱乐,这是完整的示例: on start { dword fh; char text[255]; double Temperature[4], Time[4]; int
76 2022-08-09
编程技术问答社区
CAPL编程使用定时器作为延迟
我一直在编写一个 CAPL 脚本,该脚本会在一定延迟后在每个频道(2 个否)上发送消息.我想使用 SetTimer() 和 mstimer::isRunning 函数生成以下延迟.我可以使用 setTimer 函数,但我不知道如何使用 mstimer::isRunning.代码如下: Variables{ message * temp = {DLC=8}; mstimer timer1; } on timer timer1{ //Do nothing } onstart{ for(noofChannel=1;noofChannel
3564 2022-08-09
编程技术问答社区
从Python中调用CAPL函数
我正在研究 CANalyzer,但我找不到如何调用包含参数的 CAPL 函数.如果我把 num 放在 functions_call.Call(num) 里面就不行了. def call(num): print 'calling from CAN' x=int(num) functions_call.Call() return 1 解决方案 前段时间我遇到了类似的问题,通过谷歌搜索,我找到了 Vector 的以下应用说明: http://vector.com/portal/medien/cmc/application_notes/AN-AND-1-117_CANoe_CANalyzer_as_a_COM_Server.pdf ...结帐部分“2.7 调用 CAPL 函数". 总而言之,确保将 CAPL 函数的参数声明为“long",例如:以下似乎对我有用: void function1(long l) { write("f
982 2022-08-09
编程技术问答社区
使用CAPL和CANalyzer在按下按钮时发送周期性的CAN信号
我正在尝试将一组 CAN 帧发送到 CAN 总线.我使用 CAPL 进行编程,使用 CANalyzer8.5 进行模拟,使用面板设计器创建按钮.我的要求是首先使用 PANEL 设计器创建一个按钮.只有在按下按钮时,它才会开始向总线发送周期性的 CAN 帧.我对如何实现它有点困惑.到目前为止,我已经设法使用 CAPL 编写了两个单独的程序.第一个程序在启动时定期发送数据.按下按钮时,第二个代码仅发送一次数据.我想合并两个代码以在按下按钮时开始定期发送. 第一个代码 /*@!Encoding:1252*/ includes { } variables { msTimer mytimer; message 0x100 A={dlc=8}; message 0x200 B={dlc=8}; message 0x300 C={dlc=8}; message 0x400 D={dlc=8}; } on start { setTimer(mytimer,50); }
1020 2022-08-09
编程技术问答社区
计时器是否在运行,而循环是活动的?
这是我的代码: setTimer(delay, (SEEDKEY_MAXTRY * SEEDKEY_FREQ) + (LOGIN_MAXTRY * LOGIN_FREQ)); do { // waits, until all operations have been executed; } while(isTimerActive(delay)); 我确切地知道执行我的命令需要多长时间,所以我将计时器 delay 设置为显式值.我必须等待,直到我返回一些值. 模拟卡在这一点上,我的面板进入 Windows-“无响应",我可以结束模拟的唯一方法是通过任务管理器. 我认为唯一的解释是,当我在 do ... while 语句中时,计时器需要更多时间,或者根本不执行.(与 while {} 相同) 有人可以证实这个想法,或者通过给我一个解决我的问题来证明我错了吗? 解决方案 好吧,我总能找到解决方法,因为 CAPL 在 stackoverflow 上不太
182 2022-08-09
编程技术问答社区
CAPL中除了testwaitfortimeout()之外的延迟函数
我有一个控制 GPIB 电源的 CAPL 测试节点.该 CAPL 生成一个每 3 ms 修改一次的信号.我的 CAPL 如下所示: ... testcase wavGenerator() { GPIBWrite(myDevice, "VOLT", voltValue); testwaitfortimeout(3); ... } 问题是这个 testwaitfortimeout() 函数会在测试报告中生成一个注释,并且由于我对每个测试用例使用这个函数 2000/3000 次,我以一个巨大的测试报告结束. 我已经尝试实现一个函数来生成像 waitfortimeout() 那样的“延迟",如下所示: void delay(int ms) { float refTime; refTime = timeNowFloat(); while(timeNowFloat()
3542 2022-08-09
编程技术问答社区
使用CAPL在CANoe中通过ISO-TP(传输协议)传输数据
将 CAPL 与 CANoe 结合使用,通过 CAN 上的 ISO-TP 传输大量数据.是否有一个例程可以处理嵌入在 CAPL 中的数据分段,还是我需要编写自己的解释? 解决方案 看看 OSEK_TP CANoe 演示.它展示了如何通过 ISO-TP(传输协议,ISO 15765-2)传输和接收数据.有关实现细节,请参阅 nodeA.can 文件和 OSEL_TP API 参考. 这是最小的例子: 创建和配置连接: long handle; handle = CanTpCreateConnection(0); // 0 = Normal mode CanTpSetTxIdentifier(handle, 0x700); // Tx CAN-ID CanTpSetRxIdentifier(handle, 0x708); // Rx CAN-ID 发送数据: BYTE data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
618 2022-08-09
编程技术问答社区