【问题标题】:linux c socketcan wait for transmit buffer emptylinux c socket可以等待传输缓冲区为空
【发布时间】:2020-01-23 18:02:43
【问题描述】:

有没有办法用原始 socketcan 检查一个空的传输缓冲区?

编辑:或者有没有办法让socketcan阻塞,直到当前帧被发送,这将起到同样的作用......

(动机:我正在写一个单片机闪存工具。引导加载程序规范要求在发送一定数量的数据后等待一段时间,以便它写入闪存。根据总线加载发送的数据可能更快或更慢。)

【问题讨论】:

    标签: c linux can-bus socketcan


    【解决方案1】:

    SocketCAN 套接字仅在帧被放入套接字缓冲区之前阻塞(尽管请参阅https://rtime.felk.cvut.cz/can/socketcan-qdisc-final.pdf 中的第 3.4 节了解一些微妙的复杂情况)。

    如果您想发现帧是否发送成功,请启用CAN_RAW_RECV_OWN_MSGS 套接字选项并等待直到您收到设置了MSG_CONFIRM 标志的已发送帧。详情请见this answer

    【讨论】:

    猜你喜欢
    • 2012-09-10
    • 2017-03-18
    • 2015-03-27
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多