【问题标题】:CAPL for writing to file not working in offline mode用于写入文件的 CAPL 在离线模式下不工作
【发布时间】:2019-10-04 12:39:34
【问题描述】:

我编写了一个简单的 CAPL 程序来将数据输出到文件。

离线模式下执行模拟时,文件上不会打印任何内容。我无法在在线模式下对其进行测试。我不明白为什么。

脚本在主分支上在线/离线切换之后立即放入测量设置中。我正在使用 CANoe。

/*@!Encoding:1252*/
includes
{

}

variables
{
    dword fileHandle;
    char buffer[1024];
}

on preStart
{
    setFilePath("mypath");
    fileHandle = openFileWrite("file.txt", 2);
}

on stopMeasurement
{
    fileClose(fileHandle);
}

on linFrame someFrame
{
    snprintf(buffer, elcount(buffer), "somestring %d", somevalue);
    filePutString(buffer, elcount(buffer), fileHandle);
}


【问题讨论】:

  • 您在离线模式下使用哪些日志文件作为源?它们是否包含预期的 LIN 帧?另外,模拟设置中没有在线/离线切换,我假设您在谈论测量设置,对吧?
  • 我正在使用我知道包含预期 LIN 帧的日志文件(我也在处理转换为 ascii 的同一日志,我可以看到这些帧)。那天早些时候我自己拿了日志文件。这与使用离线模式时键盘输入在模拟中似乎被忽略的事实相吻合(并且 CANoe 在测量设置中不提供重放块,除了离线开关一)。我也修改了问题,你说得对。

标签: capl canoe


【解决方案1】:

如果我很快使用filePutString(buffer, elcount(buffer), fileHandle);,我会遇到缓冲区大小问题并且程序崩溃。

使用WriteLineEx(file_link, type_of_logging, out_string) 就像一个魅力。

【讨论】:

  • 嗯,这可能与缓冲区无关,而与填充缓冲区的方式有关。你是不是放了太多的字符?尝试正确格式化您的代码,欢迎使用 SO。
  • 在任何情况下,我的代码都不会崩溃并且可以在在线模式下工作,但不能在离线模式下工作。您是如何在回答中解决这个问题的?
【解决方案2】:

很遗憾,但是The Simulation Setup is not active in offline mode. Test Setup is not displayed.

取自帮助文档:Measurement Setup >> Online/Offline Mode >> Offline

【讨论】:

  • 我使用的不是测试设置,而是测量设置上的可编程节点。如果我在 CAPL 代码中添加 write() 条件,我会在写入窗口中看到输出。如果我要求它写入文件,我看不到这种情况发生。
猜你喜欢
  • 1970-01-01
  • 2018-08-13
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多