目录
CanTpGetFirstSequenceNumber & CanTpSetFirstSequenceNumber
代码示例
CanTpIsUseFlowControlSTmin & CanTpIsUseFlowControlSTmin & CanTpUseFlowControlSTmin
CanTpIsUseFlowControlFrames & CanTpUseFlowControlFrames
代码示例
CanTpSetFlowControlDelay
代码示例
CanTpGetFirstSequenceNumber & CanTpSetFirstSequenceNumber
连续帧第一帧的序列号
功能:
CanTpGetFirstSequenceNumber:获取发送器将在其发送的第一个连续帧中使用的序列号。
CanTpSetFirstSequenceNumber:设置发送器将在其发送的第一个连续帧中使用的序列号。
说明:标准规定发送端发送的第一个连续帧必须将其序列号设置为1。可以更改该值,但如果接收端没有相应设置,这将导致分段数据传输失败!
获取或设置发送器将在其发送的第一个连续帧中使用的序列号。 默认值为 1(第一帧为帧 0),但在某些配置中,计数会在此处以 0 值重新开始。
firstSequenceNumber:设置连续帧首帧的序列号。
代码示例
将发送且预期的第一个连续帧的序列号设置为 0。
CanTpSetFirstSequenceNumber( handle, 0);
CanTpIsUseFlowControlSTmin & CanTpIsUseFlowControlSTmin & CanTpUseFlowControlSTmin
发件人使用的分隔时间
功能:
CanTpIsUseFlowControlSTmin:检查连接是否使用流量控制帧中收到的分离时间值。
CanTpIsUseFlowControlSTmin:设置连接保持的最短分离时间。
CanTpUseFlowControlSTmin:配置连接是否使用流量控制帧中接收到的分离时间值。
说明:这些函数确定连接在传输数据时将使用的分离时间值。 连接将保持至少 minSTmin 的分离时间,即如果接收器允许更小的分离时间,连接仍将使用 minSTmin。 另一方面,如果接收方请求更长的分离时间,连接将使用接收到的值。
后两个函数确定连接是否使用流量控制帧中接收到的分离时间值。
0:不评估接收到的流量控制帧,而是使用通过 CanTpSetSTmin 设置的固定 STmin 值。
1:评估第一个接收到的流量控制帧并将其 STmin 值用于整个数据传输。
2:(默认)。 评估每个收到的流量控制帧并调整所使用的 STmin 值。
CanTpIsUseFlowControlFrames & CanTpUseFlowControlFrames
功能:
CanTpIsUseFlowControlFrames:配置连接对流量控制帧的使用。
CanTpUseFlowControlFrames:检查连接是否使用流量控制帧。
说明:如果停用流量控制帧的使用,所有的通信活动都将受到这个影响,如果没有其他需要的位置发送流控制帧,则DUT后续的连续帧将不会再被发送。
flag:默认为激活状态。
1:激活流控制帧状态
0:停用流控制帧状态
代码示例
如果连接的目标地址为 0xF0 或更大,请勿使用流量控制帧与该 ECU(甚至一组 ECU,因为这些目标地址通常指示功能诊断)进行通信。
long ecuaddr;
ecuaddr = CanTpGetTargetAddress( handle)
if( 0xF0 <= ecuaddr )
{
CanTpUseFlowControlFrames( handle, 0);
}
else
{
CanTpUseFlowControlFrames( handle, 1);
}
CanTpSetFlowControlDelay
功能:设置连接延迟发送流量控制帧的毫秒数。
说明:根据该标准,接收器在接收第一帧或连续帧和发送其流量控制帧之间没有必须保持的最小延迟。 然而,在某些情况下,CANoe 发送流量控制帧的速度太快,例如 简单的 ECU 无法及时接收数据,因此数据传输失败。为了这个问题,我们可以在 CANoe 中设置 TP 连接在发送其流量控制帧之前保持的延迟。
设置连接延迟发送流量控制帧的毫秒数,以确保接收器能够接收 CAN 消息。
delay_ms:在接收到首帧报文后,延时delay_ms毫秒后发送流控制帧
代码示例
Tester在接收到首帧报文后延迟 15 毫秒发送流量控制帧。
CanTpSetFlowControlDelay( handle, 15);