Vector - CAPL - 等待并获取LIN数据
Posted 车载网络测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vector - CAPL - 等待并获取LIN数据相关的知识,希望对你有一定的参考价值。
***摸鱼聊天、答疑解惑首选之地 --- 车载网络哪些事儿***
LIN测试中,我们会遇到等待各种类型的LIN数据出现,并且对该数据进行处理;这种类型的测试无论是在CAN、LIN还是以太网,都会有类似响应的测试,今天的内容就是介绍等待特定类型的数据并且获取该类型数据,也是我自己做个笔记方便使用的时候查询。
目录
TestWaitForLinETFSingleResponse
TestGetWaitLinETFSingleResponseData
TestWaitForLinLongDominantSignal
TestGetWaitLinLongDominantSignalData
1、获取校验和错误及错误LIN数
TestWaitForLinCSError
功能:在指定的时间内等待校验和错误。
说明:在调用函数之前,如果是是多条总线,需要提前设置需要检测的总线。
aTimeout:检查检验和超时时间
aFrameId:LIN报文ID
返回值:
-2:由于违反约束而恢复
-1:一般错误,例如功能不可用
0:超时后前未检测到错误
1:检查到LIN报文错误
TestGetWaitLinCSErrorData
功能:检索校验和错误的数据。
说明:
检索由上一条等待指令触发的校验和错误的数据。
第二个函数只能用于“已加入的事件”。“joind event”的编号(返回值为“testJoin…”)在这里被用作索引。
apEvent:带有校验和错误数据的数据结构;获取到的LIN报文数据
index:“joind event”的编号对应于“testJoin…”的返回值。
返回值:
0:成功访问数据
-1:数据访问失败–最后一次等待功能不是由校验和错误触发的
代码示例
以下代码为检测获取到LIN CS错误后,获取该帧LIN报文数据
testcase tcTFS_linCSError ()
linCSError linCSErrorData;
if (testWaitForLinCSError(5000) == 1)
if (testGetWaitLinCSErrorData(linCSErrorData) == 0)
testStep("Evaluation", "LIN CS Error event occurred for FrameId=0x%X", linCSErrorData.ID);
2、获取LIN响应及数据
TestWaitForLinETFSingleResponse
功能:将LIN事件触发的帧单一响应类型的事件添加到已加入的事件集。
说明:
这是一个非阻塞函数。
在调用函数之前,请考虑始终在多总线环境中设置适当的总线上下文。
aETFFrameId:LIN事件触发的待等待帧的帧标识符。
aAssocFrameId:与等待的事件触发帧相关联的LIN无条件帧的帧标识符。
返回值:
-3:加入事件失败
-1:一般错误,例如,功能不可用
>0:已加入事件的编号
TestGetWaitLinETFSingleResponseData
功能:返回LIN时间触发单一响应类型事件的数据。
说明:
如果具有指定关联帧的单个响应的LIN事件触发帧是触发等待指令的最后一个事件,则可以使用此功能调用事件内容。
当触发事件是已联接事件的等待指令的一部分时,索引参数必须对应于“testJoin…”函数的返回值。
apEvent:带有校验和错误数据的数据结构;获取到的LIN报文数据
index:“joind event”的编号对应于“testJoin…”的返回值。
返回值:
0:成功访问数据
-1:无法执行数据访问,最后一个事件不是等待的事件
代码示例
testcase tcTFS_linETFSingleResponse ()
linMessage 0 linETFSingleResponseData;
if (testWaitForLinETFSingleResponse(0x3A, 0x36, 5000) == 1)
if (testGetWaitLinETFSingleResponseData(linETFSingleResponseData) == 0)
testStep("Evaluation", "LIN Event-triggered frame with a single response occurred for FrameId=0x%X", linETFSingleResponseData.ID);
3、获取LIN Long Dominant信号出现及数据
TestWaitForLinLongDominantSignal
功能:等待LIN长主导信号的出现。
说明:
如果帧没有出现在aTimeout时间到期之前,则结束等待返回值为0。
在调用函数之前,请考虑始终在多总线环境中设置适当的总线上下文。
aTimeout:应等待的最长时间[ms],(0:一直等待直到等到事件出现)
返回值:
-2:由于违反约束而恢复
-1:一般错误,例如,功能不可用
0:超时未接收到LIN报文
1:预期等待的LIN报文出现
TestGetWaitLinLongDominantSignalData
功能:如果LIN LongDominantSignal是触发等待指令的最后一个事件,则可以使用此函数调用帧内容。
说明:第二个函数只能用于已加入的事件。加入事件的编号(testJoin…的返回值)在这里被用作索引。
apEvent:带有校验和错误数据的数据结构;获取到的LIN报文数据
index:“joind event”的编号对应于“testJoin…”的返回值。
返回值:
0:成功访问数据
-1:无法执行数据访问,最后一个事件不是等待中的事件。
代码示例
testcase tcTFS_linLongDominantSignal ()
linLongDominantSignal linLongDominantSignal;
if (testWaitForLinLongDominantSignal (5000) == 1)
if (testGetWaitLinLongDominantSignalData(linLongDominantSignal) == 0)
testStep("Evaluation", "LIN LongDominantSignal event occurred. Signal length is %d ns", linLongDominantSignalData.length_ns);
4、获取LIN Spike时间发生及获取数据
TestWaitForLinSpike
功能:等待LIN Spike事件的发生。
说明:
如果事件没有在aTimeout时间到期之前发生,返回值为0。
在调用函数之前,请考虑始终在多总线环境中设置适当的总线上下文。
aTimeout:最长等待事件
返回值:
-2:由于违反约束而恢复
-1:一般错误,例如,功能不可用
0:超时事件未发生
1:在aTimeout时间内事件发生
TestGetWaitLinSpikeData
功能:如果LINspike是触发等待指令的最后一个事件,则可以使用tis功能调用帧内容。
说明:
如果LIN Spike是触发等待指令的最后一个事件,则可以使用第一个函数调用帧内容。
第二个函数只能用于已加入的事件。加入事件的编号(testJoin…的返回值)在这里被用作索引。
apEvent:带有校验和错误数据的数据结构;获取到的LIN报文数据
index:“joind event”的编号对应于“testJoin…”的返回值。
返回值:
0:数据访问成功
-1:无法执行数据访问,最后一个事件不是等待的事件
代码示例
testcase tcTFS_linSpikeEvent ()
linSpikeEvent linSpikeEventData;
if (testWaitForLinSpike (5000) == 1)
if (testGetWaitLinSpikeData(linSpikeEventData) == 0)
testStep("Evaluation", "LIN Spike event occurred. Signal length is %d ns", linSpikeEventData.length_ns);
以上是关于Vector - CAPL - 等待并获取LIN数据的主要内容,如果未能解决你的问题,请参考以下文章