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>