有没有办法用原始socketcan检查一个空的传输缓冲区?
编辑:或者有没有办法让socketcan阻塞,直到当前帧被发送,这将起到同样的作用......
(动机:我正在编写一个 mcu flash 工具。引导加载程序规范要求在发送一定数量的数据后等待一段时间,以便它写入闪存。根据总线负载发送数据可能更快或更慢。)
SocketCAN 套接字仅在帧被放入套接字缓冲区之前阻塞(尽管有关一些微妙的复杂情况,请参见https://rtime.felk.cvut.cz/can/socketcan-qdisc-final.pdf中的第 3.4 节)。
如果您想发现帧是否发送成功,请启用套接字选项并等待,直到您收到已设置标志CAN_RAW_RECV_OWN_MSGS
的已发送帧。MSG_CONFIRM
有关更多详细信息,请参阅此答案。