linux c socketcan等待传输缓冲区清空。

问题描述 投票:0回答:1

有没有办法用原始socketcan检查发送缓冲区是否为空?

EDIT: 或者有没有办法让socketcan阻塞,直到当前帧发送完毕,这将达到同样的目的......

(动机:我在写一个mcu的程序。我正在写一个mcu flash工具在can上。Bootloader规范要求在发送一定量的数据后有一个等待时间,以便它向闪存进行写入。根据总线负载的不同,数据的发送可能会更快或更慢)。)

c linux can-bus socketcan
1个回答
0
投票

SocketCAN套接字只有在帧被放入套接字缓冲区之前才会被阻塞(尽管参见3.4节中的 https:/rtime.felk.cvut.czcansocketcan-qdisc-final.pdf。 以了解一些微妙的复杂情况)。)

如果你想发现一个帧是否被成功发送,请启用 CAN_RAW_RECV_OWN_MSGS 套接字选项,等到收到发送的帧时,用 MSG_CONFIRM 标志集。见 本回答 更多细节。

© www.soinside.com 2019 - 2024. All rights reserved.