我尝试使用CANalyzer的COM接口强制CAN信号到给定值。由于没有COM方法来发送CAN消息,我使用CAPL实现了一种解决方法:
void SendMySignal(int value) {
message MyMessage msg;
msg.MySignal = value;
output(msg);
}
这很好用,但是由于MyMessage
和MySignal
在这里被静态引用(按名称),我必须实现N个函数才能发送N个信号(或者N个-way switch语句等)。有没有办法通过字符串避免消息中的麻烦和访问信号?像这样:
void SendSignal(int MessageID, char SignalName, int value)
如果我错过了COM界面中的某些内容,我也会接受其他解决方案。如果有一个只适用于CANoe的解决方案,我可以向我的老板索取许可证,但我当然不愿意这样做。
答案 0 :(得分:1)
有这样的功能,但仅限于在测试节点中使用
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("the_map_type", mapTypeSelected);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
savedInstanceState.get("the_map_type");
}
您可以在以下网址找到详细信息:
CAPL功能概述»测试功能集/信号访问»SetSignal 特殊用例:测量开始前未知信号
并注意不要为每个信号发送新消息以避免总线过度泛滥。在我看来,为整个消息设置所有信号是一种更好的方式,并且只有当它不是循环时才发送。循环消息中的信号更新大多数必须在下一个周期发送。