修改can总线上传延时算法

This commit is contained in:
ranchuan
2024-01-23 18:13:09 +08:00
parent c3c172717d
commit caa4e61b89
9 changed files with 52 additions and 16 deletions

View File

@@ -312,21 +312,14 @@ static int protu_send_ontime(protu_def *p,send_pkt_def *s)
// 每ms传输的字节数为253/23=11,
// 考虑can总线自动重传保留1/3的余量
int wnd_tick=((arr_length(s->t)+4)/5+2);
int delay=tick%(wnd_tick*(p->num));
int delay=wnd_tick*(p->num);
int gap=p->rank*wnd_tick;
int ret=0;
if(delay<=gap){
delay=gap-delay;
}else{
delay=gap+(wnd_tick*(p->num))-delay;
}
if(p->silent!=0){
// 广播命令在指定时间窗口发送
//later_execute(protu_send_later,s,delay);
g_send_pkt.wnd_tick=wnd_tick;
g_send_pkt.gap=gap;
while(p->timer->read(p->timer)<(tick+delay));
// protu_send_later(s);
while((p->timer->read(p->timer)%delay)!=gap);
g_send_pkt.send_tick_ms=p->timer->read(p->timer);
ret= protu_send(s->p,s->t,wnd_tick-1);
g_send_pkt.send_end_tick_ms=p->timer->read(p->timer);