VXT文件解(二)

上次的解析没有描述清楚消息(message)、信号(signal)在这个xml格式中具体是如何定义的。

下面来详细分析一下。在这个路径下面有详细说明Test Feature Set » XML » Parameters

翻译过来就是:在checks定义中,变量(variable)、测试函数(test function)、控制函数(control function)、各种消息(message)、信号(signal)、环境变量(environment variable)是需要的。但是他们基本都是一样定义的。

<cansignal name="Signal name" msg="Message name" node="Node name" bus="Bus name">Value</cansignal>
<linsignal name="Signal name" msg="Message name" node="Node name" bus="Bus name">Value</linsignal>

相关消息的名称(name)、节点名称(node)、或总线名称(bus name)只有当无法唯一解析的时候才需要。即这些信息在相关联的dbc中只要有一个或两个就可以定位到这个 消息的时候,就不用把全部的信息列出来。

这个信号定义的Value可以使数字,变量或枚举值。还可以增加xml格式的元素来定义的更清楚。相应的语法见下面:

1、

<eq>number</eq>

信号的值(Value)必须等于这个值(number),浮点值不能用这个来进行测试。

2、

<ne>number</ne>

信号的值(Value)必须不等于这个值(number)

3、

<lt>number</lt>

信号的值(Value)必须小于这个值(number)

4、

<gt>number</gt>

信号的值(Value)必须大于这个值(number)

5、

<le>number</le>

信号的值(Value)必须小于等于这个值(number)

6、

<ge>number</ge>

信号的值(Value)必须大于等于这个值(number)

7、

<range>
   <from>number</from>
   <to>number</to>
</range>

信号的值(Value)必须在这两个值之间(number)

8、

<range>
   <base>...</base>
   <down_tolerance mode="absolute|relative">...</down_tolerance>
   <up_tolerance mode="absolute|relative">...</up_tolerance>
</range>

信号的值(value)必须在这个范围内(base - down_tolerance) <= value <= (base + up_tolerance).

mode为absolute时,就直接是值;mode为relative时,里面写的就是因数,不过当value是整数型时,base乘上因数后,要被cut掉小数点后的值。

9、

<one_of>
   Set of <eq> or <range> conditions
</one_of>

信号的值必须是满足下面条件(conditions)里的任何一数值。

 

 

消息(message)的定义如下:

<canmsg id="Name or ID of the CAN message" node="Name of the node" bus="Name of the bus" channel="CAN channel" dlc="Number of data bytes" dir="Send direction: Rx, Tx or TXrequest" rtr="Remote frame identification: rtr or nortr" type ="Standard or extended CAN identifier: std or ext" msgflags="Additional information: nerr or high voltage">
   Data byte values or signal values
</canmsg>

当然也可以详细定义不在dbc中的消息。如果有多条总线,那么必须描述清楚是那条总线的名称或总线的通道号。而且也要描述信号的长度(DLC)、如果没有dbc的连接,就不能将数据信号分配给这样的消息。

数据字节或数据信号由一系列<byte>描述,也有可能是<signal>元素。混合的使用是不被允许的。

<byte pos="Byte position from 0">Value</byte>
<signal name="Signal name">Value</signal>

下面举了两个例子:

<canmsg id="Status" dlc="3" channel="1">
   <byte pos="0">1</byte>
   <byte pos="1">0xE8</byte>
   <byte pos="2">255</byte>
</canmsg>
<canmsg id="4" dlc="3" bus="CAN1">
  <byte pos="0">1</byte>
  <byte pos="1">0xE8</byte>
  <byte pos="2">255</byte>
</canmsg>

 

posted on 2019-10-23 20:37  龙贝勒  阅读(535)  评论(0编辑  收藏  举报