如何使用 CAPL 连续监控 CAN 信号?
How to monitor a CAN signal continuously using CAPL?
有一个名为 'A' 的信号,它从 0 到 20 次指定的出现次数。信号计数到 20 次后将重置为 0。每次发生的时间间隔为 20 毫秒。
我需要监听这个信号A 200次。每当计数器跳过一个值时,例如:0,1,4,5..20,我需要存储该特定实例。有没有办法做到这一点? CAPL 中是否有任何命令可以在计数器信号 A 发生变化时捕获它的值?
当 运行 在测试节点中时,有多种方法可用于对信号做出反应。
他们的名字都以testWaitForSignal
开头。您可以简单地查看 CANoe 的文档以了解详细信息。
对于您的特定用例,您可以使用
testWaitForSignalMatch(<signal>, <expectedValue>, 20)
调用最迟会在 20 毫秒后 return。 return 值将是 1
,这意味着 信号在 20 毫秒内具有预期值 或 0
,这意味着 信号在 20ms.
内没有预期值
当 运行 在 simulation/measurement 节点中时,不可能 等待 ,因为那样会阻止模拟。
您可以在这些节点中做的是创建一个事件处理程序,例如
on signal_change <signal>
在此事件处理程序中,您可以使用 $<signal>
访问信号值。
可以通过调用 timeNowNS()
.
获取当前时间戳
使用此信息,您可以在模拟节点中实现您的逻辑。
有一个名为 'A' 的信号,它从 0 到 20 次指定的出现次数。信号计数到 20 次后将重置为 0。每次发生的时间间隔为 20 毫秒。 我需要监听这个信号A 200次。每当计数器跳过一个值时,例如:0,1,4,5..20,我需要存储该特定实例。有没有办法做到这一点? CAPL 中是否有任何命令可以在计数器信号 A 发生变化时捕获它的值?
当 运行 在测试节点中时,有多种方法可用于对信号做出反应。
他们的名字都以testWaitForSignal
开头。您可以简单地查看 CANoe 的文档以了解详细信息。
对于您的特定用例,您可以使用
testWaitForSignalMatch(<signal>, <expectedValue>, 20)
调用最迟会在 20 毫秒后 return。 return 值将是 1
,这意味着 信号在 20 毫秒内具有预期值 或 0
,这意味着 信号在 20ms.
当 运行 在 simulation/measurement 节点中时,不可能 等待 ,因为那样会阻止模拟。
您可以在这些节点中做的是创建一个事件处理程序,例如
on signal_change <signal>
在此事件处理程序中,您可以使用 $<signal>
访问信号值。
可以通过调用 timeNowNS()
.
使用此信息,您可以在模拟节点中实现您的逻辑。